使用说明
AppDog
根据任何OpenAPI规范轻松编写和生成异步API客户端和MCP服务器。
Claude Desktop尚未处理资源模板(即带参数的资源)。
对于 windows用户,MCP Install命令需要手动编辑生成的Claude配置。看 这个问题 了解更多详情。
概述
AppDog是一个Python包,通过以下方式简化了基于OpenAPI的API的使用:
- 根据OpenAPI规范自动生成全类型Python客户端
- 为API集成创建现成的MCP(模型上下文协议)服务器
- 在具有版本锁定的单个项目中管理多个API客户端
- 提供一个简单的CLI,用于添加、删除、管理API客户端和安装MCP服务器
安装
uv add appdog
快速开始
初始化项目
# Create a new project in the current directory
appdog init
# Or specify a project directory
appdog init --project /path/to/project
添加API客户端
# Add a new API client from an OpenAPI spec URL or file
appdog add petstore --uri https://petstore3.swagger.io/api/v3/openapi.json
列出并显示可用的API
# List all API clients in the project
appdog list
# Show details for a specific API client
appdog show petstore
升级API客户端
# Sync API clients with the project registry
appdog sync --upgrade
# Lock API clients
appdog lock --upgrade
生成MCP服务器
# Generate and install an MCP server with all registered APIs
appdog mcp install -n "My API Server"
# Or run the server directly
appdog mcp run -n "My API Server"
# Or run in development mode with inspector
appdog mcp dev -n "My API Server"
项目结构
初始化项目并添加API后,您的项目将具有:
project/
├── apps.yaml # Installed API appdog settings (auto-generated)
├── apps.lock # Lock file with app specs and hashes (auto-generated)
└── ... # Project files
使用生成的客户端
添加API客户端后,您可以导入并在代码中使用它:
# Import generated client
import appdog.petstore
# Use the client
async def main() -> None:
async with appdog.petstore.client as client:
pets = await client.get_pet_find_by_status(status='available')
print(pets)
并构建自己的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:
pets = await client.get_pet_find_by_status(status='available')
return pets
环境变量
API凭据可以使用环境变量进行配置:
APPDOG_<CLIENT_NAME>_TOKEN=your_token
APPDOG_<CLIENT_NAME>_API_KEY=your_api_key
MCP集成
该软件包包括对MCP服务器生成的全面支持:
-
生成MCP服务器文件:
appdog mcp install -n "My API Server" -
与FastMCP或其他MCP客户端一起使用:
from appdog import Project from mcp.server import FastMCP mcp = FastMCP() project = Project.load(project_dir=PROJECT_DIR) project.mount(mcp)
CLI使用情况
全局选项
--verbose,-v:启用详细输出--debug,-d:启用所有调试日志,包括依赖关系--project,-p:指定项目目录(默认为当前目录)
命令
显示CLI版本
appdog version
初始化项目
appdog init [--force] [--project PATH]
--force:强制初始化,即使配置已存在
添加API客户端
appdog add NAME --uri URI [--base-url URL] [OPTIONS]
NAME:应用程序名称--uri:OpenAPI规范URL或文件路径--base-url:API调用的基本URL--include-methods:方法包括--exclude-methods:排除方法--include-tags:要包含的标签--exclude-tags:要排除的标签--force:如果应用程序已存在并具有不同的URI,则覆盖它--frozen:跳过在项目锁文件中添加应用程序规范--upgrade:强制升级应用程序规范--sync:将应用程序规范与项目注册表同步
删除API客户端
appdog remove NAME [OPTIONS]
NAME:应用程序名称--frozen:跳过从项目锁文件中删除应用程序规范--sync:将应用程序删除与项目注册表同步
列出API客户端
appdog list [--project PATH]
显示API客户端详细信息
appdog show NAME [--project PATH]
NAME:应用程序名称
锁定API规范
appdog lock [OPTIONS]
--force:如果应用程序存在不同的URI,请覆盖它--upgrade:用不同的URI覆盖应用程序规范
同步API客户端
appdog sync [OPTIONS]
--force:如果应用程序存在不同的URI,请覆盖它--frozen:跳过更新项目锁文件中的应用程序规范--upgrade:强制升级应用程序规范
生成MCP服务器
appdog mcp [COMMAND] [OPTIONS]
命令:
install:在MCP客户端中安装应用程序run:在生产模式下运行MCP应用程序dev:使用检查器在开发模式下运行MCP应用程序
每个命令都支持特定的选项:
通用选项(所有命令)
--name,-n:MCP服务器的名称(默认:“AppDog MCP服务器”)--force:覆盖服务器文件(如果存在)--project,-p:项目目录(默认为当前目录)--output,-o:MCP服务器文件的输出路径
安装命令
appdog mcp install [OPTIONS]
--env-var,-v:KEY=VALUE格式的环境变量--env-file,-f:具有KEY=VALUE对的环境文件--with:要在开发模式下安装的其他软件包--with-editable,-e:以可编辑模式安装的本地软件包
运行命令
appdog mcp run [OPTIONS]
--transport,-t:用于MCP运行的传输(stdio或sse)
开发命令
appdog mcp dev [OPTIONS]
--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
# Custom API key
client = PetstoreClient(api_key="YOUR_API_KEY")
# Custom headers
client = PetstoreClient(
headers={"Authorization": "Bearer YOUR_TOKEN"}
)
贡献
看 贡献.md 有关为该项目做出贡献的信息。
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
