mcpField
D
diagramport

diagramport

本地服务
github.com/CloudCorpRecords媒体与设计02 周前更新

关于 diagramport

diagramport 是用于验证 Mermaid 语法并生成图表输出的 MCP 服务和命令行工具。它可返回已验证文本、本地构建 mermaid.ink 链接,或通过本机配置的命令渲染图像。

主要功能

  1. 01在本地验证 Mermaid 语法
  2. 02返回已验证的 Mermaid 文本
  3. 03生成 SVG 或 PNG 分享链接
  4. 04通过配置的命令渲染 SVG 或 PNG
  5. 05将渲染后的 PNG 保存为文件

适用场景

  1. 01分享前检查图表语法
  2. 02根据图表创建 mermaid.ink 链接
  3. 03使用本地渲染器渲染图表
  4. 04将渲染后的图表保存到磁盘

MCP 相关

MCP 服务提供一个工具,可验证 Mermaid 输入,并按所选输出类型返回语法、分享链接、渲染图像数据或标记内容,或已保存文件的路径。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-diagramport": {
"command": "npx",
"args": [
"-y",
"@reneturcios/diagramport"
]
}
}
}
启动命令npx -y @reneturcios/diagramport

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/diagramport0.1.0
ocighcr.io/cloudcorprecords/diagramport:0.1.0

工具

1

收录的工具列表 · 更新于 1 周前

参数类型必填说明
themestring否图表主题(可选)。默认为 'default'。
mermaidstring是用于生成的 Mermaid 图表语法,例如 graph TD; A-->B; A-->C; B-->D; C-->D;。
outputTypestring否图表的输出类型。可选值为 'base64'、'svg'、'mermaid'、'file'、'svg_url' 或 'png_url'。默认为 'base64'。'base64' 会将 PNG 图像作为 Base64 编码字符串返回。'file' 会将 PNG 图像保存到磁盘。*_url 选项会返回 mermaid.ink 公共链接,便于远程分享。
backgroundColorstring否图表的背景颜色(可选)。默认为 'white'。

详细介绍

diagramport

diagramport 可根据 Mermaid 语法生成 Mermaid 图表。提供图表语法——graph TD; A-->B; 等——即可获得所需格式:语法本身、可分享的 mermaid.ink 链接,或通过你在本机配置的渲染器命令生成的图像。

除渲染之外,其余逻辑都在本地运行且始终可用:系统会先验证语法,再进行其他操作;分享链接直接根据图表文本生成,不会发起任何网络请求。

安装

npx @reneturcios/diagramport generate --mermaid "graph TD; A-->B;" --output-type mermaid

也可以运行容器镜像:

docker run -i ghcr.io/cloudcorprecords/diagramport

容器默认启动 MCP 服务(见下文)。传入 CLI 参数即可将其用作 CLI。

CLI

# Validate syntax only (exit 1 with the reason when invalid)
diagramport validate --mermaid "graph TD; A-->B; A-->C; B-->D; C-->D;"

# Return the validated syntax
diagramport generate --mermaid "graph TD; A-->B;" --output-type mermaid

# Build a shareable mermaid.ink link (SVG or PNG)
diagramport generate --mermaid "graph TD; A-->B;" --output-type svg_url
diagramport generate --mermaid "graph TD; A-->B;" --output-type png_url

# Render an image (needs DIAGRAMPORT_RENDERER_COMMAND, see below)
diagramport generate --mermaid "graph TD; A-->B;" --output-type base64
diagramport generate --mermaid "graph TD; A-->B;" --output-type file

diagramport --version

退出代码:成功时为 0;语法无效或渲染失败时为 1(错误信息会指出问题);用法错误时为 2。

MCP 服务

同一个可执行文件支持两种用途。mcp 子命令会启动 stdio MCP 服务:

npx -y @reneturcios/diagramport mcp

MCP 客户端配置:

{
  "mcpServers": {
    "diagramport": {
      "command": "npx",
      "args": ["-y", "@reneturcios/diagramport", "mcp"]
    }
  }
}
工具
工具输入返回内容
generate_mermaid_diagrammermaid(字符串,必填)——mermaid 图表语法;theme(字符串,可选,默认值为 default);backgroundColor(字符串,可选,默认值为 white);outputType(字符串,可选,默认值为 base64)——可选值为 base64、svg、mermaid、file、svg_url、png_url取决于 outputType:mermaid 返回经过验证的语法文本;svg_url / png_url 返回公开的 mermaid.ink 链接;base64 返回经过渲染的 PNG 图像的 base64 编码字符串;svg 返回经过渲染的 SVG 标记;file 将经过渲染的 PNG 图像保存到磁盘并返回其路径。

验证

生成任何输出之前,系统都会在本地检查语法。第一条非空行必须以已知图表类型开头(graph、flowchart、sequenceDiagram、classDiagram、stateDiagram、stateDiagram-v2、erDiagram、journey、userJourney、gantt、pie、gitGraph、mindmap、timeline、quadrantChart、requirementDiagram、C4Context),且引号和括号必须成对(双引号标签中的括号不计入)。语法无效时会报告指出原因的错误,绝不会将其传给渲染器或链接生成器。这是结构合理性检查,并非完整的 Mermaid 解析。

分享链接

对于 svg_url 和 png_url,diagramport 会在本地生成链接:将 UTF-8 图表文本进行 base64url 编码后,附加到 https://mermaid.ink/svg/(SVG)或 https://mermaid.ink/img/(PNG)之后。任何人打开该链接,都可以通过 mermaid.ink 渲染图表;diagramport 本身不会为生成链接发起网络请求。

渲染

diagramport 不捆绑任何渲染器——将图表渲染为图像需要 Mermaid 引擎,通常还需要无头浏览器;这些都由操作方自行配置。base64、svg 和 file 输出类型会通过 DIAGRAMPORT_RENDERER_COMMAND 环境变量指定的本地命令进行渲染。该命令通过 stdin 接收图表文本,并且必须将渲染后的图像字节写入 stdout:

export DIAGRAMPORT_RENDERER_COMMAND="my-mermaid-renderer --format png"
diagramport generate --mermaid "graph TD; A-->B;" --output-type base64

如果没有配置渲染器,这些输出类型会返回指出 DIAGRAMPORT_RENDERER_COMMAND 的错误。系统不会伪造或模拟图像字节。设置了 DIAGRAMPORT_OUTPUT_DIR 时,file 输出会保存到该目录;否则保存到 ./diagrams/,文件名带有时间戳,扩展名为 .png。

开发

npm install
npm run build   # tsc -> dist/
npm test        # node test runner over test/*.test.ts, no network, fake renderer only
npm run dev     # run the CLI from source via tsx

许可证

MIT——参见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。