NodeSpace MCP Server(核心实现)
- 项目简介
- NodeSpace 提供一个 MCP 服务端实现,核心包含对 Resource、Tools、Prompts 的管理与暴露,以及与 AI 客户端的交互能力。代码覆盖了 MCP 请求/响应的解析、会话状态管理、以及对 HTTP、StdIO 传输的支持。
- 主要功能点
- MCP 请求/响应处理:按照 JSON-RPC 2.0 设计,支持初始化握手、工具调用、资源与关系管理等请求路径。
- 传输抽象与多协议支持:内置对 StdIO 传输和 HTTP/SSE 传输的支持,能够在不同客户端场景下工作。
- 会话管理与能力声明:维护会话初始化状态,提供初始化后可执行的操作集合,并对未初始化的请求进行合理的错误提示。
- 资源、工具与关系管理的后端实现:通过 NodeService、NodeEmbeddingService 等核心服务,驱动资源管理、工具执行以及关系/模式相关操作。
- 安全与扩展性:设计为可集成到现有应用中,支持可选回调、可扩展的工具集合和多传输协议。
- 安装步骤
- 克隆仓库:获取包含 MCP 服务实现的核心代码。
- 构建依赖:在合适的工作区中使用 Rust 构建工具编译核心库(示例常用命令为在包含该库的工作区中执行构建指令)。
- 启动 MCP 服务器:需要一个可执行的入口来启动 MCP 服务。仓库提供了运行接口(run_mcp_server / run_mcp_server_with_callback),通常通过在应用入口处初始化 NodeService、NodeEmbeddingService,并调用相应的函数来启动服务。不同项目对启动方式可能略有差异,但核心思路是一致的:加载服务、绑定传输、启动事件循环。
- 连接客户端:MCP 客户端(如 Claude/Cursor 等)通过本地端口的 HTTP 端点或标准输入输出与服务对接(具体端口/传输方式可配置)。
- 服务器配置(供 MCP 客户端参考的启动信息)
- server_name: nodespace-core-http-mcp
- command: cargo
- args: ["run", "-p", "nodespace-core", "--", "--transport", "http", "--port", "3100"]
- 注释:以上为示例配置,实际可执行入口可能因实现方式不同而有所差异。关键点是提供一个可以启动 MCP 服务的命令,以及传输模式(HTTP/StdIO),端口号等参数,客户端据此建立连接并发送 JSON-RPC 请求。
- 另一种可选启动方式(若集成到一个宿主应用中):在应用的入口代码中构造 McpServices(包含 NodeService、NodeEmbeddingService)并调用 run_mcp_server/ run_mcp_server_with_callback,传入所需传输配置。
- 基本使用方法
- 连接初始化:客户端发送 initialize 请求,服务器返回 capabilities,并在后续请求中体现初始化状态。
- 调用资源与工具:客户端通过相应的 method(如 tools/list、tools/call、创建或查询资源、调用工具等)进行交互,服务器返回 JSON-RPC 风格的响应。
- 会话与安全:服务对会话进行初始化握手验证,未初始化状态下拒绝执行需要权限的操作(需要初始化后才能执行大多数变更请求)。
- 传输模式切换:根据客户端能力,支持 StdIO、HTTP/ SSE 等传输,底层处理逻辑在 MCP 服务端保持一致,客户端只需按端点及传输方式进行通信即可。
- 运行与集成要点
- MCP 服务端设计为可在本地环境中嵌入式运行,便于在离线或本地开发场景中为 LLM 提供上下文与能力。
- 客户端配置应明确指定服务名称与启动方式,确保在本地端口或 STDIN/STDOUT 通道上进行通信。