Meteor Wormhole MCP 服务端实现

使用说明(简明、可操作)

  • 项目简介

    • 该仓库实现了一个 MCP 服务器端的功能模块,核心思想是将 Meteor 应用中的 Meteor.methods 自动或按需暴露为 MCP 工具(tools),并通过一个流式的 HTTP 服务接口(/mcp)对外提供能力,允许外部 AI 客户端调用这些工具完成任务。
    • 服务器通过 MCP SDK 提供的 MCP 服务端能力注册工具、接收请求、执行 Meteor 方法并返回结果,支持方法参数的 JSON Schema 验证,以及对外部传输进行流式传输。
  • 主要功能点

    • 全量暴露 vs 选择暴露:在 all 模式下会拦截 Meteor.methods 的注册并将其暴露为 MCP 工具;在 opt-in 模式下通过 Wormhole.expose 手动暴露方法及对应元数据。
    • Streamable HTTP MCP 服务器:在 Meteor 应用中以流式 HTTP 方式提供 MCP 服务,默认路径为 /mcp(可配置)。
    • 安全与鉴权:可开启 API Key Bearer 认证,未提供正确认证将返回未授权错误。
    • 参数校验与工具描述:支持 JSON Schema 或 Zod 兼容的输入校验;工具描述、输入模式等元数据对 AI 客户端可用来发现和调用工具。
    • 内部方法调用:暴露的工具会在被调用时通过 Meteor.callAsync 调用对应的 Meteor 方法,并将结果返回给客户端。
  • 安装与运行步骤

    1. 获取源码,确保已安装 Meteor 环境。
    2. 将代码部署到 Meteor 应用中(该仓库的 Meteor 包会被嵌入到应用中并通过 /mcp 暴露工具)。
    3. 运行 Meteor 应用:
      • 典型启动命令(示例,需按你的环境调整): npx meteor@latest
      • 也可在已有 Meteor 项目中通过安装本包并按示例配置来启动 MCP 服务。
    4. 使用 MCP 客户端连接:
      • MCP 服务器地址:http(s)://你的服务器地址/mcp
      • 如需鉴权,在请求头中添加 Bearer token(若启用 apiKey 认证)。
    5. 快速验证(示例性应用):
      • 应用内置的 test-app 演示了 all-in 模式暴露所有方法、以及 opt-in 暴露的用法,结合 test-client 提供了端到端测试场景。
  • 服务器配置(JSON 配置示例,供 MCP 客户端在连接时读取该信息以建立会话)

    • serverName: meteor-wormhole
    • command: npx meteor@latest
    • args: METEOR_PACKAGE_DIRS=../../packages(用于本仓库的 Meteor 包开发环境配置,确保包能被 Meteor 应用正确解析与加载)
    • 说明:MCP 客户端需要的仅是服务器的启动信息以便建立连接;实际端口和路径由 Meteor 应用的运行环境决定。本仓库中 MCP 服务默认暴露在 /mcp 路径下,端口依应用启动的端口确定。
  • 基本使用方法

    • 在应用中初始化暴露方式:
      • all 模式:Wormhole.init({ mode: 'all', path: '/mcp' });
      • opt-in 模式:先 Wormhole.init({ mode: 'opt-in', path: '/mcp' });随后使用 Wormhole.expose(...) 显式暴露方法及输入描述。
    • 暴露方法示例(应用端口于应用代码中实现):
      • 使用 Wormhole.expose('todos.add', { description: 'Add a new todo item', inputSchema: {...} });
    • MCP 客户端接入后即可通过 MCP 的工具调用机制对暴露的方法进行调用,工具名称会经过 sanitize 处理(点替换成下划线等),输入参数通过配置的 inputSchema 进行校验。
    • 服务器支持多会话,默认在同一 MCP 端点下管理多个会话,外部客户端可通过会话保持与服务器的持续交互。
  • 重要信息与注意点

    • 该实现包含服务器端逻辑、工具注册、请求处理、与 Meteor 的方法调用等完整功能,非仅客户端示例。
    • 代码中还包含用于测试的示例应用与集成测试,但核心逻辑和功能实现是服务器端的 MCP 服务能力。
    • 如需扩展,请参考 lib/mcp-bridge.js、lib/wormhole.js、lib/registry.js、lib/hooks.js 等文件中的实现细节。
  • 运行与部署要点

    • 该仓库使用 Meteor 及 MCP SDK,部署时需将该包集成到一个 Meteor 应用中,并确保应用能够通过 /mcp 暴露 MCP 服务。
    • 若使用 Portkey/OpenAI 等外部服务,请在服务器端按需配置 provider,或者通过端到端的工具调用演示来实现对外部 AI 服务的接入。

服务器信息