一个功能完整的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模型的工具调用和结果返回
- ✅ 配置管理: 通过环境变量和配置文件管理设置
- ✅ 调试模式: 提供详细的调试信息
# 使用uv (推荐)
uv sync
# 或使用pip
pip install -r requirements.txt复制配置示例文件并编辑:
cp config.env.example .env编辑 .env 文件:
# 使用Anthropic
MODEL_PROVIDER=anthropic
ANTHROPIC_API_KEY=your_anthropic_api_key_here
DEFAULT_MODEL=claude-3-5-sonnet-20241022编辑 .env 文件:
# 使用vLLM本地模型
MODEL_PROVIDER=vllm
VLLM_BASE_URL=http://localhost:8000
VLLM_API_KEY=token-abc123
DEFAULT_MODEL=Qwen/Qwen2.5-1.5B-Instruct如果使用vLLM,需要先启动本地模型服务器:
# 安装vLLM
pip install vllm
# 使用启动脚本选择模型
python start_vllm.py
# 或直接指定模型
python start_vllm.py qwen-1.5b# 启动轻量级模型 (适合测试)
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在另一个终端中启动演示MCP服务器:
uv run python demo_server.py# 使用快速启动脚本
python run_client.py
# 或直接运行
python main.py启动客户端后,你可以使用以下命令:
- 普通对话: 直接输入问题或聊天内容
tools: 查看当前可用的工具model: 查看模型信息和连接状态config: 查看当前配置信息quit或exit: 退出客户端
🤖 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 |
❌ |
claude-3-5-sonnet-20241022(默认)claude-3-haiku-20240307claude-3-opus-20240229
Qwen/Qwen2.5-1.5B-Instruct(轻量级,推荐)Qwen/Qwen2.5-7B-Instruct(中等大小)meta-llama/Llama-2-7b-chat-hfmicrosoft/DialoGPT-medium- 或任何兼容的HuggingFace模型
- 🔒 隐私保护: 数据不离开本地
- 💰 成本节约: 无需API调用费用
- 🚀 高性能: GPU加速推理
- 🛠️ 可控性: 完全自定义配置
- GPU: NVIDIA GPU (推荐显存4GB+)
- 内存: 8GB+ (依赖模型大小)
- Python: 3.8-3.11
- CUDA: 11.8+ (GPU推理)
-
安装vLLM:
pip install vllm
-
启动轻量级模型:
python start_vllm.py qwen-1.5b
-
配置客户端:
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 # 项目配置
- 在
model_adapter.py中实现新的适配器类 - 继承
BaseModelAdapter并实现必要方法 - 在
ModelAdapterFactory中注册新提供商
可以在 mcp_client.py 中的 process_query 方法里添加自定义的工具结果处理逻辑。
-
vLLM连接失败
⚠️ vLLM服务器连接失败,请检查服务器是否运行解决: 确保vLLM服务器正在运行并检查URL
-
GPU内存不足
CUDA out of memory解决: 使用更小的模型或调整GPU内存参数
-
模型下载失败 解决: 检查网络连接,或使用本地模型路径
-
API密钥错误 解决: 检查环境变量设置
启用调试模式可以看到更详细的信息:
DEBUG=truemcp: Model Context Protocol SDKanthropic: Anthropic API客户端httpx: HTTP客户端(用于vLLM)python-dotenv: 环境变量管理
vllm: 本地模型推理引擎fastapi: Web框架(用于SSE支持)uvicorn: ASGI服务器sse-starlette: Server-Sent Events支持
MIT License - 详见LICENSE文件
欢迎提交Issue和Pull Request!
- ✨ 新增vLLM本地模型支持
- ✨ 添加模型适配器架构
- ✨ 新增vLLM启动脚本
- 🔧 改进配置管理
- 📚 更新文档和示例
- 🎉 初始版本
- ✅ 支持基本的MCP客户端功能
- ✅ 实现chat loop
- ✅ 支持SSE和stdio传输
- ✅ 配置管理系统