wut0n9/mcp
3.1
If you are the rightful owner of mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
This project implements the core functionalities of the Model Context Protocol (MCP), including server-side, client-side, and advanced features like streaming sampling.
Tools
5
Resources
0
Prompts
0
MCP (Model Context Protocol) 客户端实现
本项目实现了 MCP (Model Context Protocol) 的核心功能,包括服务器端、客户端以及流式采样等高级特性。
项目结构
mcp_client/
├── mcp_server.py # MCP 服务器端实现
├── mcp_client.py # 基础 MCP 客户端
├── mcp_client_ds.py # 支持 DeepSeek LLM 的增强客户端
└── README.md # 项目说明文档
核心功能实现
1. MCP 服务器端 (mcp_server.py)
数据库集成
- MySQL 数据库连接: 使用
pymysql实现 MySQL 数据库连接 - 数据库配置: 支持远程 MySQL 服务器连接
- 资源管理: 提供数据库表查询、数据读取、表结构获取等功能
核心 MCP 功能
-
Resources (资源):
test://hello- 简单测试资源db://tables- 获取所有表名db://tables/{table_name}/data/{limit}- 获取表数据db://tables/{table_name}/schema- 获取表结构
-
Prompts (提示模板):
introduce_china_province- 中国省份介绍模板debug_code- 代码调试对话模板
-
Tools (工具):
- 基础数学运算:
add,subtract,multiply,divide - 流式采样测试:
test_sampling
- 基础数学运算:
流式采样支持
- 实现了
test_sampling工具,支持流式消息生成 - 使用
SamplingMessage和TextContent实现流式内容推送
2. 基础 MCP 客户端 (mcp_client.py)
连接管理
- SSE 连接: 使用 Server-Sent Events 协议连接 MCP 服务器
- 会话管理: 支持会话初始化、清理和资源管理
- 异步上下文: 使用
AsyncExitStack管理异步资源
核心功能
- 工具调用:
execute_tool()- 执行 MCP 服务器端工具 - 提示模板:
get_prompt()- 获取提示模板内容 - 资源访问:
read_resource()- 读取 MCP 资源 - 列表功能:
list_tools()- 列出所有可用工具list_prompts()- 列出所有提示模板list_resources()- 列出所有资源list_resource_templates()- 列出带参数的资源模板
流式采样回调
- 实现了
handle_sampling_message()回调函数 - 支持实时处理流式生成的内容
- 提供标准化的响应格式
3. 增强 MCP 客户端 (mcp_client_ds.py)
LLM 集成
- DeepSeek 集成: 集成 DeepSeek LLM API
- 多服务管理: 支持连接多个 MCP 服务器
- 会话池: 管理多个服务会话
高级功能
-
多轮流式工具调用:
- 支持 LLM 连续调用多个工具
- 流式响应解析和工具参数累积
- 自动对话历史管理
- 防止死循环机制
-
流式响应处理:
- 正确解析流式 tool_calls 片段
- 累积工具调用参数
- 处理流式文本内容
智能工具调用
- 工具选择: LLM 自动选择合适的工具
- 参数解析: 自动解析工具调用参数
- 结果处理: 处理工具执行结果并更新对话历史
技术特性
1. 流式处理
- Server-Sent Events (SSE): 使用 SSE 协议实现实时通信
- 流式采样: 支持实时内容生成和回调处理
- 增量更新: 支持流式工具调用参数累积
2. 异步编程
- Async/Await: 全异步实现,提高并发性能
- 资源管理: 使用
AsyncExitStack确保资源正确释放 - 错误处理: 完善的异常处理和错误恢复机制
3. 数据库集成
- MySQL 支持: 完整的 MySQL 数据库操作
- 参数化查询: 防止 SQL 注入
- 连接池: 高效的数据库连接管理
4. LLM 集成
- 多模型支持: 支持 DeepSeek 等主流 LLM
- 工具调用: 支持 LLM 自动工具选择和调用
- 对话管理: 智能的对话历史和上下文管理
使用示例
启动服务器
python mcp_server.py
基础客户端使用
python mcp_client.py
增强客户端使用
python mcp_client_ds.py
配置说明
数据库配置
在 mcp_server.py 中配置 MySQL 连接信息:
DB_CONFIG = {
"user": "your_username",
"password": "your_password",
"host": "your_host",
"port": 3306,
"database": "your_database",
"charset": "utf8mb4"
}
LLM 配置
在 mcp_client_ds.py 中配置 DeepSeek API:
api_key = "your_deepseek_api_key"
model = "deepseek-reasoner"
核心 MCP 协议支持
本项目完整实现了 MCP 协议的核心功能:
- Resources: 资源管理和访问
- Prompts: 提示模板系统
- Tools: 工具调用和执行
- Sampling: 流式采样和回调
- SSE Transport: 实时通信协议
依赖要求
pip install mcp pymysql openai asyncio
注意事项
- 确保 MySQL 服务器可访问且配置正确
- DeepSeek API 密钥需要有效且具有足够配额
- 网络连接稳定,支持 SSE 协议
- Python 版本建议 3.11+
扩展功能
- 支持更多 LLM 提供商
- 添加更多数据库类型支持
- 实现更复杂的流式处理逻辑
- 支持 WebSocket 等其他传输协议