A2A MCP LangGraph代理本地
一个完全本地的开源代理人工智能系统,结合了 LangGraph 对于代理开发, 奥拉玛 对于LLM服务,模型上下文协议(主控程序),以及代理人对代理人(A2A)通信——无需订阅,无需云API,完全控制。
🎯 这有什么作用
该项目展示了一个完全在您的机器上运行的完整代理AI堆栈:
- 🧭 LangGraph 编排多代理工作流
- 🔌 主控程序 提供标准化的工具访问
- 💬 A2A 启用代理到代理的通信
- ⚙️ 奥拉玛 为本地LLM提供推理服务
使用案例: 构建研究助手、自动化工作流程、多智能体系统或实验智能体模式-所有这些都无需外部API成本和完全控制。
📖 想了解架构和概念吗? 阅读 完整博客文章
______________________________________________________________________
🏗️ 架构概述
graph TB
User[👤 User]
Client[client.py
A2A Client]
subgraph A2A_Stack["🌐 A2A Agent Stack"]
Starlette[a2a_1_starlette.py
HTTP Server Starlette
• REST API endpoints
• A2A protocol]
Executor[a2a_2_executor.py
Task Execution Engine
• Task lifecycle
• Error handling]
Agent[a2a_3_agent.py
LangGraph Agent Core
• Agent reasoning
• Ollama LLM backend
• MCP client]
end
subgraph MCP_Stack["🔌 MCP Tool Stack"]
MCP[mcp_server.py
MCP Protocol Layer
• Standardizes tool access
• Formats responses
• Tool discovery]
subgraph Tools["⚙️ Actual Tools"]
DDG[🔍 DuckDuckGo
Search]
ArXiv[📚 arXiv
Search]
Wiki[📖 Wikipedia
Search]
end
end
subgraph Ollama["🧠 Ollama"]
LLM[Local LLM Server]
Models["Models:
🔷 Mistral
🦙 Llama 3
⚡ Qwen
💎 Gemma
🤖 Gpt-oss"]
end
LLM -->|serves| Models
User -->|Terminal Request| Client
Client ==>|POST /send_message| Starlette
Starlette -->|wraps| Executor
Executor -->|wraps| Agent
Agent -->|connects to| MCP
Agent -.->|reasoning| LLM
MCP -->|wraps| Tools
MCP -->|executes| DDG
MCP -->|executes| ArXiv
MCP -->|executes| Wiki
classDef userStyle fill:#e8eaf6,stroke:#5c6bc0,stroke-width:2px
classDef a2aBox fill:#bbdefb,stroke:#1976d2,stroke-width:2px
classDef mcpBox fill:#c8e6c9,stroke:#388e3c,stroke-width:2px
classDef ollamaBox fill:#f8bbd0,stroke:#c2185b,stroke-width:2px
classDef subgraphStyle fill:#f5f5f5,stroke:#999,stroke-width:2px
class User,Client userStyle
class Starlette,Executor,Agent a2aBox
class MCP,DDG,ArXiv,Wiki mcpBox
class LLM,Models ollamaBox
class A2A_Stack,MCP_Stack,Tools,Ollama subgraphStyle阅读更多: 带有详细架构说明的博客文章)
______________________________________________________________________
🚀 快速开始
先决条件
- Python 3.10+
- 8GB+内存 (建议较大型号使用16GB)
- 子速率复用器 (用于运行多个服务)
- macOS、Linux或Windows与WSL
虽然代码可以完全在CPU中运行,但建议使用某种GPU加速器以获得更好的体验(减少延迟)。该实施方案已经过商业级解决方案的测试;M1、M3、RTX。
步骤1:安装依赖项
安装tmux:
macOS:
brew install tmuxUbuntu/Debian:
sudo apt-get install tmux安装Ollama:
curl -fsSL https://ollama.com/install.sh | sh启动Ollama并下载模型:
ollama serve
ollama pull mistral-nemo # you can chose any open model available in Ollama.
#if you change the model, make sure to update it accordingly in line 39 on src/a2a_3_agent.py步骤2:克隆和设置
git clone https://github.com/JuanMaParraU/a2a-mcp-langgraph-agent-local.git
cd a2a-mcp-langgraph-agent-local设置Python环境:
使用 uv (推荐):
uv sync
source .venv/bin/activate使用标准venv:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt步骤3:启动系统
chmod +x start_agents.sh
./start_agents.sh这将在单独的tmux窗口中启动三个服务:
- 窗口0(MCP): MCP服务器提供工具
- 窗口1(代理): 具有A2A+LangGraph的代理服务器
- 窗口2(客户端): 用于发送任务的交互式客户端
# Flow
┌───────────────────────────────────────────────────────────────────────────────────────────┐
│ [ Client (User Input) ] --A2A--> [ Agent ] --MCP--> [ MCP Server ] --> [ Tools / APIs ] │
└───────────────────────────────────────────────────────────────────────────────────────────┘你应该看到这样的东西:
现在,您可以通过A2A开始与远程MCP嵌入式代理聊天。要开始,请尝试以下提示:
(这将通过A2A检索代理技能)
agent card What tools are available to you?Use wikipedia to explain Transformer Models architectureFind the latest papers on Large Language Models______________________________________________________________________
🎮 管理Tmux会话
如果您是tmux的新手,请快速查看此内容 tmux简介 开始吧。它涵盖了创建、附加和管理会话的基础知识。
在Windows之间切换
Ctrl+b then 0 → MCP Server
Ctrl+b then 1 → Agent Server
Ctrl+b then 2 → Client或循环通过:
Ctrl+b then n → Next window
Ctrl+b then p → Previous window分离并重新连接
分离 (在后台运行):
Ctrl+b then d重新连接:
tmux attach -t agentic-ai停止系统
从任何窗口按 Ctrl + c 然后
tmux kill-server或
tmux kill-session -t agentic-ai______________________________________________________________________
📁 深入探究
有关详细的文件说明、自定义选项和示例,请参阅 src/文件夹文档.
______________________________________________________________________
🐛 故障排除
Ollama连接问题
错误: ConnectionRefusedError: [Errno 61] Connection refused
解决方案: 确保Ollama正在跑步:
ollama serve未找到型号
错误: Model 'mistral-nemo' not found
解决方案:
ollama pull mistral-nemo导入错误
解决方案: 确保虚拟环境已激活(uv或venv):
source .venv/bin/activate
pip install -r requirements.txttmux会话已存在
解决方案:
tmux kill-session -t agentic-ai
./start_agents_tmux.sh______________________________________________________________________
🤝 贡献
欢迎投稿!感兴趣的领域:
- 🔭 观测工具 --可视化代理图和状态
- 🧩 高级A2A模式 --协商、共识协议
- ⚙️ 新的MCP工具 -数据库访问,API集成
- 🧠 模型基准 --性能比较
- 📚 文档 --教程、示例、解释
如何做出贡献:
- 分叉存储库
- 创建要素分支
- 进行更改
- 提交拉取请求
问题或想法? 打开一个问题
______________________________________________________________________
📖 了解更多
- 博客文章: 构建完全本地化的代理人工智能
- 源代码详细信息: src/文件夹文档
- LangGraph文档:
- MCP规范: 人类模型上下文协议
- A2A规格: 插入链接
- 奥拉马: 奥拉玛
______________________________________________________________________
待办事项
- 远程定义模型:将模型设置为可更新的变量。允许用户定义要对话的模型。
- 动态代理技能检索和定义:此任务旨在使代理能够通过MCP查询动态访问和定义他们的技能,从而在处理各种任务时具有更大的灵活性和适应性。(问题)
- 多代理工作流:实现一个系统,通过定义和管理多个代理之间的交互,使多个代理能够协作并执行复杂的任务。这将允许创建更复杂的人工智能解决方案,利用每个代理的独特功能。(问题)
- 多步骤工作流:通过将复杂任务分解为更小、可管理的子任务,并按照适当的顺序编排其执行,为代理开发一种执行多步骤工作流的机制。这将提高人工智能系统处理复杂问题的效率和有效性。(问题)
- 本地工具定义:创建一个本地工具存储库,可以轻松集成到代理工作流中,进一步扩展其功能,而无需依赖外部API或服务。这将增强我们的人工智能系统提供的自主性和控制力。(问题)
______________________________________________________________________
📄 许可证
MIT许可证-请参阅 许可证 详细信息文件
______________________________________________________________________
问题?反馈? 打开一个问题或联系我们——我很想听听你用这个构建了什么!
*我们对可访问的开源代理人工智能基础设施的探索的一部分。*
