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 方法,并将结果返回给客户端。
-
安装与运行步骤
- 获取源码,确保已安装 Meteor 环境。
- 将代码部署到 Meteor 应用中(该仓库的 Meteor 包会被嵌入到应用中并通过 /mcp 暴露工具)。
- 运行 Meteor 应用:
- 典型启动命令(示例,需按你的环境调整): npx meteor@latest
- 也可在已有 Meteor 项目中通过安装本包并按示例配置来启动 MCP 服务。
- 使用 MCP 客户端连接:
- MCP 服务器地址:http(s)://你的服务器地址/mcp
- 如需鉴权,在请求头中添加 Bearer token(若启用 apiKey 认证)。
- 快速验证(示例性应用):
- 应用内置的 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 服务的接入。