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 通道上进行通信。

服务器信息