使用说明
RC MCP合成器
此仓库生成Rocket。根据自然语言能力请求聊天MCP工具,并通过本地MCP服务器为其提供服务。
建筑
该项目围绕两个运行时角色进行组织:
Control MCP- 处理规划、工作流起草、端点缩小、最终选择和生成
Runtime MCP- 仅加载生成的工具,并对Rocket执行已接受的工作流。聊天
从高层次上讲,该系统分为三个阶段:
Selection- 解释请求并构建面向工作流的计划
Generation- 根据已接受的计划生成最小的MCP工具集和工作流模块
Serve- 通过本地运行时服务器执行生成的运行时工件
选择管道
选择是精心策划的 src/selection/service.js 使用 @langchain/langgraph.
该图按以下顺序运行:
classify_tags- 将查询分类为Rocket。聊天域名和标签
retrieve_candidates- 缩小火箭。将API表面聊天到候选端点池
draft_workflow- 将自由形式的查询转换为仅提供抽象服务的工作流
select_final_endpoints- 从候选池中选择最终端点集
map_endpoints- 将工作流步骤映射到端点候选和面向运行时的步骤元数据
refine_workflow- 改进映射后的工作流结构和步骤组合
validate_selection- 验证工作流和端点映射是否可用
finalize_plan- 返回最终的结构化规划工件
这种基于图的设计保持了中间状态的明确性,因此系统可以保留工件,如解析域、候选端点、草稿工作流、精炼工作流、映射步骤和验证输出。
工作流模型
工作流起草从开始 src/workflows/WorkflowSelect.js.
工作流程草案有意抽象。它包含:
keylabeldescriptioninputSchema- 有序的
steps
在这个阶段,工作流从语义上描述了应该发生什么,而不是哪个确切的Rocket。应调用聊天端点。这使得工作流可以作为主要的规划工件,用于审查、细化、再生和端点映射。
起草是通过本地Gemini桥进行LLM驱动的,但结果会被解析为结构化的JSON,并在后续阶段使用之前进行验证。
工作流优化发生在 src/workflows/WorkflowRefineNode.js此阶段改进了端点映射后的工作流结构,并可以在需要时形成更丰富的步骤类型,如运行时步骤、LLM步骤、计算步骤、条件步骤和循环步骤。
生成管道
发电协调 src/generation/service.js.
接受选择后,生成层:
- 收集最终选定的端点
- 将工作流步骤解析为可执行端点候选
- 清除上一个工具缓存
- 为所选火箭生成MCP工具模块。聊天操作
- 将可执行工作流模块写入
src/tool_cache/workflows - 保存工件,例如
last_selection.json,confirmed_workflow.json,以及生成的清单
这意味着计划输出被编译成具体的运行时工件,而不仅仅是选择元数据。
运行时执行
运行时执行由以下人员处理 src/MCP_Runtime_Server.js.
当运行时服务器启动时,它:
- 扫描生成的工具缓存
- 动态导入每个生成的工具模块
- 在内存中注册工具元数据和处理程序
- 公开轻量级端点,例如
/tools,/health,以及/call/:key
在执行过程中,运行时服务器不会重做计划。它使用早期阶段生成的工作流和工具绑定,并将调用直接分派给生成的工具函数及其解析的参数和上下文。
主要图书馆
@langchain/langgraph- 基于图的选择管道编排
ajv- 用于工作流草稿和可执行工作流结构的JSON模式验证
express- 用于生成MCP工具执行的本地运行时服务器
handlebars- 从模板生成工作流/模块代码
commander- CLI入口点,如
mcp-generate以及运行时调用
- CLI入口点,如
dotenv- 运行时配置加载
@dqbd/tiktoken- 用于即时大小会计的令牌计数
模式
/mcp:generate- 规划+发电
- 这是唯一应该使用的模式
--from-last-selection --from-last-selection这里的意思是“重用刚刚保存的生成端点集来启动运行时服务器”
/mcp:serve- 实景模式
- 应仅使用控制/运行时服务器
- 不应该谈论
--from-last-selection在正常请求期间
身份验证设置
添加你的火箭。聊天验证值 .env.
支持的变量:
BASE_URL="http://localhost:3000"
ROCKETCHAT_BASE_URL=""
ROCKETCHAT_AUTH_TOKEN=""
ROCKETCHAT_USER_ID=""
AUTH_TOKEN=""
USER_ID=""
笔记:
ROCKETCHAT_BASE_URL覆盖BASE_URL如果两者都已设置。ROCKETCHAT_AUTH_TOKEN或AUTH_TOKEN将按以下方式发送X-Auth-Token.ROCKETCHAT_USER_ID或USER_ID将按以下方式发送X-User-Id.
例子:
ROCKETCHAT_BASE_URL="http://localhost:3000"
ROCKETCHAT_AUTH_TOKEN="your_auth_token_here"
ROCKETCHAT_USER_ID="your_user_id_here"
MCP_SERVER_PORT="3001"
MCP_SERVER_HOST="127.0.0.1"
更新后 .env,重新启动MCP服务器。
现场认证
如果期间缺少身份验证 /mcp:execute,系统可以要求:
- 基地址
- 授权令牌
- 用户ID
并在运行时通过以下方式存储它们:
node src/cli/mcp-call.js rc.server.overview '{"baseUrl":"http://localhost:3000","authToken":"...","userId":"..."}'
要清除已保存的运行时身份验证,请执行以下操作:
rm -f .mcp-auth.json
