项目简介

本项目提供了一个基于FastAPI和FastMCP库构建的框架,用于快速开发符合模型上下文协议(MCP)的应用后端。它旨在帮助开发者便捷地将现有FastAPI应用的能力暴露给LLM客户端,或者在此基础上构建全新的MCP服务,提供结构化的工具、资源和Prompt访问能力。

主要功能点

  • FastAPI无缝集成: 利用FastMCP的能力,可以将现有的FastAPI应用的API端点通过OpenAPI规范自动转化为MCP可用的工具和资源。
  • 模块自动发现与注册: 服务器启动时,会自动扫描特定目录(如 'tools/'、'resources/'、'prompts/'),动态导入其中的Python模块,并注册所有使用'@mcp.tool()'、'@mcp.resource()'、'@mcp.prompt()'装饰器定义的函数或对象。这意味着您只需将新功能代码放入对应目录即可自动生效。
  • 丰富的Context支持: 提供'Context'对象,允许您的工具和资源与LLM客户端进行交互,例如发送日志、报告进度、读取客户端允许访问的资源,甚至请求LLM进行文本采样(即让LLM完成一段文本)。
  • 图像数据支持: 内置'Image'数据类型支持,方便处理和传输图像数据。
  • 清晰的模块化结构: 代码组织清晰,工具、资源和Prompt分别存放在对应的文件夹中,易于管理和扩展。

安装步骤

  1. 将本仓库中的 'model_context_protocol' 目录复制到您FastAPI应用项目的根目录下(通常是存放您主应用文件 'main.py' 的同级目录)。
  2. 确保您的FastAPI应用实例可以在 'app.api.main:app' 路径下被导入。如果您的应用结构不同,请相应修改 'model_context_protocol/server.py' 中的导入语句。
  3. 确保您的开发环境安装了Python 3.9 或更高版本。
  4. 使用pip安装必要的依赖库:
    pip install fastapi fastmcp "pillow>=9.0.0" # pillow 用于支持图像示例
  5. 确保您的FastAPI应用本身所需的其他依赖也已安装。

服务器配置

MCP客户端需要知道如何启动或连接到MCP服务器。对于这个基于Python脚本实现的服务器,一个典型的MCP客户端启动配置信息(例如在客户端的配置文件中)可能如下所示:

{
  "server_name": "Fast Supabase MCP Server",
  "command": ["python", "model_context_protocol/server.py"],
  "args": [],
  "transport": "stdio"
}

参数说明:

  • 'server_name': 服务器的友好名称,用于在客户端标识该服务器。
  • 'command': 这是一个数组,包含用于启动服务器进程的命令及其命令行参数。这里指定使用 'python' 命令运行 'model_context_protocol/server.py' 脚本。
  • 'args': 一个额外的参数列表,在启动命令之后传递给脚本(本项目示例中通常为空)。
  • 'transport': 客户端与服务器进行通信使用的传输协议,常见的有 'stdio' (标准输入输出)、'sse' (Server-Sent Events) 或 'websocket'。具体的传输方式取决于服务器的实现和启动配置。

基本使用方法

  1. 运行服务器: 在您的项目根目录下打开终端,执行命令 'python model_context_protocol/server.py'。服务器将启动并监听连接。
  2. 客户端连接: 使用兼容MCP协议的LLM客户端(例如,支持FastMCP的客户端),配置如上所示的服务器启动信息。客户端将尝试连接到您运行的服务器进程。
  3. 交互: 连接成功后,LLM客户端将能够发现服务器暴露的工具、资源和Prompt。LLM可以向服务器发送JSON-RPC请求,调用特定的工具(如示例中的 'add' 工具),读取资源(如 'config://app-version'),或获取Prompt内容。服务器将处理请求并返回JSON-RPC响应或发送通知(如进度更新、日志)。

信息

分类

AI与计算