项目简介

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与计算