Agently-MCP 服务器实现
使用说明(Markdown 格式):
- 项目简介
- Agently 提供一个完整的 MCP 服务器实现,用以向 MCP 客户端暴露资源、工具、提示模板等能力,支持会话管理、能力声明以及多种传输协议(如 Stdio、SSE、WebSocket)的通信形式。
- 主要功能点
- MCP 服务端核心:实现 MCP 服务器端,处理客户端的资源、工具、提示等请求,返回标准的 JSON-RPC/响应结构。
- 会话与认证:内置会话管理和授权策略,通过 MCP 客户端在后端建立认证上下文,支持 Bearer、Cookie 等认证模式的协同工作。
- 工具与资源托管:提供资源发现、工具注册/执行以及对 prompt 模板的管理与渲染能力,便于 LLM 调用外部工具与获取上下文。
- 多传输协议支持:通过配置可使用 stdio、SSE、HTTP streaming 等传输方式,与客户端建立通信。
- 工作流与 elicitations:内置 elicitations 路由与对话上下文持久化,支持对话全局上下文的可追溯性。
- 与 Agently 的整合:与 Agently 的工作流、代理、对话、MCP 客户端等模块深度对接,确保 UI/CLI 端一致的 MCP 行为。
- 安装与运行步骤
- 构建
- 使用 Go 构建本仓库中的服务可执行文件(默认包含 MCP 服务器实现)。
- 启动 MCP 服务器(示例)
- 运行 agently 的服务器模式以启动 HTTP 服务,默认监听端口8080,提供 MCP 相关的接口。
- 启动 MCP 客户端
- MCP 客户端需要配置启动信息以连接 MCP 服务器(客户端配置见下方“服务器配置”部分的 JSON 示例)。
- 构建
- 服务器配置(MCP 客户端需要的配置,示例 JSON)
服务器名称: agently-local
服务器启动命令与参数示例(JSON,供 MCP 客户端在工作区中记录,用于连接 MCP 服务器;客户端本身不需要理解或执行该配置,只需知道如何把信息放到工作区以便与 MCP 服务器建立连接):
{
"server": "agently-local",
"transport": {
"type": "stdio",
"clientTransportStdio": {
"command": "agently",
"arguments": ["serve"]
}
}
}
说明:
- server 字段是 MCP 客户端端用来识别服务器的名称。
- transport.type 指定传输机制为标准输入输出(stdio),即 MCP 客户端通过进程间通信与服务器交互。
- clientTransportStdio.command 为服务器的启动命令(此处对应仓库中实现的 agently 可执行文件名,具体按实际部署调整)。
- clientTransportStdio.arguments 指定服务器启动所需的参数(如 "serve" 表示以服务模式启动)。
- 基本使用方法
- 在服务器上启动 MCP 服务端(执行 agently serve,监听默认端口8080,或通过 -addr 指定端口)。
- 在 MCP 客户端配置中记录服务器信息(如上面的 JSON 示例),以便建立通信连接。
- MCP 客户端可通过定义的工具/资源调用、资源查询、PROMPT 渲染等功能与服务器交互,获取上下文信息与执行结果。
- 如需进一步与 Agently 的其他模块集成,可以通过提供的配置及插件将工具、资源、Prompts 等对接上去。
- 备注
- 本实现包含可运行的服务器端代码,且具备明确的 MCP 功能模块:资源、工具、Prompts 以及会话与鉴权管理;非单纯示例或测试代码。