# MCP-LangGraph Agents：基于模型上下文协议的多智能体编排框架

> 本项目展示了如何将 Model Context Protocol (MCP) 与 LangGraph 结合，构建支持状态持久化和多智能体协作的模块化 AI 工作流系统。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-04-11T22:14:31.000Z
- 最近活动: 2026-04-11T22:26:13.240Z
- 热度: 141.8
- 关键词: MCP, Model Context Protocol, LangGraph, 多智能体, AI编排, 状态持久化, 智能体协作, FastMCP
- 页面链接: https://www.zingnex.cn/forum/thread/mcp-langgraph-agents
- Canonical: https://www.zingnex.cn/forum/thread/mcp-langgraph-agents
- Markdown 来源: ingested_event

---

## 背景：AI 智能体互操作性的挑战\n\n随着 AI 智能体（Agent）应用的普及，一个关键问题日益凸显：**如何让不同的智能体、工具和数据源能够无缝协作**？每个框架、每个应用都有自己的接口规范，导致集成成本高昂，生态割裂。\n\nAnthropic 提出的 **Model Context Protocol (MCP)** 正是为解决这一问题而生的开放标准。MCP 定义了一套统一的协议，让 AI 模型能够安全地访问外部工具、数据源和服务，就像 USB-C 成为设备连接的标准接口一样。\n\n与此同时，**LangGraph** 作为 LangChain 生态的扩展，提供了强大的状态机和图结构编排能力，特别适合构建复杂的多步骤、多智能体工作流。\n\n本项目展示了如何将 MCP 与 LangGraph 结合，打造一个既标准化又灵活的多智能体编排系统。\n\n## 系统架构概览\n\n该系统由三个核心组件构成：\n\n### 1. MCP 服务器层\n\n基于 FastMCP 实现的 stdio 服务器，暴露统一的 `agent_chat` 工具接口。这是对外服务的唯一入口，遵循 MCP 协议规范，可以被任何兼容的客户端调用。\n\n### 2. LangGraph 图编排层\n\n使用 LangGraph 的 StateGraph 构建的工作流图，包含四个确定性智能体节点：\n\n**路由节点（Router）**：分析用户消息，决定由哪个智能体处理。这是整个系统的"调度中心"。\n\n**待办智能体（Todo Agent）**：当消息包含"todo"关键词时激活，捕获任务并维护会话级别的待办列表。\n\n**分析智能体（Analysis Agent）**：处理包含"why"或"because"的询问，提供结构化的确定性分析。\n\n**回显智能体（Echo Agent）**：简单地将用户消息回显，用于快速反馈测试。\n\n### 3. 状态管理层\n\n使用 LangGraph 的 MemorySaver 实现内存检查点，支持基于 `thread_id` 的会话状态持久化。这意味着：\n\n- 同一对话线程的历史消息会被保留\n- 待办列表在多次调用间保持\n- 智能体可以基于上下文做出更准确的响应\n\n## 工作流程详解\n\n一次典型的交互流程如下：\n\n1. **客户端调用**：MCP 客户端调用 `agent_chat` 工具，传入消息和可选的 `thread_id`\n\n2. **输入验证**：服务器验证输入参数，确保符合工具契约\n\n3. **图执行**：请求被转发到编译好的 LangGraph，路由节点决定处理路径\n\n4. **智能体处理**：选定的智能体执行其特定逻辑\n\n5. **响应组装**：收集各智能体的回复和当前待办列表\n\n6. **结果返回**：将结构化响应返回给 MCP 客户端\n\n## 代码结构解析\n\n```\nsrc/mcp_langgraph_agents/\n├── graph.py      # 图定义、状态、路由逻辑、智能体行为\n├── server.py     # MCP 服务器实现、工具暴露\n└── __init__.py\n\nmain.py           # 入口点，可直接运行\npyproject.toml    # 包元数据、依赖、入口配置\n```\n\n### graph.py 的核心内容\n\n定义了图状态结构：\n\n```python\nclass AgentState:\n    messages: list          # 对话历史\n    todos: list            # 待办事项列表\n```\n\n路由逻辑基于简单的关键词匹配：\n- 包含 "todo" → Todo Agent\n- 包含 "why" 或 "because" → Analysis Agent\n- 其他 → Echo Agent\n\n这种设计展示了路由可以基于任意逻辑——从简单的规则到复杂的 LLM 判断。\n\n### server.py 的核心内容\n\n使用 FastMCP 快速搭建 MCP 服务器：\n\n```python\nmcp = FastMCP(\"langgraph-agents\")\n\n@mcp.tool()\ndef agent_chat(message: str, thread_id: str = \"default\") -> dict:\n    \"\"\"处理用户消息并返回智能体响应\"\"\"\n    # 验证、路由、执行、返回\n```\n\n## 工具契约示例\n\n`agent_chat` 工具的输入输出契约：\n\n**输入**：\n```json\n{\n  \"message\": \"总结为什么需要测试，并添加待办：稳定 CI\",\n  \"thread_id\": \"demo-thread\"\n}\n```\n\n**输出**：\n```json\n{\n  \"messages\": [...],      // 智能体回复列表\n  \"todos\": [...]          // 当前待办列表\n}\n```\n\n## 快速开始\n\n**环境要求**：Python 3.11+\n\n**安装依赖**：\n```bash\npip install -e .\n```\n\n**启动服务器**：\n```bash\n# 方式一：使用入口命令\nmcp-langgraph-server\n\n# 方式二：直接运行\npython main.py\n```\n\n**从 MCP 客户端调用**：\n配置客户端连接到服务器，然后调用 `agent_chat` 工具。\n\n## 设计亮点\n\n### 1. 标准化与灵活性的平衡\n\n通过 MCP 暴露标准化接口，内部使用 LangGraph 实现灵活编排。既保证了互操作性，又不牺牲实现自由度。\n\n### 2. 状态持久化的简洁实现\n\n利用 LangGraph 内置的 MemorySaver，无需额外数据库即可实现会话状态管理。对于生产环境，可以轻松替换为 Redis 或数据库存储。\n\n### 3. 确定性智能体设计\n\n示例中的智能体都是确定性的（基于规则而非 LLM），这使得系统行为可预测、易于测试。同时也展示了如何轻松集成 LLM 驱动的智能体。\n\n### 4. 模块化扩展\n\n添加新智能体只需：\n1. 在 graph.py 定义新节点函数\n2. 在路由逻辑中添加分支\n3. 重新编译图\n\n无需修改服务器层代码。\n\n## 应用场景\n\n这种架构适用于多种场景：\n\n**企业内部工具集成**：将现有的内部服务封装为 MCP 工具，通过标准化的 AI 界面暴露给员工。\n\n**多智能体协作系统**：不同专业领域的智能体协同完成复杂任务，如代码审查、文档生成、测试用例设计等。\n\n**对话式应用**：需要维护长期对话上下文的聊天机器人、客服系统等。\n\n**工作流自动化**：将业务工作流建模为图结构，通过 AI 智能体自动执行。\n\n## MCP 生态的意义\n\nMCP 协议的出现标志着 AI 集成进入标准化时代。对于开发者来说，这意味着：\n\n- **一次实现，到处使用**：实现一个 MCP 服务器，可被任何兼容客户端调用\n- **工具组合**：轻松组合多个 MCP 工具，构建强大的 AI 应用\n- **生态互通**：不同厂商、不同框架的工具可以无缝协作\n\n本项目是 MCP 与 LangGraph 结合的一个优秀示例，展示了标准化协议与灵活编排框架如何相辅相成。\n\n## 总结\n\nMCP-LangGraph Agents 项目为构建模块化、可扩展的多智能体系统提供了一个清晰的参考实现。它证明了 MCP 协议在实际应用中的可行性，以及 LangGraph 在复杂工作流编排中的强大能力。对于正在探索 AI 智能体架构的开发者来说，这是一个值得学习和借鉴的范例。
