Moltis MCP 服务器

使用说明

项目简介

Moltis MCP 服务器是一个基于 Rust 的 MCP(Model Context Protocol)后端实现,能够托管与管理资源(Resources)、注册与执行工具(Tools)、以及定义/渲染 Prompts。服务器通过 JSON-RPC 与 MCP 客户端进行通信,提供会话管理、能力声明与跨传输协议的支持(如 STDIO、HTTP/SSE)。该实现还包含对工具执行 sandbox、模型探测、OAuth 授权等能力的完整支持,适合构建本地化的 LLM 上下文服务框架。

主要功能点

  • MCP 核心协议实现与 Handshake
    • 支持 initialize/initiation/initialized 流程,以及后续的 JSON-RPC 调用与通知
  • 资源、工具与提示的管理
    • 以模型上下文为核心,提供资源数据访问、工具执行以及提示模板的注册和渲染
  • 多传输协议
    • STDIO:通过子进程的标准输入输出进行通信
    • SSE/HTTP:提供基于 SSE 的远程通信能力
  • 安全与认证
    • 内置的授权模型(OAuth、API Key、本地等)及会话管理
    • 针对外部提供者的令牌存储、注册/缓存、以及回调处理
  • 服务端生命周期与注册表
    • 支持多 MCP 服务器的注册、启动、重启、禁用等管理
    • 针对服务器的工具列表、工具调用及模型探测提供统一接口
  • 扩展性
    • 通过插件化模型、工具桥接以及事件钩子实现可扩展的上下文服务

安装与运行

  • 本地构建与运行
    • 需安装 Rust 编译环境,克隆仓库后在项目根目录执行构建与运行
    • 通过 Cabal/Cargo 流程将生成可执行的 MCP 服务端组件
  • 主要依赖
    • Rust 生态栈,包含异步编程、JSON-RPC、HTTP/SSE、OAuth、沙箱执行等能力的实现
  • 运行方式
    • 通过配置文件中的 MCP 服务器注册信息,或动态在运行时通过 API 启动/停止 MCP 服务器
    • 支持在本地沙箱环境中以单 binary 形式部署,确保上下文数据的安全隔离

服务器配置(MCP 服务器对 MCP 客户端的配置要点)

说明:MCP 服务器配置用于 MCP 客户端建立连接所需的服务端描述。MCP 客户端需要知道启动命令(command)与参数(args),从而通过 STDIO 与服务器建立通信。配置以 JSON 形式描述,包含以下核心字段(示例语义):

  • server name:服务器名称,用于标识不同的 MCP 服务器
  • command:服务器可执行文件的路径
  • args:启动服务器时的参数数组
  • env:启动服务器时的环境变量
  • enabled:是否默认启用
  • transport:传输类型,stdio 或 sse
  • url:若传输为 SSE,则提供服务器的 SSE 入口地址
  • oauth:可选的 Open OAuthOverride,若使用自定义登录流可提供

示例要点(以文本描述形式给出字段含义,不直接给出代码块):

  • server name 对应一个唯一的字符串,例如“local-mcp”。
  • command 指向 MCP 服务器二进制文件,例如 /usr/local/bin/mcp-server。
  • args 是启动参数数组,如 ["--config", "/etc/moltis/mcp-server.json"]。
  • env 可以包含若干环境变量,例如 MOLTIS_LOG=info,以控制日志等级。
  • transport 可以设置为 stdio(stdio)或 SSE(sse)。
  • url 仅在 transport 为 sse 时需要,指向 SSE 的入口地址,例如 https://127.0.0.1:13131/sse。
  • oauth 是可选字段,若 MCP 服务器需要 OAuth,则提供 client 配置覆盖默认发现流程。

注:实际配置信息在仓库的 McpRegistry 结构中定义为一个包含 servers 的 JSON 对象,键为服务器名称,值为 McpServerConfig 结构。MCP 客户端使用该配置来启动并连接到对应的 MCP 服务器。

基本使用方法

  1. 规划 MCP 服务器清单
    • 为每个需要接入的 MCP 服务定义一个服务器条目,包含启动命令、启动参数、环境变量及传输模式(stdio 或 SSE)。
  2. 启动 MCP 服务器
    • 使用定义好的启动命令与参数,在受控沙箱环境中启动 MCP 服务端进程。
  3. 连接 MCP 客户端
    • 通过客户端配置,使用 STDIO 或 SSE 方式连接到对应的 MCP 服务器,执行初始化握手并获取工具模型。
  4. 使用工具与资源
    • 客户端获取服务器提供的工具列表,调用工具实现外部功能,或通过资源接口读取数据
  5. 监控与调试
    • 使用日志、指标(如存在时的指标收集)、以及测试用例进行验证和监控

主要性能与安全要点

  • 安全沙箱执行与容器化执行环境
  • OAuth、密码、API Key 的多重认证方案
  • 会话与令牌的持久化存储与按需刷新
  • 基于 JSON-RPC 的清晰接口定义,便于调试和 расширения

备注

  • MCP 服务器实现包含对初始化、工具列表、工具调用、服务器状态、注册等完整功能的实现,且具备对 SSE、Stdio 的传输支持,以及对多服务器管理的能力,符合 MCP 服务器端的核心要求。

服务器信息