☰
opencode + draw.io MCP 实现流程图绘制:把 MCP endpoint 改到 TaoToken
2026/10/3 11:59:42 网站建设 项目流程

1. 为什么要在 opencode 里把 draw.io MCP 接到统一通道

如果你已经在用 opencode 写代码,大概率会遇到一个很具体的场景:需求评审前要画一张登录认证流程图,或者给新同事解释三层架构,手边没有趁手的画图工具,切到浏览器里拖节点又慢又烦。opencode 本身支持 MCP(Model Context Protocol),而 draw.io 官方也提供了 MCP 服务,两者一接,你就能在对话框里用自然语言直接生成可编辑的流程图、架构图、数据流图。生成的不是一张死图片,而是一个能立刻打开、继续拖拽修改的 diagram。

问题出在 MCP 的 endpoint 和模型调用通道上。默认情况下,opencode 里的 MCP 工具调用会走它自己配置的模型通道,而很多团队希望把模型请求统一收口到一个 Key、一个 API 通道里管理,方便计费和审计。TaoToken 就是做这件事的:它提供一个兼容 OpenAI 风格的 API 入口,你可以把 opencode 的模型请求指向https://taotoken.net/api,同时把 MCP 的调用链路也纳入同一套 Key 体系。这样你不需要在多个平台之间来回切换 Key,也不用担心某个 MCP 工具偷偷走了另一条通道。

这篇文章聚焦一条完整链路:opencode 通过 MCP 调用 draw.io 绘制流程图,并且把 MCP endpoint 改到 TaoToken 的统一 Key/API 通道。我会给出可复制的opencode.json配置片段、一次真实的流程图生成验证动作,以及几个我实际踩过的报错排查。适合已经装好 opencode、想把手里的 AI 编码工具真正用起来的人。读完你能做到:在 opencode 对话框里说一句“用 open_drawio_mermaid 画一个登录认证流程图”,浏览器自动打开 draw.io 并显示图形,同时所有模型请求都走 TaoToken 的通道。

先明确一个概念,MCP 是 Anthropic 提出的开放协议,用来标准化 AI 模型和外部工具之间的通信。你可以把它理解成“AI 的 USB 接口”:以前模型只能输出文本,现在通过 MCP,模型可以调用 draw.io 这样的外部工具,直接产出结构化图形。draw.io MCP 提供三个工具,分别对应三种输入格式,选择逻辑很清晰:

工具输入格式适用场景上手难度
open_drawio_xmldraw.io XML架构图、网络拓扑、云服务部署图高(完全控制)
open_drawio_mermaidMermaid.js 语法流程图、时序图、ER 图、状态图低(自动布局)
open_drawio_csvCSV 表格组织架构图、角色矩阵中(表格驱动)

流程图优先用 Mermaid,架构图用 XML,组织数据用 CSV。这个选择建议后面会反复用到。

2. TaoToken 前置准备:Key、Base URL 与 opencode 通道对齐

在动 MCP 配置之前,先把 TaoToken 这边的准备工作做完。你需要一个 TaoToken 账号,然后拿到 API Key。登录官网https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=之后,进控制台创建 Key。控制台地址是https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite,API Keys 管理页在https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite。创建完把 Key 复制出来,形如sk-开头的一串字符,后面配置里要用。

这里要区分两个东西:一个是模型对话的 Base URL,一个是 MCP 工具调用的 endpoint。TaoToken 的 API 入口是https://taotoken.net/api,注意这个地址不带 UTM 参数,直接写进配置里。opencode 的模型请求会走这个 Base URL,而 draw.io MCP 本身是一个本地进程,通过npx启动,它负责把模型生成的图形描述转成 draw.io 能识别的格式。所以“把 MCP endpoint 改到 TaoToken”这个说法,准确理解是:让 opencode 的模型调用走 TaoToken 通道,MCP 工具作为本地能力被这个通道下的模型调用。两者配合,形成统一 Key 体系。

如果你还没装 opencode,先装。opencode 的安装方式取决于你的系统,常见的是通过包管理器或者直接下载二进制。装完之后确认opencode --version能输出版本号。Node.js 也要装好,因为 draw.io MCP 是通过npx -y @drawio/mcp启动的,没有 Node 环境npx会直接报错。我建议 Node 版本用 18 以上,避免一些依赖兼容问题。

接下来是模型选择。TaoToken 支持多种模型,你在 opencode 里配置的时候需要指定一个 Model ID。这个 Model ID 要和 TaoToken 通道里可用的模型对应。如果你不确定用哪个,可以先在模型对话页面https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite里试一下,确认模型能正常返回,再写进 opencode 配置。对于画流程图这种任务,模型需要理解 Mermaid 语法和 draw.io XML 结构,选一个指令跟随能力强的就行。

还有一个容易忽略的点:opencode 的配置文件位置。它通常在项目根目录下的opencode.json,也可能是全局配置。我建议在项目根目录建一个,这样配置跟着项目走,团队里其他人 clone 下来就能用。如果你用的是 Claude Code 或者 Cline 这类工具,配置文件的字段名会不一样,但核心三件套是一样的:Base URL、API Key、Model ID。这三样对齐了,通道就通了。

TaoToken 的 Coding Plan 适合长期编码和 Agent 场景,如果你打算把 opencode 当成日常主力工具,可以了解一下https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite。接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,里面有各工具的配置示例,遇到字段不确定的时候可以对照。

3. 可复制配置:opencode.json 里同时写对 MCP 与 TaoToken 通道

这一节是核心,直接给可复制的配置。先看完整的opencode.json结构,然后逐段解释。

{ "provider": { "taotoken": { "type": "openai", "baseURL": "https://taotoken.net/api", "apiKey": "sk-你的TaoTokenKey", "model": "你的ModelID" } }, "mcp": { "drawio": { "type": "local", "command": ["cmd", "/c", "npx", "-y", "@drawio/mcp"] } } }

这段配置做了两件事。第一,把 opencode 的模型 provider 指向 TaoToken,baseURL写https://taotoken.net/api,apiKey填你从控制台拿到的 Key,model填你要用的 Model ID。第二,注册一个本地 MCP 服务,名字叫drawio,启动命令是npx -y @drawio/mcp。

Windows 用户特别注意:command必须写成["cmd", "/c", "npx", "-y", "@drawio/mcp"]这种形式。因为 PowerShell 不会自动识别 npm 命令,直接写["npx", "-y", "@drawio/mcp"]会报找不到命令。通过cmd /c做一层桥接,才能正常拉起 MCP 进程。macOS 和 Linux 用户可以直接写["npx", "-y", "@drawio/mcp"],不需要cmd /c。

如果你用的是 TOML 格式的配置(某些工具支持),等价写法是:

[provider.taotoken] type = "openai" baseURL = "https://taotoken.net/api" apiKey = "sk-你的TaoTokenKey" model = "你的ModelID" [mcp.drawio] type = "local" command = ["cmd", "/c", "npx", "-y", "@drawio/mcp"]

还有一种情况是你用 Claude Code 的settings.json或者 Codex 的auth.json。这些工具的字段名不同,但核心三件套不变。比如 Claude Code 的配置里,Base URL 和 Key 写在环境变量或者 settings 里,Model ID 在模型选择处指定。如果你在配置过程中看到auth.json,那通常是 Codex 系的工具,里面存的是凭证信息,Base URL 指向 TaoToken 的 API 入口即可。

配置写完之后,保存文件,重启 opencode。重启这一步不能省,因为 MCP 服务是在启动时注册的,热加载不一定生效。重启后你可以先发一条普通对话,确认模型通道是通的。如果模型能正常回复,说明 TaoToken 的 Base URL 和 Key 没问题。然后再发画图指令,验证 MCP 是否被正确加载。

这里有个细节:model字段填的 Model ID 必须和 TaoToken 通道里可用的模型一致。如果你填了一个不存在的 ID,opencode 会在请求时报错,通常是 404 或者 model not found。遇到这种情况,回到模型对话页面确认一下可用的 Model ID,再改配置。

另外,apiKey直接写在配置文件里有泄露风险。生产环境建议用环境变量,比如"apiKey": "${TAOTOKEN_API_KEY}",然后在 shell 里 export。opencode 支持这种变量替换,具体语法看它的文档。本地开发图省事可以直接写,但别把带 Key 的配置文件提交到 git。

4. 验证请求:一次真实的流程图生成动作与成功结果

配置好了,现在做一次完整的验证。打开 opencode,在对话框里输入下面这段指令:

使用 open_drawio_mermaid 画一个登录认证流程图,包含:开始登录、接收请求、验证格式、验证用户(判断分支:成功→处理登录→生成JWT→返回结果,失败→返回错误)、推送结果给客户端。要求用绿色表示成功、红色表示错误、橙色表示输出。

发送之后,opencode 会做几件事:先把你的自然语言指令发给 TaoToken 通道下的模型,模型理解后决定调用open_drawio_mermaid这个 MCP 工具,生成对应的 Mermaid 语法,然后 draw.io MCP 把 Mermaid 转成 draw.io 能识别的格式,最后浏览器自动打开 draw.io 编辑器并显示图形。

如果一切正常,你会看到浏览器弹出一个 draw.io 页面,里面是一张登录认证流程图。开始节点、处理步骤、判断分支、成功和失败路径都在,颜色也按你要求区分了。这时候你可以直接在 draw.io 里拖拽节点、改文字、调颜色,改完保存为.drawio文件。

再试一个 XML 的例子,验证open_drawio_xml工具:

使用 open_drawio_xml 画一个三层 Web 应用架构图,从左到右依次是:用户(蓝色)→ 前端 SPA(紫色)→ API 服务 Go(绿色)→ 数据库 PostgreSQL(黄色圆柱体)。箭头上分别标注 HTTP、REST API、SQL。

这个指令会生成一张横向架构图,四个节点用不同颜色区分,箭头上有协议标注。XML 方式控制力更强,适合架构图、网络拓扑这类需要精确布局的场景。

还有一个泳道图的例子,验证复杂布局:

使用 open_drawio_xml 画一个 HTTP 请求处理流程,使用垂直泳道(Client、Middleware、Handler、Service、DB),展示从接收请求到返回响应的完整链路,包含 JWT 验证中间件、业务逻辑处理、数据库查询,每个泳道用不同颜色区分。

泳道图对模型理解能力要求高一些,如果第一次生成不理想,可以追加一句“把 Middleware 泳道放在第二列,颜色用浅灰”,模型会重新生成。实测下来,Mermaid 方式最省心,自动布局基本不用调;XML 方式适合对布局有明确要求的场景。

验证成功的标志有三个:浏览器自动打开 draw.io、图形内容与指令一致、图形可编辑。如果浏览器没打开,但 opencode 返回了一段 XML 或 Mermaid 文本,说明 MCP 工具被调用了但浏览器打开环节有问题,通常是本地环境缺少默认浏览器关联,或者 draw.io MCP 的打开逻辑被拦截。这种情况可以手动复制返回的 XML 到 draw.io 网页版里粘贴,也能看到图形。

如果你想把生成的图保存下来做版本管理,建议把.drawio源文件提交到 git。.drawio是纯 XML 文本,git diff能追踪变更,比截图友好得多。目录结构可以这样组织:

docs/ ├── *.drawio # draw.io XML 源文件(可 commit) ├── screenshots/ # 截图(可选 commit) └── blog-*.md # 文档

5. 本篇常见错排查:401、local proxy failed、reading choices 与 OAuth

配置和验证过程中,最容易撞上几个报错。我按实际遇到的频率排一下,每个给出原因和解决方式。

401 Unauthorized。这个最直接,Key 不对或者没带上。检查opencode.json里的apiKey是不是从 TaoToken 控制台复制的完整 Key,有没有多余空格。如果你用环境变量,确认 shell 里 export 了,并且 opencode 启动时能读到。还有一种情况是 Key 过期或者被禁用,回控制台重新生成一个。401 通常伴随invalid api key之类的提示,看到就先去核对 Key。

local proxy failed。这个报错说明 opencode 尝试通过本地代理转发请求,但代理没起来或者端口不对。如果你没有配代理,检查配置里是不是有多余的 proxy 字段。TaoToken 的 API 入口是直连的,不需要额外代理。如果你在公司网络环境下,确认网络策略允许访问https://taotoken.net/api。这个报错有时候也跟 MCP 进程启动失败混淆,注意看报错栈里是模型请求失败还是 MCP 启动失败。

reading choices 相关报错。这个通常出现在模型返回格式不符合预期的时候。opencode 期望 OpenAI 风格的响应,里面有choices数组。如果 TaoToken 通道返回的格式不对,或者 Model ID 填错了导致返回了错误结构,就会报cannot read property 'choices' of undefined之类。解决方式是确认 Model ID 正确,并且该模型在 TaoToken 通道里可用。回模型对话页面测一下同一个 Model ID,能正常返回就说明通道没问题。

OAuth 相关报错。如果你在配置里看到 OAuth 字样,说明某个工具尝试走 OAuth 流程而不是 API Key。opencode 接 TaoToken 用的是 API Key 方式,不需要 OAuth。检查配置里是不是混入了其他 provider 的 OAuth 设置。如果你同时用 Claude Code 的 Anthropic 通道,注意区分:Claude Code 有它自己的认证方式,而 opencode 走的是 OpenAI 兼容的 Key 认证。两者不要混在同一个配置文件里。

MCP 进程起不来。表现是 opencode 启动后,发画图指令没反应,或者提示MCP server drawio not found。先确认 Node.js 和 npx 可用,命令行里手动跑npx -y @drawio/mcp看能不能启动。Windows 用户重点检查command是不是["cmd", "/c", "npx", "-y", "@drawio/mcp"],少一个/c都会失败。macOS 用户如果遇到权限问题,检查 npx 的全局路径是否在 PATH 里。

浏览器没自动打开。MCP 调用成功了,图形也生成了,但浏览器没弹出来。这通常是系统默认浏览器关联问题,或者 draw.io MCP 的打开逻辑被安全软件拦截。临时方案是手动复制返回的 XML 或 Mermaid 到 draw.io 网页版。长期方案是检查系统默认浏览器设置,确保.drawio或者 URL 打开有关联程序。

排查的时候有个通用思路:先确认模型通道通不通(发普通对话),再确认 MCP 通不通(发画图指令看返回),最后确认浏览器打开环节。分段定位,比一股脑改配置高效。如果你在接入文档里看到https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite有对应的排错章节,可以对照看。

6. 把 opencode + draw.io MCP 用进日常:统一 Key 与可复制工作流

配置跑通之后,真正有价值的是把它变成日常习惯。我现在的工作流是这样的:写代码写到需要画图的时候,不切浏览器,直接在 opencode 对话框里描述需求,让 draw.io MCP 生成初稿,浏览器打开后微调节点和颜色,保存.drawio源文件,提交到 git。整个过程不用离开终端太久,图表的版本也能追踪。

统一 Key 的好处在这个流程里体现得很明显。opencode 的模型请求走 TaoToken 通道,MCP 工具调用也在同一个会话里完成,你不需要为画图单独配一套凭证。团队协作时,把opencode.json里的 Key 换成环境变量,每个人用自己的 Key,配置模板共享,既统一又安全。

如果你打算长期用 opencode 做编码和 Agent 任务,Coding Plan 的通道https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite可以了解一下,适合高频调用场景。模型对话页面https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite用来试新模型,确认可用再写进配置。API Keys 管理在https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite,Key 轮换的时候记得同步更新配置。

最后给一个实用技巧:把常用的画图指令存成片段,比如登录流程图、三层架构、泳道图各存一条,需要的时候直接粘贴改几个词。Mermaid 方式适合快速出图,XML 方式适合精确控制,CSV 方式适合组织架构。三种工具配合,基本覆盖日常画图需求。draw.io MCP 的 GitHub 仓库和 MCP 协议规范也值得翻一翻,了解工具的能力边界,用起来更顺手。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询