MCP客户端Python
MCP(Model Context Protocol)客户机是用Python开发的,它集成了带有FastaAPI的后端API和带有StreamLit的交互式前端。该项目允许连接到MCP服务器并通过直观的Web界面运行工具。
📋 描述
MCP客户端Python是一个完整的应用程序,可以促进与MCP服务器的交互。提供:
- 后端API:REST API使用FASTAPI构建,用于管理MCP连接和运行工具
- 前端交互:使用StreamLit构建的聊天界面,用于与MCP客户端交互
- 对话管理:存储和检索对话记录
- 多工具支持:能够连接到多个MCP服务器并使用其工具
🏗️ 项目结构
mcp-client-py/
├── api/ # Backend FastAPI
│ ├── main.py # Punto de entrada de la API
│ ├── mcp_client.py # Cliente MCP principal
│ ├── conversations/ # Gestión de conversaciones
│ ├── utils/ # Utilidades (logger, etc.)
│ └── .env # Variables de entorno (API keys)
├── front/ # Frontend Streamlit
│ ├── main.py # Punto de entrada de Streamlit
│ ├── chatbot.py # Lógica del chatbot
│ └── utils/ # Utilidades del frontend
├── pyproject.toml # Configuración del proyecto y dependencias
├── uv.lock # Lock file de dependencias
└── README.md # Este archivo🔧 依赖性
该项目使用以下主要单位:
- 人类 (>=0.71.0):用于与Claude交互的Anthropic SDK
- fastapi (>=0.119.1):框架web后端
- 流明 (>=1.50.0):前端交互框架
- 主控程序 (>=1.18.0):Protocolo模型上下文协议
- fastmcp (>=2.12.4):快速MCP工具
- python dotenv (>=1.1.1):环境变量管理
- HTTPX (>=0.28.1):异步HTTP客户端
- 美容组4 (>=4.14.2):解析HTML
📦 软件包管理器
该项目使用 紫外线 作为包管理器,它比PIP更快、更有效。确保您的系统中安装了紫外线。
感谢UV!
# En Windows (usando pip)
pip install uv
# O descargar desde https://github.com/astral-sh/uv⚙️ 配置
环境变量
该项目需要一个文件 .env 在文件夹中 api/ 要存储所需的API密钥:
# api/.env
ANTHROPIC_API_KEY=tu_api_key_aqui重要:从不提交文件 .env 到您的存储库。包含在 .gitignore.
🚀 安装和执行
1.克隆存储库
git clone https://github.com/tu-usuario/mcp-client-py.git
cd mcp-client-py2.安装依赖项
# Usando uv (recomendado)
uv sync
# O usando pip
pip install -e .3.配置环境变量
创建新文件 .env 在文件夹中 api/:
# api/.env
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxxx4.运行后端API
# Desde la raíz del proyecto
uvicorn api.main:app --reloadAPI将在 http://localhost:8000
互动文档: http://localhost:8000/docs
5.运行Frontend StreamLit(在另一个终端上)
# Desde la raíz del proyecto
streamlit run front/main.py前端将在 http://localhost:8501
📡 运作
执行流程
- 用户与StreamLit交互:用户在StreamLit界面上键入消息
- 发送到API:前端通过HTTP向后端API发送消息
- MCP处理:API使用MCP客户端处理消息
- 执行工具:如有必要,运行MCP服务器工具
- 回答:API将响应返回到前端
- 可视化:StreamLit显示用户的响应
主要成分
后端(api/mcp_client.py)
- MCP客户端:管理与MCP服务器连接的主类
- 关键方法:
- connect_to_server():连接到MCP服务器 - call_tool():运行服务器工具 - chat():处理消息并生成响应
前端(front/chatbot.py)
- 聊天机器人:管理用户界面的类
- 关键方法:
- display_message():在界面上显示消息 - send_message():向API发送消息 - 管理工具和结果
API(API/main.py)
- 端点fastapi:
- 连接到MCP服务器 - 发送消息 - 恢复对话记录 - 运行工具
🔌 API的终点
连接到MCP服务器
POST /connect
Body: {
"server_script_path": "/ruta/al/servidor-mcp.py"
}发送消息
POST /chat
Body: {
"message": "Tu mensaje aquí",
"conversation_id": "id_conversacion_opcional"
}获取历史记录
GET /conversations/{conversation_id}📝 使用示例
- 启动API:
uvicorn api.main:app --reload- 在另一个终端上,StreamLit启动:
streamlit run front/main.py- 打开
http://localhost:8501在你的浏览器中
- 通过提供脚本路径连接到MCP服务器
- 开始通过输入信息进行互动
🛠️ 发展
配置文件结构
pyproject.toml:定义项目的名称、版本、依赖关系和配置uv.lock:确保依赖关系一致版本的锁文件.python-version:指定所需的Python版本(>=3.11)
添加新的依赖项
# Agregar una nueva dependencia
uv add nombre_paquete
# Agregar una dependencia de desarrollo
uv add --dev nombre_paquete📚 有用的资源
📄 许可证
这个项目是在麻省理工学院的许可下进行的。
👤 作者
在Python中作为MCP客户端开发。
🤝 贡献
欢迎捐款。请打开一个问题或拉动请求以获得建议和改进。
