关于 LangGraph ReAct Agent with MCP
这是一个使用 LangGraph 和 MCP 实现的 ReAct Agent 模板。Agent 通过 MCP 网关访问多个 MCP 服务,获得文件系统和内存知识图操作能力。
主要功能
- 01MCP 网关统一管理多个服务
- 02文件系统工具和知识图谱操作
- 03自动工具发现和集成
- 04ReAct 推理循环
适用场景
- 01通过 MCP 服务扩展 Agent 能力
- 02文件操作和知识管理任务自动化
- 03多服务协调工作流程
MCP 相关
该客户端通过本地 MCP 网关连接多个 MCP 服务,自动发现并整合这些服务暴露的工具供 ReAct Agent 使用。
详细介绍
LangGraph ReAct Agent with MCP
本模板展示了一个使用 LangGraph 和 Model Context Protocol (MCP) 实现的 ReAct Agent。该 Agent 通过统一的网关使用 MCP 服务来提供工具和功能。
架构
该系统由三个主要组件组成:
-
MCP 网关服务:一个服务,用于:
- 管理多个 MCP 服务进程
- 提供统一的 API 来访问工具
- 处理与 MCP 服务的通信
- 通过简单的 HTTP 接口暴露工具
-
MCP 服务:提供特定功能的独立服务:
- 文件系统服务:文件操作(读取、写入、列表、搜索)
- 内存服务:知识图谱操作(实体、关系、查询)
- 可添加更多服务以获取更多功能
-
ReAct Agent:该 Agent:
- 连接到 MCP 网关
- 发现可用工具
- 使用工具完成任务
- 组合多个服务的功能
快速开始
1. 安装依赖
# Install the agent package
pip install -e .
# Install the gateway package
cd gateway
pip install -e .
cd ..
2. 配置 MCP 服务
网关服务通过 gateway/config.json 进行配置。默认情况下,它启动两个 MCP 服务:
{
"mcp": {
"servers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/path/to/directory"
]
},
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}
}
您可以从 官方 MCP 服务仓库 添加更多服务。
3. 启动网关服务
cd gateway
python -m mcp_gateway.server
服务将默认在端口 8808 启动。
4. 配置 Agent
Agent 与网关的连接在 langgraph.json 中配置:
{
"dependencies": ["."],
"graphs": {
"agent": "./src/react_agent/graph.py:graph"
},
"env": ".env",
"mcp": {
"gateway_url": "http://localhost:8808"
}
}
5. 使用 Agent
在 LangGraph 中打开您的应用!安装指南 在此。
这将打开一个新的浏览器窗口,Agent 正在运行。该 Agent 将自动:
- 连接到本地网关服务
- 发现可用工具
- 在对话中提供可用的工具
可用工具
该 Agent 可以访问来自两个 MCP 服务的工具:
文件系统工具
read_file: 读取文件内容write_file: 创建或更新文件list_directory: 列出目录内容search_files: 查找匹配模式的文件- 等等...
内存工具
create_entities: 向知识图谱添加实体create_relations: 链接实体search_nodes: 查询知识图谱- 等等...
开发
添加新的 MCP 服务
- 在 MCP 服务仓库 中找到一个服务
- 将其配置添加到
gateway/config.json - Agent 将自动发现其工具
定制 Agent
- 修改
src/react_agent/prompts.py中的系统提示词 - 更新
src/react_agent/graph.py中 Agent 的推理逻辑 - 通过包含更多 MCP 服务来添加新功能
文档
许可证
本项目根据 MIT 许可证授权 - 详见 LICENSE 文件。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。