Skip to content

Taki-Ta/mcp-python-client

Repository files navigation

MCP Python Client

一个功能完整的Model Context Protocol (MCP) Python客户端,支持chat loop、模型配置和SSE MCP配置。现在支持Anthropic和vLLM本地模型!

功能特性

  • 交互式Chat Loop: 实现了用户友好的聊天循环,支持连续对话
  • 多模型提供商: 支持Anthropic Claude和vLLM本地模型
  • 本地模型支持: 通过vLLM运行本地大语言模型,无需外部API
  • SSE MCP支持: 支持Server-Sent Events (SSE) 传输协议
  • Stdio MCP支持: 同时支持标准输入输出传输协议
  • 多服务器连接: 可同时连接多个MCP服务器
  • 工具调用: 自动处理AI模型的工具调用和结果返回
  • 配置管理: 通过环境变量和配置文件管理设置
  • 调试模式: 提供详细的调试信息

快速开始

1. 安装依赖

# 使用uv (推荐)
uv sync

# 或使用pip
pip install -r requirements.txt

2. 配置环境变量

复制配置示例文件并编辑:

cp config.env.example .env

选项A: 使用Anthropic Claude (云端API)

编辑 .env 文件:

# 使用Anthropic
MODEL_PROVIDER=anthropic
ANTHROPIC_API_KEY=your_anthropic_api_key_here
DEFAULT_MODEL=claude-3-5-sonnet-20241022

选项B: 使用vLLM本地模型 (推荐)

编辑 .env 文件:

# 使用vLLM本地模型
MODEL_PROVIDER=vllm
VLLM_BASE_URL=http://localhost:8000
VLLM_API_KEY=token-abc123
DEFAULT_MODEL=Qwen/Qwen2.5-1.5B-Instruct

3. 启动vLLM服务器 (仅限vLLM)

如果使用vLLM,需要先启动本地模型服务器:

方式1: 使用我们的启动脚本 (推荐)

# 安装vLLM
pip install vllm

# 使用启动脚本选择模型
python start_vllm.py

# 或直接指定模型
python start_vllm.py qwen-1.5b

方式2: 手动启动

# 启动轻量级模型 (适合测试)
vllm serve Qwen/Qwen2.5-1.5B-Instruct --api-key token-abc123

# 或启动更大的模型
vllm serve meta-llama/Llama-2-7b-chat-hf --api-key token-abc123

4. 启动演示MCP服务器 (可选)

在另一个终端中启动演示MCP服务器:

uv run python demo_server.py

5. 运行客户端

# 使用快速启动脚本
python run_client.py

# 或直接运行
python main.py

使用说明

基本命令

启动客户端后,你可以使用以下命令:

  • 普通对话: 直接输入问题或聊天内容
  • tools: 查看当前可用的工具
  • model: 查看模型信息和连接状态
  • config: 查看当前配置信息
  • quitexit: 退出客户端

示例对话

🤖 MCP Python Client 启动中...
🚀 使用模型提供商: vllm
📋 模型: Qwen/Qwen2.5-1.5B-Instruct
🔗 测试vLLM连接: http://localhost:8000
✅ vLLM服务器连接成功
✅ 已连接,可用工具: get_current_time, calculate, echo_message

💬 欢迎使用MCP聊天机器人!
--------------------------------------------------

👤 你: 现在几点了?

🤖 AI: [调用工具 get_current_time] 结果: 2024-01-15 14:30:25
现在是2024年1月15日下午2点30分25秒。

👤 你: 帮我计算 25 * 4 + 10

🤖 AI: [调用工具 calculate] 结果: 25 * 4 + 10 = 110
计算结果是110。

👤 你: model

🧠 模型信息:
  - 提供商: vllm
  - 模型: Qwen/Qwen2.5-1.5B-Instruct
  - 最大Token: 1000
  - 温度: 0.1
  - 服务器URL: http://localhost:8000
  - 连接状态: ✅ 已连接

配置说明

环境变量

变量名 说明 默认值 必需
MODEL_PROVIDER 模型提供商 (anthropic/vllm) anthropic
ANTHROPIC_API_KEY Anthropic API密钥 - Anthropic时必需
VLLM_BASE_URL vLLM服务器URL http://localhost:8000 vLLM时必需
VLLM_API_KEY vLLM API密钥 token-abc123
DEFAULT_MODEL 使用的AI模型 根据提供商自动选择
MAX_TOKENS 最大token数 1000
TEMPERATURE 模型温度参数 0.1
MCP_SERVER_URL MCP服务器URL -
MCP_SERVER_TYPE 服务器类型 (sse/stdio) sse
DEBUG 调试模式 false

支持的模型

Anthropic模型

  • claude-3-5-sonnet-20241022 (默认)
  • claude-3-haiku-20240307
  • claude-3-opus-20240229

vLLM本地模型

  • Qwen/Qwen2.5-1.5B-Instruct (轻量级,推荐)
  • Qwen/Qwen2.5-7B-Instruct (中等大小)
  • meta-llama/Llama-2-7b-chat-hf
  • microsoft/DialoGPT-medium
  • 或任何兼容的HuggingFace模型

vLLM本地模型部署

优势

  • 🔒 隐私保护: 数据不离开本地
  • 💰 成本节约: 无需API调用费用
  • 🚀 高性能: GPU加速推理
  • 🛠️ 可控性: 完全自定义配置

系统要求

  • GPU: NVIDIA GPU (推荐显存4GB+)
  • 内存: 8GB+ (依赖模型大小)
  • Python: 3.8-3.11
  • CUDA: 11.8+ (GPU推理)

快速部署

  1. 安装vLLM:

    pip install vllm
  2. 启动轻量级模型:

    python start_vllm.py qwen-1.5b
  3. 配置客户端:

    export MODEL_PROVIDER=vllm
    export VLLM_BASE_URL=http://localhost:8000
    python main.py

性能优化

  • GPU内存优化: 调整 --gpu-memory-utilization 参数
  • 并发处理: 使用 --max-num-seqs 控制并发请求
  • 量化加速: 使用 --quantization awq 减少显存使用

开发指南

项目结构

mcp-python-client/
├── main.py                 # 主程序入口
├── config.py               # 配置管理模块
├── model_adapter.py        # 模型适配器(支持多提供商)
├── mcp_client.py          # MCP客户端核心实现
├── demo_server.py         # 演示MCP服务器
├── start_vllm.py          # vLLM启动脚本
├── run_client.py          # 便捷启动脚本
├── config.env.example     # 配置文件示例
├── README.md             # 项目说明
└── pyproject.toml        # 项目配置

添加新的模型提供商

  1. model_adapter.py 中实现新的适配器类
  2. 继承 BaseModelAdapter 并实现必要方法
  3. ModelAdapterFactory 中注册新提供商

自定义工具处理

可以在 mcp_client.py 中的 process_query 方法里添加自定义的工具结果处理逻辑。

故障排除

常见问题

  1. vLLM连接失败

    ⚠️ vLLM服务器连接失败,请检查服务器是否运行
    

    解决: 确保vLLM服务器正在运行并检查URL

  2. GPU内存不足

    CUDA out of memory
    

    解决: 使用更小的模型或调整GPU内存参数

  3. 模型下载失败 解决: 检查网络连接,或使用本地模型路径

  4. API密钥错误 解决: 检查环境变量设置

调试模式

启用调试模式可以看到更详细的信息:

DEBUG=true

依赖项

核心依赖

  • mcp: Model Context Protocol SDK
  • anthropic: Anthropic API客户端
  • httpx: HTTP客户端(用于vLLM)
  • python-dotenv: 环境变量管理

可选依赖

  • vllm: 本地模型推理引擎
  • fastapi: Web框架(用于SSE支持)
  • uvicorn: ASGI服务器
  • sse-starlette: Server-Sent Events支持

许可证

MIT License - 详见LICENSE文件

贡献

欢迎提交Issue和Pull Request!

更新日志

v0.2.0

  • ✨ 新增vLLM本地模型支持
  • ✨ 添加模型适配器架构
  • ✨ 新增vLLM启动脚本
  • 🔧 改进配置管理
  • 📚 更新文档和示例

v0.1.0

  • 🎉 初始版本
  • ✅ 支持基本的MCP客户端功能
  • ✅ 实现chat loop
  • ✅ 支持SSE和stdio传输
  • ✅ 配置管理系统

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages