从任何OpenAPI规范轻松组合和生成异步API客户端和MCP服务器。
<br> <p align="center"> <img src="https://raw.githubusercontent.com/rodolphebarbanneau/appdog/refs/heads/main/docs/appdog.gif" alt="AppDog demo"> </p>Claude桌面版目前还不支持资源模板(即带有参数的资源)。
对于Windows用户,MCP安装命令需要手动编辑生成的Claude配置。详情见此问题。
AppDog是一个Python包,通过以下方式简化基于OpenAPI的API操作:
uv add appdog
# 在当前目录创建新项目
appdog init
# 或指定项目目录
appdog init --project /path/to/project
# 从OpenAPI规范URL或文件添加新的API客户端
appdog add petstore --uri https://petstore3.swagger.io/api/v3/openapi.json
# 列出项目中的所有API客户端
appdog list
# 显示特定API客户端的详细信息
appdog show petstore
# 同步API客户端与项目注册表
appdog sync --upgrade
# 锁定API客户端
appdog lock --upgrade
# 生成并安装包含所有已注册API的MCP服务器
appdog mcp install -n "我的API服务器"
# 或直接运行服务器
appdog mcp run -n "我的API服务器"
# 或在开发模式下使用检查器运行
appdog mcp dev -n "我的API服务器"
初始化项目并添加API后,您的项目将具有以下结构:
项目/
├── apps.yaml # 已安装API的appdog设置(自动生成)
├── apps.lock # 包含应用规格和哈希值的锁文件(自动生成)
└── ... # 项目文件
添加API客户端后,您可以在代码中导入并使用它:
# 导入生成的客户端
import appdog.petstore
# 使用客户端
async def main() -> None:
async with appdog.petstore.client as client:
宠物 = await client.get_pet_find_by_status(status='available')
print(宠物)
并组合自己的MCP服务器:
import appdog.petstore
from mcp.server import FastMCP
mcp = FastMCP()
@mcp.tool()
async def hello_petstore() -> str:
async with appdog.petstore.client as client:
宠物 = await client.get_pet_find_by_status(status='available')
return 宠物
可以通过环境变量配置API凭证:
APPDOG_<客户端名称>_TOKEN=你的令牌
APPDOG_<客户端名称>_API_KEY=你的API密钥
该包包括对MCP服务器生成的全面支持:
生成MCP服务器文件:
appdog mcp install -n "我的API服务器"
与FastMCP或其他MCP客户端一起使用:
from appdog import Project
from mcp.server import FastMCP
mcp = FastMCP()
项目 = Project.load(project_dir=PROJECT_DIR)
项目.mount(mcp)
--verbose, -v: 启用详细输出--debug, -d: 启用所有调试日志,包括依赖项--project, -p: 指定项目目录(默认为当前目录)appdog version
appdog init [--force] [--project PATH]
--force: 即使配置已经存在也强制初始化appdog add 名称 --uri URI [--base-url URL] [选项]
名称: 应用程序名称--uri: OpenAPI规范的URL或文件路径--base-url: API调用的基础URL--include-methods: 要包含的方法--exclude-methods: 要排除的方法--include-tags: 要包含的标签--exclude-tags: 要排除的标签--force: 如果已存在不同URI的应用程序,则覆盖--frozen: 跳过在项目锁文件中添加应用程序规范--upgrade: 强制升级应用程序规范--sync: 将应用程序规范与项目注册表同步appdog remove 名称 [选项]
名称: 应用程序名称--frozen: 跳过从项目锁文件中移除应用程序规范--sync: 将应用程序移除与项目注册表同步appdog list [--project PATH]
appdog show 名称 [--project PATH]
名称: 应用程序名称appdog lock [选项]
--force: 如果已存在不同URI的应用程序,则覆盖--upgrade: 使用不同URI覆盖应用程序规范appdog sync [选项]
--force: 如果已存在不同URI的应用程序,则覆盖--frozen: 跳过在项目锁文件中更新应用程序规范--upgrade: 强制升级应用程序规范appdog mcp [命令] [选项]
命令:
install: 在MCP客户端中安装应用程序run: 在生产模式下运行MCP应用程序dev: 在开发模式下使用检查器运行MCP应用程序每个命令都支持特定选项:
--name, -n: MCP服务器名称(默认:"AppDog MCP服务器")--force: 如果已存在则覆盖服务器文件--project, -p: 项目目录(默认为当前目录)--output, -o: MCP服务器文件的输出路径appdog mcp install [选项]
--env-var, -v: KEY=VALUE格式的环境变量--env-file, -f: 包含KEY=VALUE对的环境文件--with: 开发模式下要安装的附加包--with-editable, -e: 开发模式下要以可编辑模式安装的本地包appdog mcp run [选项]
--transport, -t: MCP运行使用的传输方式(stdio或sse)appdog mcp dev [选项]
--with: 开发模式下要安装的附加包--with-editable, -e: 开发模式下要以可编辑模式安装的本地包创建自定义apps.yaml来配置您的API客户端:
petstore:
uri: https://petstore3.swagger.io/api/v3/openapi.json
base_url: https://petstore3.swagger.io/api/v3
include_tags:
- pet
- store
对于MCP使用,请参阅环境变量部分
创建具有自定义认证的客户端:
from appdog.petstore import PetstoreClient
# 自定义API密钥
客户端 = PetstoreClient(api_key="YOUR_API_KEY")
# 自定义头部
客户端 = PetstoreClient(
headers={"Authorization": "Bearer YOUR_TOKEN"}
)
有关如何为该项目做出贡献的信息,请参阅CONTRIBUTING.md。
本项目根据MIT许可证发布 - 详情请参阅LICENSE文件。