API客户端生成工具

AppDog是一个Python包,能够从OpenAPI规范自动生成类型化的Python客户端和MCP服务器,简化API集成工作。

  • by rodolphebarbanneau
  • Python
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 rodolphebarbanneau/appdog

使用说明

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服务器生成的全面支持:

  1. 生成MCP服务器文件:

    appdog mcp install -n "My API Server"
    
  2. 与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许可证获得许可-请参阅 许可证 文件以获取详细信息。