使用说明
MCP 客户端
概述
这个仓库托管了一个FastAPI服务,该服务提供了一个面向聊天的多客户端协议(MCP)代理。API负责在终端用户、Groq托管的大型语言模型以及任何符合MCP规范且位于MCP服务器后的工具之间进行对话代理。Redis用于用户注册、状态管理和持久聊天记录。
主要特点
- 由MCP支持的代理 由……提供支持/驱动
langgraph和langchain用于工具感知推理。 - Groq LLM集成 通过
ChatGroq可根据请求进行配置。 - 基于Redis的历史记录 该系统追踪每个用户的人类、系统和AI消息。
- REST API(Representational State Transfer Application Programming Interface,表述性状态传递应用程序编程接口) 具有聊天、继续对话、查看历史记录以及清除/重置上下文的端点。
- 启用CORS的FastAPI 可在任何网关后部署的服务。
项目结构
app/
__init__.py # Loads configuration from .env (host, ports, service URLs)
__main__.py # Uvicorn entry point (python -m app)
main.py # FastAPI factory and middleware
routes/
mcp_agent.py # REST endpoints exposing the MCP agent
services/
chat.py # Chat session lifecycle and LangChain runnable wrapper
chat_history.py # Redis-backed message history helpers
mcp_service.py # MCP client + LangGraph agent orchestration
redis.py # Redis connection & CRUD utilities
system_message.py # Default Coding Club system prompt
types/
message_response.py
utils/
errors.py # Reserved for custom exceptions
requirements.txt # Python dependencies
架构图
高级数据流如图所示 assets/architecture.svg嵌入或直接打开它,以可视化FastAPI层如何与Redis、Groq以及MCP服务器进行交互。
先决条件
- Python 3.10+(与LangChain和FastAPI兼容支持)
- 启用了 RedisJSON 模块的 Redis 服务器(此模块为……所必需)
redis.commands.json) - 运行中的MCP服务器,可通过以下地址访问:
MCP_SERVER_URL - Groq API密钥,可访问所选模型(默认:
qwen/qwen3-32b)
安装
python -m venv .venv
.venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt
环境变量
创建一个 .env 在项目根目录下的文件。支持的变量:
| 变量 | 默认值 | 描述 |
|---|---|---|
HOST |
0.0.0.0 |
uvicorn 绑定的接口。 |
PORT |
8001 |
Uvicorn 服务器监听的端口。 |
MCP_SERVER_URL |
http://localhost:8000 MCP服务器的基础URL。 |
|
REDIS_URL |
redis://localhost:6379 |
Redis 连接字符串。 |
GROQ_API_KEY |
所需的 所使用的API密钥 ChatGroq。 |
注:
REDIS_URL在(某处)被读了两次app.__init__; 在其中定义它.env确保所有消费者都能获得相同的价值。
运行服务
python -m app
这启动了 uvicorn,并使用了在(某处)定义的配置 app/__main__.py你也可以运行 uvicorn app.main:app --host <HOST> --port <PORT> 如需,可直接(联系/告知)。
FastAPI 将可用在 http://<HOST>:<PORT>。
API 参考文档
所有终端点均归类于 /mcp-agent 除非另有说明。
-
GET
/验证服务是否在线。 -
获取
/health轻量级健康检查返回{"status": "healthy"}(当)准备好了的时候。 -
POST(邮政)
/mcp-agent/chat开始对话(或恢复非活动对话),同时允许可选的系统提示覆盖。{ "user_id": "student-123", "message": "Help me debug my code", "system_prompt": "Optional custom instructions", "model_name": "openai/gpt-oss-120b" }返回助手的回复和完整历史记录(包括系统消息)。
-
POST(邮寄/发帖)
/mcp-agent/continue继续使用现有对话历史进行对话。省略系统提示。 -
GET(获取)
/mcp-agent/history/{user_id}检索为给定用户ID存储的历史记录,包括系统消息。 -
POST(邮政服务/发布)
/mcp-agent/history/clear清除用户的聊天历史记录和缓存的MCP上下文。预期(或:需要){ "user_id": "..." }. -
POST(邮政)
/mcp-agent/reset用于清除历史记录和代理状态的别名。
对话生命周期
- 在 Redis 中注册或激活用户(参见
RedisService.set_user)。 - 打电话
/mcp-agent/chat或者/continue(与)一起;带有;具有user_id并且message。 - Redis通过(某种方式)存储人类和AI的回合/步骤
ChatHistoryService用于情境感知回复。 - 使用
/history/{user_id}用于调试或/history/clear当你需要一个新的开始时。
开发技巧
- 在调用任何聊天端点之前,请确保Redis可访问;否则
ChatService将会引发用户注册错误。 - 自定义默认系统提示语
app/services/system_message.py以调整团队品牌或行为。 - 在下方添加额外的路由器
app/routes/并将它们包含在app/main.py按需使用。 - 通过在所引用的MCP服务器上注册更多MCP工具来扩展功能
MCP_SERVER_URL。
测试API
进行一个快速的烟雾测试,使用 curl:
curl -X POST http://localhost:8001/mcp-agent/chat \
-H "Content-Type: application/json" \
-d '{
"user_id": "local",
"message": "Say hello",
"model_name": "qwen/qwen3-32b"
}'
预期会收到一个包含助手消息和对话历史的JSON响应。
作者
- 萨蒂亚姆·辛格 — satyamsingh7734@gmail.com(该邮箱地址翻译为中文仍为原样,因为邮箱地址本身是国际通用的,无需翻译)
持续集成/持续交付(CI/CD)与部署
- GitHub Actions工作流程在
.github/workflows/deploy.yml通过手动触发 运行工作流 GitHub Actions 中的按钮(workflow_dispatch)。 - 渲染部署钩子配置
RENDER_DEPLOY_HOOK_URL在你的仓库设置中保存秘密。工作流会向这个钩子发布请求以触发部署。 - 要求渲染服务应提供一个部署挂钩URL,并且部署应与提供的(挂钩)保持一致
Dockerfile或者您的渲染构建设置。
许可证
这个项目采用MIT许可证授权。请参阅 LICENSE 文件中包含完整详情。