Agento MCP 后端服务器实现
说明
-
项目简介
- 该仓库实现了一个面向 MCP 的后端服务器架构,核心目标是为 LLM 客户端提供上下文资源、工具执行能力以及可自定义的提示模板渲染等 MCP 相关能力,并通过 JSON-RPC 风格的通信在客户端与服务端之间进行交互。
-
主要功能点
- MCP 注册与管理
- 能加载本地注册表(MCP Registry),同时支持将外部 MCP 服务器以多种传输方式接入后端。
- 内置对本地工具的支持(in-process MCP),以及对外部 MCP 服务器的注册和筛选。
- 传输协议支持
- 支持 stdio(子进程方式运行 MCP)、streamable_http(HTTP 流式传输)以及 sse(Server-Sent Events)等传输模式。
- 会话与任务管理
- 提供会话、任务调度、日志与指标监控等能力,方便追踪和分析。
- 安全与环境隔离
- 通过环境变量进行配置锁定、OpenTelemetry 观测等,便于在生产环境中进行安全与性能监控。
- 资源与工具整合
- 具备资源/代理配置、工具权限、模型选项等灵活控制,支持内置工具、本地工具、以及外部 MCP 的混合使用。
- MCP 注册与管理
-
安装与运行
- 需要先搭建 Claude Code CLI 环境(本项目通过 Claude Code CLI 作为后端执行主体,若希望使用 Anthropic 直接模式可配置环境变量)。
- 构建方式通常为根目录下的构建脚本或 make 命令,随后启动 Web 服务以提供 UI 和 API(默认端口 8990,可通过配置修改)。
- MCP 客户端要接入 MCP 服务器,需要提供服务器注册信息(服务器名称、传输方式、启动命令及参数等),以便 Claude/Agent 可以按需调用。
-
服务器配置(MCP 客户端需要的示例信息)
- MCP 客户端将使用服务器注册信息来知道如何连接到 MCP 服务器。以下为用于说明的 JSON 形式的示例字段,实际值请依据具体 MCP 服务器的实现方式配置:
- 示例 1(本地进程工具服务器,stdio 传输) { "server_name": "local-tools", "transport": "stdio", "command": "node", "args": ["path/to/mcp-server.js", "--port", "12345"], "env": { "ENV_VAR_EXAMPLE": "value" } }
- 示例 2(HTTP 传输,streamable_http) { "server_name": "remote-http", "transport": "streamable_http", "url": "http://localhost:3000/mcp", "headers": { "Authorization": "Bearer token" } }
- 示例 3(SSE 传输,sse) { "server_name": "remote-sse", "transport": "sse", "url": "http://localhost:4000/sse", "headers": { "X-Custom-Header": "value" } }
-
基本使用方法
- 运行与接入
- 在本地配置 MCP 注册表(mcps.yaml)或通过管理界面配置需要的 MCP 服务器信息(名称、传输方式、启动命令及参数等)。
- 启动 Agento 的后端服务(web UI + API),默认端口 8990。
- 在 Agent/CLI 侧或 UI 的“Integrations / MCP 注册”中将上述 MCP 服务器注册到你的环境中,确保客户端能够通过 MCP 服务器进行工具调用。
- 在代理/Agent 配置中按需要赋予可访问的工具,MCP 服务器将根据注册信息暴露相应的工具入口。
- 运行时体验
- 通过 Agento 的 UI 或命令行 CLI 与 MCP 服务器进行交互,工具调用会通过 MCP 服务器触发,结果以结构化的 JSON 形式返回。
- 日志与监控
- 系统日志、每个会话日志以及 OpenTelemetry 指标将帮助你监控请求延迟、吞吐量和错误情况。
- 运行与接入
-
重要注意
- 该实现具备内置本地 MCP 服务(in-process),以及对外部 MCP 的注册和管理能力,便于在一个平台内混合多种工具服务器。
- MCP 的具体请求/响应格式遵循 Model Context Protocol 的标准,结合 Claude Code CLI 的执行上下文进行实际工具调用。