ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

零代码挑战!用 RovoDev 一键生成 Mermaid 驱动的 MCP-Server 实战

零代码挑战!用 RovoDev 一键生成 Mermaid 驱动的 MCP-Server 实战

1. 为什么我想用 Mermaid 描述结构,再让 RovoDev 生成 MCP-Server

MCP-Server 说白了就是给 AI 客户端(Cherry Studio、Trae、Cline 这类)挂一个“外挂工具箱”,客户端通过标准协议调用你暴露出来的工具。Mermaid 则是一种“用文本画图”的语法,你写几行类似 Markdown 的代码,它就能渲染成流程图、时序图。把这两件事拼在一起,就得到一个很实用的场景:用 Mermaid 描述服务结构,让 RovoDev 直接生成可运行的 MCP-Server 骨架,全程不手写业务代码。

我这次要复现的目标很具体:做一个mcp-mermaid-server,它对外暴露一个工具,输入 Mermaid 代码,输出 PNG/JPG/SVG/PDF 图片。适合谁?适合想快速验证 MCP 协议、又不想从零啃 SDK 的同学;也适合手里有一堆小工具想包装成 MCP 工具集的人。核心检索词就是MCP-Server 零代码搭建和RovoDev 生成 Mermaid 服务。

整个流程分四步:先让 RovoDev 读开源项目产出 PRD,再用 Mermaid 把服务结构画清楚,接着让它按图生成代码骨架,最后本地启动 + 客户端调用自检。下面每一步我都给出可复制的配置和验证动作,你照着做就能跑通。

2. 前置准备:RovoDev 入口与 TaoToken 统一 Key/API 通道

RovoDev 是 Atlassian 推出的终端 AI 开发工具,用法类似 Claude Code,支持 CLI 交互式读写项目文件。安装部署略繁琐,这里不展开,重点讲接入通道。因为这类 CLI 工具最终都要调模型,如果每个工具都单独配 Key,管理起来很乱。我的做法是统一走 TaoToken 的 API 通道,一个 Key 覆盖对话和编码场景。

TaoToken 在这里扮演的是“统一模型网关”的角色:你拿到一个 API Key,把 Base URL 指向https://taotoken.net/api,就能在 RovoDev、Cline、Codex 等不同工具里复用同一套凭证。这样切换工具时不用反复申请 Key,也方便排查问题。

先拿 Key:打开https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite,创建一个 Key 并复制。注意这个 Key 只在创建时完整显示一次,先存到本地环境变量里,别直接写进会提交到 Git 的文件。

# Linux / macOS export TAOTOKEN_API_KEY="sk-你的key" # Windows PowerShell $env:TAOTOKEN_API_KEY="sk-你的key"

接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite,里面有各客户端的 Base URL 和 Model ID 对照。这里有个关键点:Base URL、API Key、Model ID 三件套必须同时正确,缺一个就会报 401 或模型不存在。Model ID 建议先用文档里列出的通用对话模型,等跑通后再换编码专用模型。

如果你打算长期做编码和 Agent 任务,可以了解下 Coding Plan(https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite),它更适合高频调用场景。但本篇重点是先把 MCP-Server 跑起来,通道能用就行。

3. 可复制配置:Mermaid 图到服务骨架的映射

这一步是整个零代码流程的核心。我先让 RovoDev 读一个开源项目dify-plugin-mermaid,让它产出 PRD,然后我补一张 Mermaid 图描述 MCP-Server 的结构,RovoDev 按图生成代码。

先看 Mermaid 图怎么描述服务结构。下面这段可以直接贴给 RovoDev,也可以自己存成arch.mmd:

flowchart TD A[MCP Client] -->|stdio / SSE| B[mcp-mermaid-server] B --> C{Tool: convert_mermaid} C --> D[参数校验] D --> E[Base64 URL-safe 编码] E --> F[mermaid.ink API] F --> G[返回 PNG/JPG/SVG/PDF] C --> H[错误处理] H --> I[语法错误 / 网络超时]

这张图映射到代码骨架就是:入口main.py(SSE 模式)和main_stdio.py(stdio 模式),工具实现tools/mermaid_converter.py,配置pyproject.toml。RovoDev 会据此生成目录结构。

接下来是客户端配置。stdio 模式在 Trae 里的mcpServers配置如下,注意路径换成你自己的:

{ "mcpServers": { "mcp-mermaid-server-stdio": { "command": "uv", "args": [ "--directory", "F:\\temp\\dify-plugin-mermaid\\mcp-mermaid-server", "run", "main_stdio.py" ] } } }

SSE 模式在 Cherry Studio 里配置更简单,填服务地址即可。启动服务后,客户端会拉取工具列表,你能看到convert_mermaid这个工具。

如果你用 Cline 或 Codex,配置思路一致,关键是三件套齐全。以 Codex 的auth.json为例,Base URL 和 Key 要对上:

{ "base_url": "https://taotoken.net/api", "api_key": "sk-你的key", "model": "你的ModelID" }

注意:base_url结尾不要多加/v1或斜杠,按文档给的原文写,否则容易出现local proxy failed或 404。

RovoDev 生成代码时,我给的提示词大意是:“阅读 PRD.md 和 mcp-server-demo,基于 Mermaid 图实现一个 mermaid 功能的 MCP 服务,支持 stdio 和 SSE 两种模式。”它自己就把pyproject.toml、README.md、工具实现都补齐了,全程不到 10 分钟。

4. 验证请求:本地启动与调用自检

代码生成后别急着高兴,先启动看能不能跑。SSE 模式:

cd mcp-mermaid-server python3 main.py

看到服务监听端口后,去 Cherry Studio 配置 SSE 地址,保存后点开工具列表,确认convert_mermaid出现。然后发一条测试请求:

请使用 mcp-mermaid-server 工具将下面代码转成 PNG 图片: sequenceDiagram Alice->>+John: Hello John, how are you? John-->>-Alice: Hi Alice, I can hear you!

服务端会打印请求日志,里面有一条mermaid.ink的 URL。把这条 URL 复制到浏览器打开,能看到渲染好的时序图,说明链路通了。前端如果显示 base64 不友好,直接看 URL 更直观。

stdio 模式用 Trae 验证。配置好mcpServers后重启客户端,同样发上面的请求。这次返回的是 base64 图片数据,复制这段 base64 到任意支持 base64 转图片的工具里,就能看到图。两种模式都跑通,说明 MCP-Server 可用。

这里补一句:如果你只想快速验证模型对话能力,可以先用模型对话页面(https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite)确认 Key 和 Model ID 没问题,再回到 MCP 调试,能省不少排查时间。

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

跑 MCP-Server 时我踩过几个典型坑,对照着看能快速定位。

401 Unauthorized:九成是 Key 没生效。检查环境变量是否真的导出成功,echo $TAOTOKEN_API_KEY看有没有值;再确认 Base URL 是不是https://taotoken.net/api,多一个字符都会 401。

local proxy failed:通常是客户端配置的地址格式不对,或者本地网络到网关的连通性有问题。先确认base_url按文档原文写,别自己拼/v1;再确认服务本身已启动、端口没被占用。

reading choices 报错:这类错误一般出现在返回体解析阶段,说明请求发出去了但响应结构不符合预期。常见原因是 Model ID 填错,或者用了不支持的工具调用模型。换成文档里明确支持 function calling 的模型再试。

OAuth 相关报错:如果你在 Claude Code 或 Codex 里看到 OAuth 提示,说明客户端在走它自己的登录流程,而不是用你配的 Key。这时候要检查是否把认证方式切到了 API Key 模式,三件套(Base URL + Key + Model ID)是否都填了。缺 Model ID 时,有些客户端会回退到 OAuth 流程。

还有一个隐蔽的坑:Mermaid 代码里有特殊字符时,Base64 编码要用 URL-safe 版本,否则mermaid.ink会返回 400。RovoDev 生成的代码里如果没处理,手动把+和/替换掉即可。

6. 继续往下走:把 MCP-Server 接进你的日常工作流

服务跑通只是起点。接下来你可以把convert_mermaid接进文档生成流程:让模型先输出 Mermaid 代码,再自动调这个工具转成图片,塞进 Markdown 或 PDF。也可以照着同样的套路,用 Mermaid 描述别的服务结构,让 RovoDev 生成更多 MCP 工具,比如文件处理、数据查询。

需要长期跑编码和 Agent 任务的话,Coding Plan(https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite)比按量调用更省心。接入文档和 API Keys 页面建议收藏,换工具时直接对照三件套配置,能少走很多弯路。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进