使用说明

项目简介

AppDog 是一个 Python 工具,旨在简化基于 OpenAPI 规范的 API 集成,尤其针对需要与大型语言模型 (LLM) 交互的应用。它能够自动生成类型完备的 Python API 客户端和即用型 MCP (模型上下文协议) 服务器,从而帮助开发者快速构建上下文感知的 LLM 应用。

主要功能点

  • API 客户端自动生成: 根据 OpenAPI 规范自动生成全类型注解的 Python 客户端代码,方便开发者在 Python 代码中调用 API。
  • MCP 服务器生成: 为集成的 API 创建即用型的 MCP 服务器,使得可以将后端 API 以标准化的资源和工具形式暴露给 LLM 客户端。
  • API 管理: 在一个项目中管理多个 API 客户端,并支持版本锁定,方便维护和升级。
  • CLI 工具: 提供简洁的命令行界面,用于添加、移除、管理 API 客户端,以及生成和运行 MCP 服务器。

安装步骤

推荐使用 'uv' 包管理器进行安装,以获得更快的速度和依赖管理:

uv add appdog

或者,您也可以使用 'pip' 进行安装:

pip install appdog

服务器配置

MCP 服务器是为 MCP 客户端设计的后端服务。要让 MCP 客户端连接到 AppDog 生成的 MCP 服务器,您需要在 MCP 客户端的配置中指定服务器的启动命令和参数。以下是一个典型的 JSON 格式配置示例,您需要根据实际情况进行调整:

{
  "serverName": "My API Server",
  "command": "appdog mcp run",
  "args": ["-n", "My API Server"]
}

参数注释:

  • 'serverName': [必填] MCP 服务器的名称,可以自定义,用于在客户端标识不同的服务器连接。例如 '"My API Server"'。
  • 'command': [必填] 启动 MCP 服务器的命令。对于 AppDog 生成的服务器,通常设置为 '"appdog mcp run"'。
  • 'args': [必填] 传递给启动命令的参数列表。
    • '"-n", "My API Server"': 指定 MCP 服务器的实例名称,与 'serverName' 保持一致,例如 '["-n", "My API Server"]'。

基本使用方法

  1. 初始化项目: 在您希望创建项目的目录下运行 'appdog init' 命令,初始化一个新的 AppDog 项目。

    appdog init
  2. 添加 API 客户端: 使用 'appdog add' 命令,通过 OpenAPI 规范的 URI 或本地文件路径添加您需要集成的 API。例如,添加 Petstore API:

    appdog add petstore --uri https://petstore3.swagger.io/api/v3/openapi.json
  3. 生成并运行 MCP 服务器: 使用 'appdog mcp run' 命令生成并启动 MCP 服务器,将所有已注册的 API 暴露为资源和工具。您需要指定服务器的名称:

    appdog mcp run -n "My API Server"

    您还可以使用 'appdog mcp install' 命令生成 MCP 服务器文件,然后根据需要部署和运行。

    appdog mcp install -n "My API Server" -o my_mcp_server.py
    python my_mcp_server.py

    在开发模式下,可以使用 'appdog mcp dev' 命令,它会启用 Inspector,方便调试:

    appdog mcp dev -n "My API Server"
  4. 在代码中使用生成的客户端: 在您的 Python 代码中,可以导入生成的 API 客户端模块,并使用它来调用 API 接口。例如:

    import appdog.petstore
    
    async def main():
        async with appdog.petstore.client as client:
            pets = await client.get_pet_find_by_status(status='available')
            print(pets)

    您还可以组合生成的客户端和 'FastMCP' 来创建自定义的 MCP 服务器,例如将 API 接口封装为工具:

    import appdog.petstore
    from mcp.server import FastMCP
    
    mcp = FastMCP()
    
    @mcp.tool()
    async def hello_petstore():
        async with appdog.petstore.client as client:
            pets = await client.get_pet_find_by_status(status='available')
            return pets

信息

分类

开发者工具