mcp

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 工具,支持流式消息生成
  • 使用 SamplingMessageTextContent 实现流式内容推送

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 协议的核心功能:

  1. Resources: 资源管理和访问
  2. Prompts: 提示模板系统
  3. Tools: 工具调用和执行
  4. Sampling: 流式采样和回调
  5. SSE Transport: 实时通信协议

依赖要求

pip install mcp pymysql openai asyncio

注意事项

  1. 确保 MySQL 服务器可访问且配置正确
  2. DeepSeek API 密钥需要有效且具有足够配额
  3. 网络连接稳定,支持 SSE 协议
  4. Python 版本建议 3.11+

扩展功能

  • 支持更多 LLM 提供商
  • 添加更多数据库类型支持
  • 实现更复杂的流式处理逻辑
  • 支持 WebSocket 等其他传输协议