项目简介
mcpd 是一个基于 MCP(Model Context Protocol)的服务器端实现框架,旨在向运行在本地或集成环境中的 MCP 客户端提供标准化的上下文信息、资源访问、工具注册/调用,以及提示模板等能力。通过 JSON-RPC 进行通信,支持多种传输方式(当前实现为标准输入/输出传输,未来可扩展到 SSE、WebSocket 等)。核心组件包括资源与工具的注册、路由调度、生命周期管理、健康探针、以及对接 MCP 网关的能力。
主要功能点
- 核心协议支持:处理 MCP 的 JSON-RPC 请求与响应,支持工具列表、工具调用、资源与提示相关操作等。
- 服务器端实现:包含会话管理、实例化与停止、协议握手、能力声明等完整生命周期逻辑。
- 工具聚合与路由:通过 ToolIndex 与 Router 将多服务器的工具统一暴露给 MCP 客户端,并支持粘性会话、并发控制等策略。
- 弹性调度与资源管理:内置调度器、探针、闲置回收等机制,实现按需启动、闲置回收、健康检查等能力。
- 网关与 RPC 桥接:gateway 模块提供对后端 MCP 服务器的统一接入点,支持跨进程/进程间通信及工具调用转发。
- 观测与指标:内置 Prometheus 指标与结构化日志实现,便于监控与调试。
- 配置与验证:YAML/配置文件加载、运行时热加载、以及配置校验,方便快速搭建多服务器场景。
安装步骤
- 获取代码:从 GitHub 拉取仓库代码。
- 构建后端组件:
- 使用 Go 1.24+ 版本构建后端核心组件(如 mcpd、mcpd-gateway、gRPC RPC 服务等)。
- 准备运行环境:
- 需要具备本地进程间通信能力的传输通道(当前示例为 stdio,未来可扩展为 SSE/WebSocket)。
- 配置 MCP Catalog(catalog.yaml/catalog.json)以定义需要启动的 MCP 服务器以及全局运行时配置。
- 启动顺序(一般推荐):
- 先启动 MCP 网关(可选,通过 gateway 将工具聚合暴露给 MCP 客户端)。
- 再启动核心 MCP 后端服务(mcpd),确保网关/核心可相互通信。
服务器配置(给 MCP 客户端的配置信息示例)
配置信息为 JSON 格式,描述需要启动的 MCP 服务器及全局运行参数,包含 server 名称、启动命令与参数等。以下示例仅供参考,请根据实际部署路径与需求调整。
{ "servers": [ { "name": "weather", "cmd": ["/usr/local/bin/weather-mcpd-server"], "idleSeconds": 60, "maxConcurrent": 2, "sticky": false, "persistent": false, "minReady": 0, "protocolVersion": "2025-11-25" }, { "name": "git-helper", "cmd": ["./git-helper"], "idleSeconds": 60, "maxConcurrent": 2, "sticky": false, "persistent": false, "minReady": 0, "protocolVersion": "2025-11-25" } ], "routeTimeoutSeconds": 10, "pingIntervalSeconds": 30, "toolRefreshSeconds": 60, "exposeTools": true, "toolNamespaceStrategy": "prefix", "rpc": { "listenAddress": "unix:///tmp/mcpd.sock", "maxRecvMsgSize": 16777216, "maxSendMsgSize": 16777216, "keepaliveTimeSeconds": 30, "keepaliveTimeoutSeconds": 10, "tls": { "enabled": false } } }
- 说明
- servers 数组定义需要启动的 MCP 服务器实例,每个对象包含名称、启动命令(cmd)及参数、以及运行策略(idleSeconds、maxConcurrent、sticky、persistent、minReady、protocolVersion)。
- routeTimeoutSeconds、pingIntervalSeconds、toolRefreshSeconds、exposeTools、toolNamespaceStrategy 为运行时全局参数。
- rpc 字段用于 RPC 传输层配置,默认为本地 UNIX 套接字通信,若需要网络通信请按实际环境设置监听地址、TLS 等参数。
基本使用方法
- 启动:执行 mcpd 的 serve 命令,加载配置并按需启动 MCP 服务器实例。
- 监控:通过内置的指标(Prometheus)与结构化日志进行运行时观测。
- 扩展:可通过 gateway 聚合工具、通过 ToolIndex 动态暴露 downstream 服务器的工具集,提升跨服务器协作能力。
- 流程回放:客户端通过 MCP 协议的请求向 Weather 等服务器获取工具列表、调用工具、读取资源、以及渲染 Prompts 等能力。
信息
分类
AI与计算