Skip to main content
Glama

MCP Server

by freedanfan
README.zh-CN.md5.72 kB
# MCP 服务器 [English](README.md) ## 项目概述 基于 FastAPI 和 MCP(模型上下文协议),实现 AI 模型与开发环境 之间的标准化上下文交互,提升 AI 应用的可扩展性和可维护性。该项目旨在简化模型部署,提供高效的 API 接口,并确保模型输入输出的一致性,以便开发者能够更方便地集成和管理 AI 任务。 MCP(Model Context Protocol)是一个统一的模型上下文交互协议,用于在AI模型和开发环境之间建立标准化的上下文交互。本项目提供了一个基于Python的MCP服务器实现,支持基本的MCP协议功能,包括初始化、采样和会话管理。 ## 功能特性 - **JSON-RPC 2.0**: 基于标准JSON-RPC 2.0协议实现请求-响应通信 - **SSE连接**: 支持服务器发送事件(Server-Sent Events)连接,用于实时通知 - **模块化设计**: 采用模块化设计,易于扩展和定制 - **异步处理**: 使用FastAPI和异步IO实现高性能服务 - **完整的客户端**: 提供完整的测试客户端实现 ## 项目结构 ``` mcp_server/ ├── mcp_server.py # MCP服务器主程序 ├── mcp_client.py # MCP客户端测试程序 ├── routers/ │ ├── __init__.py # 路由器包初始化 │ └── base_router.py # 基础路由器实现 ├── requirements.txt # 项目依赖 └── README.md # 项目说明文档 ``` ## 安装 1. 克隆项目仓库: ```bash git clone https://github.com/freedanfan/mcp_server.git cd mcp_server ``` 2. 安装依赖: ```bash pip install -r requirements.txt ``` ## 使用方法 ### 启动服务器 ```bash python mcp_server.py ``` 默认情况下,服务器将在`127.0.0.1:12000`上启动。您可以通过环境变量自定义主机和端口: ```bash export MCP_SERVER_HOST=0.0.0.0 export MCP_SERVER_PORT=8000 python mcp_server.py ``` ### 运行客户端 在另一个终端中运行客户端: ```bash python mcp_client.py ``` 如果服务器不在默认地址运行,可以设置环境变量: ```bash export MCP_SERVER_URL="http://your-server-address:port" python mcp_client.py ``` ## API端点 服务器提供以下API端点: - **根路径** (`/`): 提供服务器信息 - **API端点** (`/api`): 处理JSON-RPC请求 - **SSE端点** (`/sse`): 处理SSE连接 ## MCP协议实现 ### 初始化流程 1. 客户端通过SSE连接到服务器 2. 服务器返回API端点URI 3. 客户端发送初始化请求,包含协议版本和能力 4. 服务器响应初始化请求,返回服务器能力 ### 采样请求 客户端可以发送采样请求,包含提示词: ```json { "jsonrpc": "2.0", "id": "request-id", "method": "sample", "params": { "prompt": "你好,请介绍一下自己。" } } ``` 服务器将返回采样结果: ```json { "jsonrpc": "2.0", "id": "request-id", "result": { "content": "这是对提示词的响应...", "usage": { "prompt_tokens": 10, "completion_tokens": 50, "total_tokens": 60 } } } ``` ### 关闭会话 客户端可以发送关闭请求: ```json { "jsonrpc": "2.0", "id": "request-id", "method": "shutdown", "params": {} } ``` 服务器将优雅地关闭: ```json { "jsonrpc": "2.0", "id": "request-id", "result": { "status": "shutting_down" } } ``` ## 扩展开发 ### 添加新方法 要添加新的MCP方法,请在`MCPServer`类中添加处理函数,并在`_register_methods`方法中注册: ```python def handle_new_method(self, params: dict) -> dict: """处理新方法""" logger.info(f"收到新方法请求: {params}") # 处理逻辑 return {"result": "success"} def _register_methods(self): # 注册现有方法 self.router.register_method("initialize", self.handle_initialize) self.router.register_method("sample", self.handle_sample) self.router.register_method("shutdown", self.handle_shutdown) # 注册新方法 self.router.register_method("new_method", self.handle_new_method) ``` ### 集成AI模型 要集成实际的AI模型,请修改`handle_sample`方法: ```python async def handle_sample(self, params: dict) -> dict: """处理采样请求""" logger.info(f"收到采样请求: {params}") # 获取提示词 prompt = params.get("prompt", "") # 调用AI模型API # 例如:使用OpenAI API response = await openai.ChatCompletion.acreate( model="gpt-4", messages=[{"role": "user", "content": prompt}] ) content = response.choices[0].message.content usage = response.usage return { "content": content, "usage": { "prompt_tokens": usage.prompt_tokens, "completion_tokens": usage.completion_tokens, "total_tokens": usage.total_tokens } } ``` ## 故障排除 ### 常见问题 1. **连接错误**:确保服务器正在运行,并且客户端使用正确的服务器URL 2. **405 Method Not Allowed**:确保客户端发送请求到正确的API端点 3. **SSE连接失败**:检查网络连接和防火墙设置 ### 日志记录 服务器和客户端都提供详细的日志记录。查看日志以获取更多信息: ```bash # 增加日志级别 export PYTHONPATH=. python -m logging -v DEBUG -m mcp_server ``` ## 参考资料 - [MCP协议规范](https://www.claudemcp.com/zh/specification) - [FastAPI文档](https://fastapi.tiangolo.com/) - [JSON-RPC 2.0规范](https://www.jsonrpc.org/specification) - [SSE规范](https://html.spec.whatwg.org/multipage/server-sent-events.html) ## 许可证 本项目采用MIT许可证。详情请参阅LICENSE文件。

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/freedanfan/mcp_server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server