使用说明
MCP聊天应用程序
一个基于Streamlit和CLI的生产就绪聊天界面,利用模型上下文协议(MCP)将谷歌的Gemini LLM与各种工具和服务器连接起来。
特性
- 交互式聊天:基于Streamlit的干净web界面和CLI选项
- 多服务器支持:同时连接到多个MCP服务器
- 费用服务器:远程费用跟踪服务器
- Manim服务器:用于生成数学动画的本地Manim服务器
- 数学服务器:本地数学运算服务器(
server.py)
- 配置驱动:基于YAML的配置,支持环境变量
- 综合录井:文件和控制台的结构化日志记录
- 错误处理:在整个应用程序中进行稳健的错误处理
- 已测试:所有数学运算的单元测试
- Gemini集成:用途
langchain-google-genai用于对话式人工智能
先决条件
- Python 3.10+
- 紫外线 (可选,用于通过fastmcp运行数学服务器)
- Google Gemini API密钥
安装
-
克隆存储库 (如果适用)或导航到项目目录。
-
再进行:
pip install streamlit langchain-google-genai langchain-mcp-adapters python-dotenv pyyaml fastmcp pytest -
环境设置: 复制示例环境文件并填写您的值:
cp .env.example .env编辑
.env并添加您的Gemini API密钥:GEMINI_API_KEY=your_api_key_here(可选)覆盖默认路径:
UV_PATH=/path/to/uv PYTHON_PATH=/path/to/python3 MANIM_EXECUTABLE=/path/to/manim MATH_SERVER_PATH=/path/to/server.py MANIM_SERVER_PATH=/path/to/manim_server.py -
配置: 这
config.yaml该文件定义了服务器连接和应用程序设置。你可以:- 通过设置启用/禁用服务器
enabled: true/false - 修改服务器传输类型和命令
- 调整LLM设置(型号、温度)
- 配置日志记录级别
- 通过设置启用/禁用服务器
用法
运行Streamlit聊天应用程序
streamlit run app.py
应用程序将在默认web浏览器中打开。您可以与代理聊天,代理将使用连接的MCP工具回答查询。
运行CLI应用程序
python client1.py
或者以编程方式使用它:
from client1 import main
import asyncio
result = asyncio.run(main("What is 25 + 17?"))
print(result)
运行本地数学服务器
要独立运行数学服务器(用于测试):
python server.py
要在聊天应用程序中使用它,请在中启用它 config.yaml:
servers:
math:
enabled: true
# ... rest of configuration
测试
运行测试套件:
pytest test_server.py -v
这将测试服务器提供的所有数学运算。
项目结构
mcp-server/
├── app.py # Streamlit web interface
├── client1.py # CLI interface
├── server.py # Math MCP server
├── config.yaml # Application configuration
├── config_loader.py # Configuration loader utility
├── test_server.py # Unit tests
├── .env # Environment variables (not in git)
├── .env.example # Example environment file
├── logs/ # Application logs
│ ├── mcp_chat.log
│ └── mcp_cli.log
├── README.md # This file
├── LICENSE # License file
└── pyproject.toml # Python project metadata
配置
服务器配置(config.yaml)
服务器的定义结构如下:
servers:
server-name:
enabled: true
transport: stdio # or streamable_http
command: ${PYTHON_PATH:-python3}
args:
- /path/to/server.py
env:
ENV_VAR: value
格式中的环境变量 ${VAR_NAME:-default} 自动扩展。
日志记录
日志将写入:
logs/mcp_chat.log(Streamlit应用程序)logs/mcp_cli.log(CLI应用程序)
在中配置日志记录级别 config.yaml:
logging:
level: INFO # DEBUG, INFO, WARNING, ERROR
故障排除
的FileNotFound错误 uv 或 python3
更新您的 .env 具有正确路径的文件:
UV_PATH=/Users/yourname/path/to/uv
PYTHON_PATH=/Users/yourname/path/to/python3
找不到GEMINI_API_KEY
确保您的 .env 文件包含:
GEMINI_API_KEY=your_actual_api_key
MCP服务器连接错误
检查登录 logs/ 详细错误消息的目录。确保:
- 服务器路径正确
.env - 服务器已启用
config.yaml - 已安装所需的依赖项
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 运行测试套件
- 提交拉取请求
许可证
有关详细信息,请参阅LICENSE文件。