项目简介
AIRA Hub & Agent Manager 是一个模块化系统,旨在帮助 AI 助手(如 Claude Desktop)发现并利用本地或远程托管的工具。它由两个主要部分组成:
- AIRA Hub: 中央注册中心和代理服务。它跟踪所有已注册的 Agent 及其提供的工具、资源和 Prompt,并为连接的客户端(如 LLM)提供发现服务和工具调用代理。
- Agent Manager: 一个本地服务,用于启动、管理基于 Stdio 协议的本地 MCP 服务器进程,并将它们作为 Agent 注册到 AIRA Hub。它还充当这些本地服务器的 MCP 请求代理。
通过这种架构,LLM 客户端只需连接到 AIRA Hub,即可发现并调用由本地 Agent Manager 管理的本地工具,或者由其他远程 Agent 直接注册到 Hub 的工具。
主要功能点
- AI Agent 注册与发现: Agent 可以向 Hub 注册自己及其能力(MCP 工具、A2A 技能等),客户端可以查询 Hub 来发现可用的 Agent 和工具。
- MCP 工具代理: Hub 接收来自客户端的 MCP 工具调用请求,查找提供该工具的 Agent,并将请求路由或代理到目标 Agent 的 MCP 端点(包括通过 Agent Manager 代理到本地 Stdio 进程)。
- 本地 Stdio MCP 服务器管理: Agent Manager 可以根据配置文件启动和监控本地 Stdio MCP 服务器进程,使其成为 LLM 可用的 Agent。
- A2A 协议集成: Hub 支持 A2A 协议的发现功能,并能将特定配置的 MCP 工具调用桥接(翻译)为 A2A 任务发送给支持 A2A 的 Agent。
- 状态监控与心跳: Agent Manager 会监控本地 Stdio 进程的状态,Agent 和 Agent Manager 都会向 Hub 发送心跳,Hub 跟踪 Agent 的在线状态。
安装步骤
-
安装前提:
- Python 3.8+
- Node.js & npm/npx (如果需要运行基于 Node.js 的本地 Stdio MCP 服务器)
- MongoDB (本地安装或使用云服务,如 MongoDB Atlas)
- Tunneling 服务 (如果 AIRA Hub 运行在远程,而 Agent Manager 和本地 MCP 服务器运行在本地内网,需要使用 ngrok 或 Cloudflare Tunnel 等将本地 Agent Manager 的端口暴露给公网)
-
克隆仓库:
git clone https://github.com/IhateCreatingUserNames2/AiraHub2.git cd AiraHub2 -
设置 AIRA Hub:
- 安装 Python 依赖:
pip install fastapi uvicorn motor pydantic python-dotenv httpx - 创建 '.env' 文件配置 MongoDB 连接 URL。示例 ('.' 开头的文件可能需要特殊命令显示):
请将 '<用户名>'、'<密码>'、'<集群名称>' 和 '<数据库名>' 替换为您的 MongoDB 连接信息。MONGODB_URL=mongodb+srv://<用户名>:<密码>@<集群名称>.mongodb.net/<数据库名>?retryWrites=true&w=majority - 运行 Hub 服务器:
python aira_hub.py
- 安装 Python 依赖:
-
设置 Agent Manager:
- 安装 Python 依赖 (如果与 Hub 在不同环境中):
pip install fastapi uvicorn pydantic python-dotenv httpx - 创建 '.env' 文件配置 AIRA Hub 的 URL 和 Agent Manager 的公共可访问 URL。示例:
AIRA_HUB_URL=https://your-aira-hub.example.com # 替换为你的 AIRA Hub 公网 URL AGENT_MANAGER_PUBLIC_URL=https://your-tunnel-url.ngrok-free.app # 替换为你的内网穿透后的 Agent Manager 公网 URL AGENT_MANAGER_PORT=9010 # 可选,如果需要指定 Agent Manager 监听端口 - 创建 'mcp_servers.json' 文件配置要管理的本地 MCP 服务器。示例:
将 'command' 字段替换为你的本地 MCP 服务器的实际启动命令和参数。'aira_hub_registration.base_url' 是 Agent Manager 将自己注册到 Hub 时使用的标识符,客户端通常不会直接使用它,但需要保证唯一性。[ { "id": "my-local-stdio-server", "name": "我的本地工具服务器", "enabled": true, "connection": { "type": "stdio", "command": ["<本地MCP服务器的启动命令>", "<参数1>", "<参数2>", "..."] // 例如: ["npx.cmd", "-y", "@modelcontextprotocol/server-sequential-thinking"] // 或: ["python", "path/to/your/mcp_stdio_server.py"] }, "aira_hub_registration": { "base_url": "local://agent-manager/my-local-stdio-server", // 注册到 Hub 的唯一标识 URL (建议使用 local://scheme) "description": "运行在本地 Agent Manager 下的工具", "tags": ["本地", "常用工具"], "category": "实用工具", "provider_name": "AgentManager/我的电脑" // 标识提供者 } } // 可以添加更多本地 Stdio 或远程 HTTP/SSE MCP 服务器配置 ] - 运行 Agent Manager 服务器:
python agent_manager.py
- 安装 Python 依赖 (如果与 Hub 在不同环境中):
-
设置 Tunneling (如果需要):
- 根据你选择的 Tunneling 服务(如 ngrok),启动一个隧道指向 Agent Manager 监听的端口(默认为 9010)。
- 示例 (ngrok): 'ngrok http 9010'
- 将 Tunneling 服务提供的公共 URL 填入 Agent Manager 的 '.env' 文件中的 'AGENT_MANAGER_PUBLIC_URL'。
服务器配置(MCP 客户端视角)
LLM 客户端(如支持 MCP 的 Claude Desktop)需要配置连接到 AIRA Hub 的 主 MCP 端点。通常这是 Hub 的 '/mcp/stream' 或 '/mcp' HTTP 端点。
以下是 MCP 客户端配置示例(具体格式取决于客户端应用,此处以 README 中的 Claude Desktop 格式为例):
{ "mcpServers": { "my-aira-hub": { "url": "https://your-aira-hub.example.com/mcp/stream" // 替换为你的 AIRA Hub 的公共 URL } // 可以配置多个 Hub } }
客户端连接到 Hub 后,会通过 MCP 协议自动进行初始化 ('initialize')、列出工具 ('tools/list') 等操作,并发现 Agent Manager 注册的或 Hub 直接注册的 Agent 提供的工具。
基本使用方法
- 确保 MongoDB 实例正在运行。
- 启动 AIRA Hub ('python aira_hub.py')。
- 如果你的 Agent Manager 运行在内网且 Hub 在公网,启动 Tunneling 服务并将公共 URL 配置到 Agent Manager 的 '.env' 文件。
- 启动 Agent Manager ('python agent_manager.py')。Agent Manager 会根据 'mcp_servers.json' 启动本地 Stdio 服务器并将其注册到 Hub。
- 配置你的 MCP 客户端(如 Claude Desktop)连接到 AIRA Hub 的 '/mcp/stream' 端点。
- 在 MCP 客户端中,你应该能够发现由 Agent Manager 托管的本地工具以及 Hub 中注册的其他远程工具。
信息
分类
AI与计算