ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

把 Pascal Editor 的 MCP 服务器装进你的 Agent:进程内嵌入实战指南

把 Pascal Editor 的 MCP 服务器装进你的 Agent:进程内嵌入实战指南 把 Pascal Editor 的 MCP 服务器装进你的 Agent进程内嵌入实战指南【免费下载链接】editorOpen-source 3D architectural editor with a local CLI, MCP tools, and practical workflows for humans and AI agents.项目地址: https://gitcode.com/GitHub_Trending/editor93/editor拉起子进程、等端口就绪、走 stdio 做 JSON 往返是很多 Agent 框架接 MCP 服务器的默认姿势也是延迟与不稳定的来源。开源 3D 建筑编辑器 Pascal Editor 随附的可嵌入 MCP 服务器包pascal-app/mcp提供了另一条路在自己的进程里直接实例化零进程边界让 Agent 直接驱动 3D 场景图——建墙、开门窗、摆家具、撤销重做全部发生在同一个事件循环里。嵌入的是什么三个对象与最小依赖集 先给结论要记的只有三个对象。对象职责SceneBridge无头场景桥直连pascal-app/core的 Zustand store带订阅机制的状态库。变更走真实 store撤销/重做天然可用createPascalMcpServer服务器工厂装配工具、资源、提示模板三类能力返回 MCP 服务器实例InMemoryTransport内存传输对把客户端与服务器在同进程内接通最小依赖集pascal-app/mcp MCP SDKClient与InMemoryTransportpascal-app/core作为 peer dependency。进程内嵌入选内存传输而非 stdio / HTTP原因可以压成一张三行表连接方式进程边界嵌入成本stdio子进程 JSON 序列化往返中HTTP端口 网络高内存无低三者的能力面完全一致内存传输省掉的是进程管理、端口占用以及单测里秒级拉起客户端 服务器对跑的机会。进程内最小接入代码 接入按数据流推进先备场景再建服务器最后接通传输两端。import { Client } from modelcontextprotocol/sdk/client/index.js import { InMemoryTransport } from modelcontextprotocol/sdk/inMemory.js import { createPascalMcpServer, SceneBridge } from pascal-app/mcp const bridge new SceneBridge() bridge.loadDefault() // 播种 Site → Building → Level 骨架 const server createPascalMcpServer({ bridge }) const [srv, cli] InMemoryTransport.createLinkedPair() const client new Client({ name: my-agent, version: 0.1.0 }) await Promise.all([server.connect(srv), client.connect(cli)])loadDefault()会播下 Site → Building → Level 三级骨架客户端接通即可查询。此时工具就是普通函数const scene await client.callTool({ name: get_scene, arguments: {} }) const wall await client.callTool({ name: create_wall, arguments: { levelId, start: [0, 0], end: [5, 0], thickness: 0.2, height: 2.5 }, }) await client.callTool({ name: undo, arguments: { steps: 1 } })从查楼层、建 5 米墙、撤销到validate_scene校验、export_json导出的完整链路见 embed-in-agent.ts。嵌入后的 30 工具能力清单️ 嵌入后 Agent 立刻拥有一批建筑建模工具参数全部经 Zod 校验每次变更被 Zundo 记为单个可撤销步骤。按用途归为五类类别工具用途查询get_scene/find_nodes/describe_node全场景读取、按类型过滤、单节点体检建模create_room/create_wall/create_level房间、墙体、楼层参数化建模布置add_door/add_window/cut_opening/place_item/furnish_room门窗布置、开洞、目录家具、整房自动布置批量与历史apply_patch/undo/redo原子批量增删改、时间轴回退校验与导出validate_scene/check_collisions/export_json全场景校验、碰撞检测、JSON 快照导出工具之外还有资源与提示模板场景快照pascal://scene/current、给 Agent 的建造工作流指南pascal://agent/guide等提示模板from_brief能把80㎡两居室这类文字需求转成增量apply_patch序列。接进 LLMAgent 循环里的工具调用内嵌的价值在于工具路由完全在你的代码里。把listTools()的 schema 直接转成 LLM 的 function-calling 定义模型的输出喂回callTool()// 伪代码LLM 决定调用哪个工具 const call await llm.decide({ tools, message }) const result await client.callTool({ name: call.name, arguments: call.args }) // 把 result 喂回 LLM形成 ReAct 循环没有进程边界思考 → 调工具 → 读场景 → 再思考可以在同一事件循环里自由穿插每次调用都省掉子进程拉起与 stdio 序列化往返单跳延迟显著低于子进程方案。扩展面存储与工具拦截的三个注入口⚙️createPascalMcpServer留了三个注入点选项类型见 server.tsstore实现 SceneStore 接口save/load/list/delete等即获得save_scene、load_scene、list_scenes等持久化工具。包内置本地 SQLite 实现createSceneStore()换成 Supabase 或自建数据库也可以executeTool为每次工具调用套一层包装拿到name与AbortSignal审计日志、耗时统计、权限拦截都靠它operations需要更深定制时整层替换场景操作实现。const server createPascalMcpServer({ bridge, store: await createSceneStore(), executeTool: ({ name, signal, execute }) { console.log([audit] ${name}) // 记录每次调用 return execute() }, })避坑清单进程内嵌入的四个常见坑⚠️ 上线前逐项核对坐标系右手系X/Z 为地面平面、Y 朝上长度单位米旋转弧度。2D 平面点[x, z]直接映射世界坐标详见 coordinate-conventions-demo.md。版本冲突与编辑器共享数据目录时MCP 写入会做版本检查冲突返回live_sync_version_conflict用load_scene重新加载再继续。能力边界export_glb依赖浏览器渲染器无头模式返回not_implementedanalyze_floorplan_image等视觉工具要求宿主支持 sampling 能力。内存累积无头模式下dirtyNodes会持续累积长会话记得调bridge.flushDirty()清空保持可观测。一句话串起整条链路SceneBridge提供无头场景createPascalMcpServer装配工具InMemoryTransport把两端在内存里接通——十几行代码无子进程、无端口Agent 即拥有完整建筑建模能力。生成公寓、照片转场景等更多工作流见 examples/ 目录。【免费下载链接】editorOpen-source 3D architectural editor with a local CLI, MCP tools, and practical workflows for humans and AI agents.项目地址: https://gitcode.com/GitHub_Trending/editor93/editor创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表