Next AI Draw.io MCP Server 浏览器图表不更新怎么排查
【免费下载链接】next-ai-draw-ioA next.js web application that integrates AI capabilities with draw.io diagrams. This app allows you to create, modify, and enhance diagrams through natural language commands and AI-assisted visualization.项目地址: https://gitcode.com/GitHub_Trending/ne/next-ai-draw-io
在 Claude Desktop、Cursor 或 VS Code 中配置了 next-ai-draw-io 的 MCP Server 后,常见的一类故障是:AI 已经成功执行了create_new_diagram或edit_diagram,但浏览器里打开的 draw.io 页面一直停留在旧内容,没有刷新出新的图形。这篇文章针对这个现象给出排查路径:先确认浏览器页面是否绑定到了正确的会话,再检查会话是否存在、端口是否正常,最后看 draw.io 嵌入源是否可达。
理解更新链路是排查的前提。MCP Server 与 AI 客户端之间走 stdio,服务端另起一个内嵌 HTTP Server(默认http://localhost:6002)负责提供 draw.io 界面和图表状态,浏览器页面通过轮询获取新状态。也就是说,浏览器能不能更新,取决于它打开的 URL 是否带上了 MCP 会话 ID。架构说明见 MCP Server README 的 "How It Works" 一节。
确认前提:配置生效且客户端已重启
MCP 客户端的配置必须长这样(以 Claude Desktop 为例,其他客户端同理,完整列表在 README):
{ "mcpServers": { "drawio": { "command": "npx", "args": ["@next-ai-drawio/mcp-server@latest"] } } }文档明确要求:更新配置后必须重启 MCP 客户端,然后让 AI 创建图表,浏览器才会出现实时预览。如果你刚改过配置却只是重开聊天窗口而没有重启客户端,工具调用可能根本没路由到 drawio 服务,现象之一就是浏览器毫无反应。
会话由start_session工具创建。它启动内嵌 HTTP 服务并打开浏览器窗口,成功时返回类似以下内容(Session ID 和 URL 每次不同):
Session started successfully! Session ID: mcp-xxxxxxxx-xxxxxx Browser URL: http://localhost:6002?mcp=mcp-xxxxxxxx-xxxxxx如果工具返回的是Error: No active session. Please call start_session first.,说明当前没有活跃会话——此时先调用start_session打开浏览器窗口即可,这是 README Troubleshooting 一节给出的处理办法。
第一步:检查浏览器 URL 是否带?mcp=参数
README 的 "Browser not updating" 条目给出的官方判断点是:确认浏览器 URL 带有?mcp=查询参数。这个参数里携带的 MCP 会话 ID 是浏览器页面与服务器状态之间的连接,缺少它页面就不知道该轮询哪个会话的图表。
正确的 URL 形如:
http://localhost:6002?mcp=mcp-xxxxxxxx-xxxxxx排查方式:
- 看当前浏览器标签页的地址栏,确认包含
?mcp=且参数值与start_session返回的 Session ID 一致; - 如果 URL 里的端口或会话 ID 是旧的(比如上一轮会话的),直接用
start_session返回的最新 Browser URL 重新打开页面; - 页面加载正常时,左上角会显示会话 ID 的后 8 位(见 http-server.ts 中生成的页面头部),可以据此核对页面绑定的会话是否正确。
第二步:确认端口没有被占满
内嵌 HTTP Server 默认监听 6002 端口。如果 6002 被占用,服务会自动向后尝试下一个可用端口,直到 6020;当 6002–6020 范围内全部不可用时,start_session会直接失败并返回No available ports in range 6002-6020错误(逻辑见 http-server.ts)。
注意:实际使用的端口以start_session返回的 Browser URL 为准——如果你手动打开的http://localhost:6002是旧进程或别的服务,页面自然收不到新状态。
想要固定端口的话,在 MCP 配置里通过环境变量PORT指定,例如设为 6003:
{ "mcpServers": { "drawio": { "command": "npx", "args": ["@next-ai-drawio/mcp-server@latest"], "env": { "PORT": "6003" } } } }改完配置同样要重启 MCP 客户端再验证。
第三步:确认 draw.io 界面本身能加载
MCP Server 是自包含的,但浏览器里的 draw.io 嵌入界面默认从https://embed.diagrams.net加载。如果页面框架出来了、内嵌的 draw.io 区域却是空白,说明嵌入源没加载成功,此时图表自然无从更新。
私有部署环境下可以通过DRAWIO_BASE_URL环境变量换成自托管的 draw.io 实例,官方给出的示例(见 README 的 "Private Deployment" 一节):
docker run -d -p 8080:8080 jgraph/drawio然后把 MCP 配置中的env加上"DRAWIO_BASE_URL": "http://localhost:8080"(或你的服务器地址)。如果你的环境要求离线或内网访问,这一步是必须的,默认地址不可达时浏览器端会停留在无编辑器状态。
如何验证排查成功
排查完成后,按 README 的使用流程做一次完整验证:
- 调用
start_session,浏览器打开带?mcp=参数的预览页; - 让 AI 执行一句图表指令,例如文档中的示例:
"Create a flowchart showing user authentication with login, MFA, and session management"; create_new_diagram成功时返回Diagram content set successfully!并附上页面解析结果,此时浏览器应实时显示该流程图。
浏览器端的更新依赖轮询,页面脚本每 2 秒请求一次/api/state?sessionId=...并在版本号变化时重新加载 XML(轮询逻辑见 http-server.ts 内嵌页面的poll函数),所以状态写入后刷新有秒级延迟属于正常现象;若 URL 的会话参数正确、服务端返回成功而页面长时间无任何变化,再回到第一步核对会话 ID 是否一致。
边界与限制
- 内嵌 HTTP 服务只绑定
127.0.0.1,浏览器必须在本机打开,远程机器上的标签页无法直接连到该预览服务; - 会话状态保存在服务器内存中,MCP 客户端重启、会话失效后需要重新调用
start_session; delete_page拒绝删除最后一页、create_new_diagram会替换全部页面等工具行为属于正常设计,不是"不更新"故障(详见 index.ts 中的工具描述)。
【免费下载链接】next-ai-draw-ioA next.js web application that integrates AI capabilities with draw.io diagrams. This app allows you to create, modify, and enhance diagrams through natural language commands and AI-assisted visualization.项目地址: https://gitcode.com/GitHub_Trending/ne/next-ai-draw-io
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考