mcp

wut0n9/mcp

3.2

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 henry@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
  1. add

    Performs addition of two numbers.

  2. subtract

    Performs subtraction of two numbers.

  3. multiply

    Performs multiplication of two numbers.

  4. divide

    Performs division of two numbers.

  5. test_sampling

    Tests streaming message generation.

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 等其他传输协议