使用说明
项目简介
本项目是一个基于FastAPI框架实现的MCP(Model Context Protocol)服务器。它旨在为大型语言模型(LLM)应用提供一个标准化的后端服务,用于管理和提供上下文信息与外部功能。通过本服务器,LLM客户端可以方便地访问托管的资源、调用注册的工具,并利用Prompt模板进行定制化的交互。
主要功能点
- 资源管理: 通过FastAPI endpoints 暴露和管理各种数据资源,例如示例中的 'items' 服务,可以进行CRUD操作和搜索。
- 工具注册与执行: 允许将现有的API服务或功能封装成工具注册到MCP服务器,供LLM客户端按需调用。例如示例中的 '/test' endpoint 被作为一个简单的打招呼工具。
- SSE通信支持: 除了标准的HTTP请求,还支持基于Server-Sent Events (SSE) 的实时通信,适用于需要推送更新或事件通知的场景。
- FastAPI集成: 基于流行的FastAPI框架构建,易于扩展和集成到现有的Python生态系统中。
- 多服务挂载: 主MCP应用可以挂载多个子应用,每个子应用可以提供不同的资源或工具集,便于模块化和管理。
安装步骤
- 克隆仓库:
git clone https://github.com/wjcwjc77/mcp-server-platfrom cd mcp-server-platfrom - 安装依赖:
虽然仓库中没有明确的 'requirements.txt' 文件,但根据代码内容,你需要安装以下Python包。建议使用pip安装:
同时,可能需要安装 'fastapi-mcp' 库,如果 'separate_server.py' 中的 'from fastapi_mcp import FastApiMCP' 这行代码能正常运行,则说明你已经安装了 'fastapi-mcp' 或者它在当前项目路径中。如果报错,你需要查找 'fastapi-mcp' 的安装方式并进行安装。pip install fastapi uvicorn httpx sse-starlette
服务器配置
MCP客户端需要配置连接到MCP服务器的信息。以下是基于 'separate_server.py' 文件内容生成的服务器配置信息示例 (JSON 格式):
{ "serverName": "mcp-server-platform", "command": "python", "args": ["separate_server.py"], "host": "localhost", "port": 8000, "protocol": "http" }
参数注释:
- 'serverName': MCP服务器的名称,可以自定义。
- 'command': 启动MCP服务器的命令,这里使用 'python' 解释器。
- 'args': 启动命令的参数,这里指定运行 'separate_server.py' 文件。
- 'host': MCP服务器绑定的主机地址,默认为 'localhost',表示本地访问。
- 'port': MCP服务器监听的端口,'separate_server.py' 中主MCP应用默认端口配置为 '8000'。
- 'protocol': 使用的通信协议,这里默认为 'http'。 如果需要使用SSE,则需要配置 'server_sse.py' 对应的端口和协议,并可能需要在客户端配置SSE支持。
如果要使用 SSE Server,则MCP客户端配置可能需要指向 'server_sse.py' 启动的服务,例如:
{ "serverName": "mcp-sse-server", "command": "python", "args": ["server_sse.py"], "host": "localhost", "port": 8080, "protocol": "sse", "sseEndpoint": "/sse" }
参数注释 (SSE Server):
- 大部分参数与HTTP配置相同。
- 'protocol': 设置为 'sse' 表示使用 SSE 协议。
- 'sseEndpoint': SSE 连接的端点路径,'server_sse.py' 中配置为 '/sse'。
注意: 实际使用时,请根据你运行的服务器文件 ( 'separate_server.py' 或 'server_sse.py' ) 以及对应的端口配置客户端连接信息。
基本使用方法
-
启动MCP服务器:
- 运行主MCP应用 (HTTP): 在仓库根目录下,打开终端,执行命令:
这将启动主MCP服务器以及示例中的 'items' 服务和 'test_app' 服务,默认监听端口分别为 8000, 8001, 8002, 8003。python separate_server.py - 运行 SSE MCP 服务器: 在仓库根目录下,打开终端,执行命令:
这将启动基于 SSE 的 MCP 服务器,默认监听端口为 8080。python server_sse.py
- 运行主MCP应用 (HTTP): 在仓库根目录下,打开终端,执行命令:
-
配置MCP客户端: 根据你启动的服务器类型 (HTTP 或 SSE) 和端口,配置你的MCP客户端,将上述提供的 JSON 配置信息填入客户端的服务器配置中。
-
使用MCP客户端与服务器交互: 使用MCP客户端发送符合MCP协议的请求,例如:
- 请求获取资源 (例如 'items' 服务提供的商品列表)。
- 请求调用工具 (例如 'test_app' 提供的打招呼工具)。
- 根据服务器提供的能力和接口文档,进行更复杂的操作。
示例资源访问 (假设使用HTTP客户端,访问 'items' 服务):
客户端可以向 MCP 服务器 (运行 'separate_server.py' 的端口 8000) 发送请求,例如访问挂载在 '/mcp1' 下的 'items' 服务提供的 '/items/' 接口,获取商品列表。 具体的请求格式和参数需要参考 'fastapi-mcp' 库的文档以及 MCP 协议的具体规范。
示例工具调用 (假设使用HTTP客户端,调用 'test_app' 服务):
客户端可以向 MCP 服务器 (运行 'separate_server.py' 的端口 8000) 发送请求,调用挂载在 '/mcp2' 下的 'test_app' 服务提供的 '/test' 工具。 具体的调用方式和参数同样需要参考相关文档。
请注意,这只是一个基础的使用说明,更详细的功能和用法需要参考项目代码、'fastapi-mcp' 库的文档以及 MCP 协议的官方规范。
信息
分类
AI与计算