关于 MCP Server
MCP Server 是基于 FastAPI 构建的 Python 实现,用于 AI 模型与开发环境之间的标准化上下文交互。它包含 JSON-RPC 2.0、SSE 连接、会话管理和测试客户端,面向扩展或集成 MCP 服务的开发者。
主要功能
- 01JSON-RPC 2.0 通信
- 02Server-Sent Events 连接
- 03会话初始化与关闭
- 04模块化方法处理器
- 05FastAPI 异步处理
- 06内置测试客户端
适用场景
- 01使用内置客户端测试 MCP 会话
- 02添加自定义 MCP 请求方法
- 03通过 SSE 连接客户端
- 04使用 FastAPI 开发 MCP 服务
MCP 相关
它实现了支持初始化、采样和会话管理的 MCP 服务,通过 `/api` 接收 JSON-RPC 请求,并通过 `/sse` 提供 SSE 连接。项目附带测试客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP 服务
项目概览
本项目基于 FastAPI 和 MCP(Model Context Protocol)构建,可实现 AI 模型与开发环境之间的标准化上下文交互。通过简化模型部署、提供高效的 API 端点,并确保模型输入和输出的一致性,本项目增强了 AI 应用的可扩展性和可维护性,让开发者更轻松地集成和管理 AI 任务。
MCP(Model Context Protocol)是一种用于 AI 模型与开发环境之间上下文交互的统一协议。本项目提供了基于 Python 的 MCP 服务实现,支持基本的 MCP 协议功能,包括初始化、采样和会话管理。
功能
- JSON-RPC 2.0:基于标准 JSON-RPC 2.0 协议的请求-响应通信
- SSE 连接:支持用于实时通知的服务器发送事件连接
- 模块化设计:采用模块化架构,便于扩展和自定义
- 异步处理:基于 FastAPI 和异步 IO 的高性能服务
- 完整客户端:包含完整的测试客户端实现
项目结构
mcp_server/
├── mcp_server.py # MCP server main program
├── mcp_client.py # MCP client test program
├── routers/
│ ├── __init__.py # Router package initialization
│ └── base_router.py # Base router implementation
├── requirements.txt # Project dependencies
└── README.md # Project documentation
安装
- 克隆仓库:
git clone https://github.com/freedanfan/mcp_server.git
cd mcp_server
- 安装依赖项:
pip install -r requirements.txt
使用方法
启动服务
python mcp_server.py
默认情况下,服务将在 127.0.0.1:12000 上启动。你可以使用环境变量自定义主机和端口:
export MCP_SERVER_HOST=0.0.0.0
export MCP_SERVER_PORT=8000
python mcp_server.py
运行客户端
在另一个终端中运行客户端:
python mcp_client.py
如果服务未在默认地址运行,你可以设置环境变量:
export MCP_SERVER_URL="http://your-server-address:port"
python mcp_client.py
API 端点
服务提供以下 API 端点:
- 根路径(
/):提供服务信息 - API 端点(
/api):处理 JSON-RPC 请求 - SSE 端点(
/sse):处理 SSE 连接
MCP 协议实现
初始化流程
- 客户端通过 SSE 连接到服务
- 服务返回 API 端点 URI
- 客户端发送包含协议版本和功能的初始化请求
- 服务响应初始化请求,并返回服务功能
采样请求
客户端可以发送包含提示词的采样请求:
{
"jsonrpc": "2.0",
"id": "request-id",
"method": "sample",
"params": {
"prompt": "Hello, please introduce yourself."
}
}
服务将返回采样结果:
{
"jsonrpc": "2.0",
"id": "request-id",
"result": {
"content": "This is a response to the prompt...",
"usage": {
"prompt_tokens": 10,
"completion_tokens": 50,
"total_tokens": 60
}
}
}
关闭会话
客户端可以发送关闭请求:
{
"jsonrpc": "2.0",
"id": "request-id",
"method": "shutdown",
"params": {}
}
服务将平稳关闭:
{
"jsonrpc": "2.0",
"id": "request-id",
"result": {
"status": "shutting_down"
}
}
开发扩展
添加新方法
要添加新的 MCP 方法,请在 MCPServer 类中添加处理函数,并在 _register_methods 方法中注册:
def handle_new_method(self, params: dict) -> dict:
"""Handle new method"""
logger.info(f"Received new method request: {params}")
# Processing logic
return {"result": "success"}
def _register_methods(self):
# Register existing methods
self.router.register_method("initialize", self.handle_initialize)
self.router.register_method("sample", self.handle_sample)
self.router.register_method("shutdown", self.handle_shutdown)
# Register new method
self.router.register_method("new_method", self.handle_new_method)
集成 AI 模型
要集成实际的 AI 模型,请修改 handle_sample 方法:
async def handle_sample(self, params: dict) -> dict:
"""Handle sampling request"""
logger.info(f"Received sampling request: {params}")
# Get prompt
prompt = params.get("prompt", "")
# Call AI model API
# For example: using 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
}
}
故障排除
常见问题
- 连接错误:确保服务正在运行,并且客户端使用了正确的服务 URL
- 405 方法不允许:确保客户端向正确的 API 端点发送请求
- SSE 连接失败:检查网络连接和防火墙设置
日志记录
服务端和客户端都提供详细的日志。查看日志以了解更多信息:
# Increase log level
export PYTHONPATH=.
python -m logging -v DEBUG -m mcp_server
参考资料
许可证
本项目根据 MIT 许可证授权。详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。