Token导航 LogoToken导航TokenDH.com
Minimal MCP Server Rocketchat logo
开发工具stdio官方级别未说明来源级核验

Minimal MCP Server Rocketchat

MCP Server

tsx

从Rocket.Chat OpenAPI规范中提取最小功能集并生成生产就绪的MCP服务器,包含自动化测试套件。

工具数

2

提示词数

0

GitHub Stars

0

资源数

0
API集成测试自动化TypeScript代码生成JavaScript

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Unknown-guy-369

提供方

Unknown-guy-369

最后核验

2026/5/17 20:21

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx tsx src/index.ts

详细介绍

🚀 火箭。聊天最小MCP生成器

谷歌代码之夏2026——火箭。聊天 一个专门的MCP服务器生成器,通过手术从官方Rocket中提取功能。聊天OpenAPI规范和脚手架最小化,生产就绪的MCP服务器——配备自动化测试套件。

](https://nodejs.org/) ![TypeScript](https://www.typescriptlang.org/) ![MCP](https://modelcontextprotocol.io/) ![License: MIT](https://opensource.org/licenses/MIT)

______________________________________________________________________

📋 目录

______________________________________________________________________

🧩 问题陈述

当AI代理需要与Rocket等大型REST API交互时。聊天(12个以上域中的数百个端点),他们面临两个关键瓶颈:

  1. 上下文块 --将整个OpenAPI规范输入LLM会耗尽代币预算,导致工具调用准确性差。
  2. 终点幻觉 -在没有基础的情况下,LLM发明了不存在的API路径,从而导致生产代理循环中的静默故障。
  3. 零测试覆盖率 --手动搭建的MCP服务器很少包含测试套件,这使得在自动化工作流程中无法进行回归检测。

💡 解决方案概述

最小MCP发生器 通过a解决所有三个问题 双工具架构 它强制执行生成前发现工作流:

┌─────────────────────────────────────────────────────────┐
│                   AI Agent / LLM                        │
│   "I need to delete messages and manage roles"          │
└────────────────────┬────────────────────────────────────┘
                     │
        ┌────────────▼────────────┐
        │   Tool 1: explore_rc_api │  ─── Discovers real endpoints
        │   (TOON-compressed)      │      from OpenAPI YAML specs
        └────────────┬────────────┘
                     │  Returns TOON summaries
        ┌────────────▼────────────────┐
        │  Tool 2: scaffold_mcp_server │  ─── Generates full project
        │  (Template-based)            │      with tests & client
        └────────────┬────────────────┘
                     │
        ┌────────────▼────────────────┐
        │  Self-Testing Guarantee      │  ─── npm install → tsc → vitest
        │  (Automated Verification)    │
        └─────────────────────────────┘

______________________________________________________________________

✨ 主要特点

特性描述
手术摘除从不生成完整的API包装。识别 *最小* 用户工作流的端点集。
TOON压缩将冗长的JSON模式简化为超密集的简写,节省 代币预算的约75%.
双工具架构将发现与生成分开,以消除终点幻觉。
零回归测试每个生成的工具都包含一个相应的Vitest套件,其中包含模拟的HTTP客户端。
上下文保护生成客户端功能 8KB有效载荷截断429指数回退.
自检保证后一代挂钩自动运行 npm installtsc --noEmitvitest run.

______________________________________________________________________

🏗 建筑

graph TD
    A["manifest.json - Domain Registry"] -->|Domain lookup| B["Parser - src/parser.ts"]
    C["RC OpenAPI YAMLs - GitHub Raw"] -->|HTTP fetch| B
    B -->|TOON summaries| D["Tool 1: explore_rc_api"]
    B -->|Endpoint objects| E["Endpoint Cache - In-Memory Map"]
    E -->|Selected endpoints| F["Tool 2: scaffold_mcp_server"]
    F -->|Endpoints + projectName| G["Generator - src/generator.ts"]
    H["Handlebars Templates"] -->|Compiled| G
    G -->|Writes files| I["Generated Project"]
    G -->|npm install + tsc + vitest| J["Self-Testing Report"]

    style A fill:#1a1a2e,stroke:#e94560,color:#fff
    style B fill:#16213e,stroke:#0f3460,color:#fff
    style D fill:#0f3460,stroke:#53354a,color:#fff
    style F fill:#0f3460,stroke:#53354a,color:#fff
    style G fill:#533483,stroke:#e94560,color:#fff
    style I fill:#2b2d42,stroke:#8d99ae,color:#fff
    style J fill:#06d6a0,stroke:#073b4c,color:#fff

核心模块

模块文件责任
MCP服务器src/index.ts通过MCP SDK公开双工具架构 StdioServerTransport。管理工具调用之间的内存端点缓存。
解析器src/parser.ts火箭。从GitHub聊天OpenAPI YAML规范,取消引用 $ref 指针,提取结构化 Endpoint[] 并计算TOON压缩审计度量。
发电机src/generator.ts执行引擎。编译9个Handlebars模板,构建目录树,写入所有文件,并运行生成后验证管道。
清单manifest.json注册12个API域及其OpenAPI源文件、关键字匹配器和预先计算的TOON缩写。

______________________________________________________________________

🔀 双工具编排

该架构实施了严格的 探索→ 然后脚手架 防止LLM端点幻觉的工作流程:

工具1: explore_rc_api

Input:  { requirement: "External Vendor Provisioning: Create Guest Account, Restrict to Channel, Notify Sponsor" }
Output: TOON-compressed endpoint summaries + agent instructions

它的作用:

  1. 读取 manifest.json 并将用户的需求与域关键字进行匹配。
  2. 从官方获取相关的OpenAPI YAML规范 RocketChat-Open-API公司 存储库。
  3. 使用解析和取消引用规范 @apidevtools/swagger-parser.
  4. 将每个端点压缩为TOON简写,并缓存结构化 Endpoint 物体。
  5. 返回TOON摘要,其中包含代理选择特定内容的说明 toolName 串。

工具2: scaffold_mcp_server

Input:  { projectName: "rc-vendor-provisioning-mcp", selectedToolNames: ["post_api_v1_users_create", ...] }
Output: Full TypeScript project + Self-Testing Guarantee Report

它的作用:

  1. 仅从内存缓存中检索请求的终结点(任何产生幻觉的终结点都不能通过)。
  2. 编译Handlebars模板以生成完整的项目结构。
  3. 运行生成后验证管道(npm installtsc --noEmitvitest run).
  4. 返回一个结构化报告,其中包含每个验证步骤的通过/失败状态。

______________________________________________________________________

🗜 TOON(面向令牌的对象表示法)

TOON是一种自定义压缩格式,专门设计用于在传输API模式信息时最大限度地减少LLM令牌消耗。

压缩规则

完整类型TOON节省
strings83%
booleanb86%
numbern83%
arraya80%
integern86%

参数快捷方式

全名TOON
roomIdrid
msgIdmid
userIduid
usernameu
textm

转换示例

之前(原始OpenAPI):

POST /api/v1/chat.delete
  requestBody:
    roomId: string (required)
    msgId: string (required)
    asUser: boolean (optional)

之后(TOON):

chat.del(rid:s, mid:s, [u:b])

解析器还计算 储蓄审计:

--- MSG (Savings: 78.3%) ---
- post_api_v1_chat_delete: chat.del(rid:s, mid:s, [u:b])
- post_api_v1_chat_sendMessage: chat.send(rid:s, m:s, [alias:s])

______________________________________________________________________

📦 生成的输出结构

每个生成的子服务器都遵循一个标准化的架构:

examples/rc-[feature]-bot/
├── src/
│   ├── server.ts         # MCP entry point — dynamically registers all selected tools
│   ├── rc-client.ts      # Token-aware HTTP client with 429 backoff & 8KB truncation
│   └── tools/            # One file per endpoint with Zod input validation
│       ├── post_api_v1_chat_delete.ts
│       └── ...
├── tests/
│   ├── setup.ts          # Global mock environment — intercepts all HTTP calls
│   ├── post_api_v1_chat_delete.test.ts
│   └── ...               # One test file per tool (Zero-Regression Testing)
├── .env.example          # ROCKETCHAT_URL, ROCKETCHAT_AUTH_TOKEN, ROCKETCHAT_USER_ID
├── package.json          # Dependencies: @modelcontextprotocol/sdk, zod, vitest
├── tsconfig.json         # Strict TypeScript configuration
├── vitest.config.ts      # Vitest configuration with setup file
└── README.md             # Auto-generated documentation for the sub-server

生成的文件亮点

rc-client.ts --上下文安全HTTP客户端

  • 8KB有效负载截断:自动修剪超过8KB的API响应,以防止LLM的上下文窗口崩溃。数组被智能地截断到前5项。
  • 429指数回退:检索率限制请求高达3次,具有指数级延迟,遵守 Retry-After 标题。
  • 灵活的身份验证:支持用户名/密码登录和预生成的身份验证令牌工作流。

tools/*.ts -单个API终点

  • 每个工具都导出一个标准化的对象 name, description, inputSchema (Zod),以及 handler.
  • 括号内URL变量的动态路径插值(例如。, /api/v1/settings/{_id}).
  • TOON标头用作工具描述,以实现最大的令牌效率。

tests/*.test.ts --零回归测试套件

每个生成的测试文件都验证:

  1. ✅ 正确的工具名称和描述导出
  2. ✅ Zod模式接受有效参数
  3. ✅ Zod模式拒绝缺少必需的参数
  4. ✅ 正确的HTTP方法、路径和有效负载转发

______________________________________________________________________

🧬 模板

发电机使用 9把手模板 --每个生成项目的“DNA”:

模板输出文件目的
server.hbssrc/server.tsMCP服务器入口,带有动态工具导入和注册
rc-client.hbssrc/rc-client.ts具有退避和截断功能的令牌感知HTTP客户端
tool.hbssrc/tools/[name].ts具有Zod验证的单个端点逻辑
test.hbstests/[name].test.ts每个工具的Vitest套件
setup.hbstests/setup.ts用于隔离测试的全球模拟环境
package.hbspackage.json项目元数据和依赖关系声明
tsconfig.hbstsconfig.json严格的TypeScript编译器配置
vitest.config.hbsvitest.config.tsVitest转轮配置
readme.hbsREADME.md自动生成的项目文档

______________________________________________________________________

🚀 入门指南

先决条件

  • Node.js v20或更高
  • npm (包含在Node.js中)

安装

# 1. Clone the repository
git clone 
cd GSoC

# 2. Install dependencies
npm install

# 3. Start the MCP Architect server
npx tsx src/index.ts

连接到Gemini CLI

该项目作为一艘 Gemini CLI扩展The gemini-extension.json 自动注册MCP服务器:

{
  "mcpServers": {
    "rc-master": {
      "command": "npx",
      "args": ["tsx", "${extensionPath}/src/index.ts"],
      "cwd": "${extensionPath}"
    }
  }
}

安装后,Gemini CLI将公开 explore_rc_apiscaffold_mcp_server 作为原生工具。

______________________________________________________________________

🎬 用法示例

提示

*“外部供应商设置:创建来宾帐户→ 仅限于单一供应商渠道→ 设置帐户过期时间→ DM内部赞助商”*

第一步:发现(explore_rc_api)

代理人打电话来 explore_rc_api 根据用户的要求。该工具与 users, rooms,以及 msg 域,返回:

Found domains: [rooms, msg, users]

--- USERS (Savings: 85.0%) ---
- post_api_v1_users_create: users.new(name:o, email:o, password:o, u:o, [roles:a], [customFields:o], ...)
- post_api_v1_users_update: users.upd(uid:o, data:o)

--- ROOMS (Savings: 85.7%) ---
- post_api_v1_channels_invite: channels.invite(rid:o, uid:o)
- post_api_v1_groups_invite: groups.invite(rid:o, uid:o)

--- MSG (Savings: 86.4%) ---
- post_api_v1_im_create: dm.new(u:o)
- post_api_v1_chat_postMessage: chat.post(rid:o, m:o)

INSTRUCTION FOR AGENT: Review the TOON headers above. Select the exact
'toolName' strings you need, and pass them as an array to scaffold_mcp_server.

步骤2:生成(scaffold_mcp_server)

代理选择相关工具名称并调用 scaffold_mcp_server:

{
  "projectName": "rc-vendor-provisioning-mcp",
  "selectedToolNames": [
    "post_api_v1_users_create",
    "post_api_v1_users_update",
    "post_api_v1_channels_invite",
    "post_api_v1_groups_invite",
    "post_api_v1_im_create",
    "post_api_v1_chat_postMessage",
    "get_api_v1_users_info"
  ]
}

第三步:自检保证报告

生成器为项目搭建脚手架,安装依赖项,并验证:

Project "rc-vendor-provisioning-mcp" generated with 7 tools at examples/rc-vendor-provisioning-mcp.

📁 Generated Test Files:
  - tests/post_api_v1_users_create.test.ts
  - tests/post_api_v1_channels_invite.test.ts
  - ... (7 files)

🛡️ Self-Testing Guarantee Report:
  npm install:   ✅ Passed
  tsc --noEmit:  ✅ Passed
  vitest run:    ✅ Passed

______________________________________________________________________

🌐 支持的API域

manifest.json 地图 12火箭。聊天API域 到他们的OpenAPI源文件:

OpenAPI源关键字TOON前缀
认证authentication.yaml登录、注销、令牌、会话、2faauth.ops
内容content-management.yaml文件、上传、媒体、下载cnt.ops
集成integrations.yamlwebhook、脚本、传入、传出int.ops
市场marketplace-apps.yaml应用程序、安装、卸载、捆绑包mkt.ops
消息messaging.yaml消息、聊天、发布、反应、删除msg.ops
杂项miscellaneous.yaml信息、版本、健康、盾牌msc.ops
通知notifications.yaml推送、电子邮件、提醒、未读、提及ntfy.ops
omnichannel.yaml在线聊天、客服、访客、排队omni.ops
房间rooms.yaml频道、房间、群组、邀请、加入rm.ops
设置settings.yaml配置、权限、oauth、ldapcfg.ops
统计statistics.yaml统计、指标、报告、使用情况stt.ops
用户user-management.yaml用户、状态、存在、化身usr.ops

所有规格都是从官方现场获取的 RocketChat-Open-API公司 GitHub存储库。

______________________________________________________________________

🛠 技术栈

技术目的
运行时Node.js+TypeScript类型安全的服务器执行
协议MCP-SDK(@modelcontextprotocol/sdk)AI工具注册和stdio传输
验证Zod生成工具的运行时输入模式验证
模板化Handlebars代码生成来源 .hbs 模板文件
规范解析@apidevtools/swagger-parser + js-yamlOpenAPI YAML解引用和解析
超文本传输协议Axios(解析器)+原生 fetch (生成的客户端)API规范获取和生成的客户端请求
测试Vitest使用模拟环境生成测试套件

______________________________________________________________________

📂 项目结构

GSoC/
├── src/
│   ├── index.ts          # MCP Server — Two-Tool Architecture entry point
│   ├── parser.ts         # OpenAPI YAML parser & TOON compressor
│   └── generator.ts      # Execution Engine — template compilation & project scaffolding
├── templates/
│   ├── server.hbs        # Generated server entry template
│   ├── rc-client.hbs     # HTTP client template (429 backoff + 8KB truncation)
│   ├── tool.hbs          # Individual tool endpoint template
│   ├── test.hbs          # Vitest test suite template
│   ├── setup.hbs         # Test environment mock setup template
│   ├── package.hbs       # package.json template
│   ├── tsconfig.hbs      # TypeScript config template
│   ├── vitest.config.hbs # Vitest config template
│   └── readme.hbs        # Generated README template
├── examples/             # Generated sub-servers (output directory)
│   ├── rc-cleanup-bot/
│   ├── rc-admin-dashboard-mcp/
│   └── rc-stats-server/
├── manifest.json         # API domain registry (12 domains)
├── gemini-extension.json # Gemini CLI extension configuration
├── CONTEXT.md            # Project history & architectural decisions
├── GEMINI.md             # AI system prompt & SOPs
├── package.json          # Root project dependencies
└── tsconfig.json         # Root TypeScript configuration

______________________________________________________________________

⚠️ 约束和护栏

  • 无幻觉:仅从官方发现端点 RocketChat-Open-API公司 可以生成规格。基于缓存的架构使得在结构上不可能构建一个没有首先探索过的端点。
  • 代币效率:TOON压缩确保有效载荷最小化。生成的HTTP客户端强制执行8KB截断。
  • 安全:凭据从不硬编码。所有身份验证流都使用 process.env 配置通过 .env 文件夹。
  • 错误处理:每个生成的工具都会捕获 401 Unauthorized403 Forbidden 响应并返回人类可读的MCP错误消息。

______________________________________________________________________

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

发展

# Run the Architect server in development
npx tsx src/index.ts

# Run an example generated server
cd examples/rc-cleanup-bot
npm install
npm start

# Run generated tests
npm test

______________________________________________________________________

📄 许可证

该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取详细信息。

______________________________________________________________________

Built with ❤️ for Google Summer of Code 2026 × Rocket.Chat

目录标签

目录标签

API集成测试自动化TypeScript代码生成JavaScriptAPI工具本地部署RESTAPI

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

tsx

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP