Awesome MCP FastAPI 使用说明
项目简介
Awesome MCP FastAPI 是一个基于 Python FastAPI 框架实现的 Model Context Protocol (MCP) 服务器。它旨在简化和增强标准 MCP 服务器的功能,特别是工具 (Tools) 的注册、管理和文档生成。借助 FastAPI 的成熟生态系统,该项目提供了一个高性能、易于使用且生产就绪的 MCP 服务器解决方案。
主要功能点
- 增强的工具注册系统: 通过简单的装饰器 '@auto_tool' 即可将 FastAPI 接口快速注册为 MCP 工具,简化工具开发流程。
- 自动文档生成: 利用 FastAPI 自动生成符合 OpenAPI 规范的 API 文档,同时也生成 MCP 工具描述文档,方便 LLM 客户端理解和调用工具。
- 强大的类型提示和模式定义: 基于 Pydantic 的数据模型和类型提示,提供更丰富的输入输出模式定义,提升工具的可用性和开发体验。
- 易于扩展和集成: 基于 FastAPI 构建,可以轻松集成各种中间件(如认证、监控等),并支持 CORS 跨域请求,方便与 Web 应用集成。
- Docker 支持: 提供 Dockerfile,方便用户容器化部署 MCP 服务器。
安装步骤
-
克隆仓库
git clone https://github.com/MR-GREEN1337/awesome-mcp-fastapi.git cd awesome-mcp-fastapi -
创建并激活虚拟环境
python -m venv .venv source .venv/bin/activate # Linux/macOS .venv\Scripts\activate # Windows -
安装依赖
pip install -e .
服务器配置
对于 MCP 客户端,需要配置连接到 Awesome MCP FastAPI 服务器的命令和参数。以下是一个 JSON 格式的配置示例,您可以根据实际情况进行调整:
{ "serverName": "AwesomeMCPFastAPI", "command": "uvicorn", "args": [ "src.main:app", "--reload" ], "description": "Awesome MCP FastAPI server instance", "transport": "http", "baseUrl": "http://localhost:8000" }
参数注释:
- 'serverName': MCP 服务器的名称,您可以自定义。
- 'command': 启动服务器的命令,这里使用 'uvicorn' (FastAPI 推荐的 ASGI 服务器)。
- 'args': 传递给 'uvicorn' 命令的参数:
- '"src.main:app"': 指定 FastAPI 应用入口点,'src/main.py' 文件中的 'app' 实例。
- '"--reload"': 开启自动重载模式,方便开发调试,修改代码后服务器自动重启。生产环境请移除此参数。
- 'description': 服务器的描述信息,可选。
- 'transport': 传输协议,这里假设 MCP 客户端通过 HTTP 与服务器交互。
- 'baseUrl': 服务器的基础 URL,默认为 'http://localhost:8000',请根据实际部署地址修改。
注意: 实际的 MCP 客户端可能需要根据其具体实现来配置连接方式。上述配置假设客户端通过 HTTP API 与服务器交互,并通过扫描 '/tools/all' 或 '/tools/scan' 接口发现工具。
基本使用方法
-
启动服务器
在项目根目录下运行以下命令启动服务器:
uvicorn src.main:app --reload服务器将默认运行在 'http://localhost:8000'。
-
查看 API 文档
启动服务器后,访问 'http://localhost:8000/docs' 可以查看自动生成的 OpenAPI 文档,其中包含了所有注册的工具 (以 API 接口的形式展示)。
-
创建和注册工具
- 修改 'src/main.py' 文件,使用 '@auto_tool' 装饰器将 FastAPI 接口标记为 MCP 工具。
- 按照示例代码,定义工具的名称 ('name')、描述 ('description') 和标签 ('tags')。
- 工具的输入输出模式将根据 FastAPI 接口的参数和返回值类型自动推断。
例如,'src/utils/tools.py' 文件中提供了 'ImageGenerationInput' 和 'ImageGenerationOutput' 的示例,展示了如何使用 Pydantic 模型定义工具的输入输出结构。
-
LLM 客户端使用工具
MCP 客户端需要能够发现和调用服务器提供的工具。 Awesome MCP FastAPI 通过 '/tools/all' 接口提供所有已注册工具的描述信息(包括名称、描述、输入输出模式等)。LLM 客户端可以通过解析这些信息,动态地调用服务器提供的工具来增强自身的功能。
重要提示: 此仓库主要展示了 MCP 服务器工具注册和管理的功能,并没有完整实现 MCP 协议的所有细节,例如标准的 JSON-RPC 通信、会话管理、能力声明等。 实际应用中可能需要根据 MCP 协议的完整定义进行扩展和完善。
信息
分类
网页与API