关于 Mermaid Validator
一个验证并渲染 Mermaid 图表的 MCP 服务,使 LLM 能够检查图表语法并获得 PNG 渲染结果。适合需要在 AI 客户端中生成或校验图表的开发者。
主要功能
- 01validateMermaid 工具校验图表语法
- 02语法有效时返回 PNG 渲染图
- 03基于 Mermaid CLI 进行校验与渲染
- 04通过 stdio 与 MCP 客户端通信
适用场景
- 01让 LLM 生成的 Mermaid 图表在交付前完成语法校验
- 02在编辑器中预览 Mermaid 图表的渲染结果
- 03排查图表语法错误并获取详细报错信息
MCP 相关
该服务通过 stdio 运行,向 MCP 客户端暴露 validateMermaid 工具,接收图表语法并返回校验结果与 PNG 图像。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| diagram | string | 是 | |
| format | enum | 否 | svg | png |
详细介绍
MCP Server:Mermaid 验证器
一个用于验证和渲染 Mermaid 图表的 Model Context Protocol 服务。此服务可让大模型验证和渲染 Mermaid 图表。
用法
快速开始
你可以将 Mermaid Validator 添加到 mcp servers 文件中,以配置 MCP 客户端使用它:
{
"mcpServers": {
"mermaid-validator": {
"command": "npx",
"args": [
"-y",
"@rtuin/mcp-mermaid-validator@latest"
]
}
}
}
架构
高层架构
此项目采用简单的 TypeScript Node.js 应用结构:
- 主应用:一个用于验证 Mermaid 图表并返回渲染后 PNG 输出的 Node.js 服务
- MCP 集成:使用 Model Context Protocol SDK 向兼容 MCP 的客户端公开功能
- Mermaid CLI 集成:利用 Mermaid CLI 工具验证和渲染图表
代码结构
mcp-mermaid-validator/
├── dist/ # Compiled JavaScript output
│ └── main.js # Compiled main application
├── src/ # TypeScript source code
│ └── main.ts # Main application entry point
├── node_modules/ # Dependencies
├── package.json # Project dependencies and scripts
├── package-lock.json # Dependency lock file
├── tsconfig.json # TypeScript configuration
├── eslint.config.js # ESLint configuration
├── .prettierrc # Prettier configuration
└── README.md # Project documentation
组件功能
MCP 服务(主要组件)
核心功能在 src/main.ts 中实现。此组件:
- 创建 MCP 服务实例
- 注册一个接受 Mermaid 图表语法的
validateMermaid工具 - 使用 Mermaid CLI 验证并渲染图表
- 返回验证结果和渲染后的 PNG(如果有效)
- 使用恰当的错误消息处理错误情况
数据流
- 输入:作为字符串的 Mermaid 图表语法
- 处理:
- 通过 stdin 将图表传递给 Mermaid CLI
- CLI 验证语法,并在语法有效时渲染 PNG
- 从 stdout/stderr 捕获输出和错误
- 输出:
- 成功:文本确认信息 + 以 base64 编码的渲染后 PNG 图像
- 失败:包含验证失败详情的错误消息
依赖项
外部库
- @modelcontextprotocol/sdk:用于实现 Model Context Protocol 的 SDK
- @mermaid-js/mermaid-cli:用于验证和渲染 Mermaid 图表的 CLI 工具
- zod:TypeScript 的模式验证库
开发依赖项
- typescript:TypeScript 编译器
- eslint:代码检查工具
- prettier:代码格式化工具
API 规范
validateMermaid 工具
用途:验证 Mermaid 图表,并在有效时返回渲染后的 PNG
参数:
diagram(string):要验证的 Mermaid 图表语法
返回值:
- 成功:
{ content: [ { type: "text", text: "Mermaid diagram is valid" }, { type: "image", data: string, // Base64-encoded PNG mimeType: "image/png" } ] } - 失败:
{ content: [ { type: "text", text: "Mermaid diagram is invalid" }, { type: "text", text: string // Error message }, { type: "text", text: string // Detailed error output (if available) } ] }
技术决策
-
MCP 集成:项目使用 Model Context Protocol 标准化 AI 工具的接口,从而与兼容的客户端无缝集成。
-
PNG 输出格式:实现默认使用 PNG 作为输出格式,以确保与大多数 MCP 客户端更好地兼容,尤其是 Cursor,因为它不支持 SVG。
-
子进程方案:实现使用 Node.js 子进程与 Mermaid CLI 交互,具有以下优点:
- 隔离主应用与渲染进程
- 能够捕获详细的错误信息
- 妥善处理渲染流程
-
错误处理策略:实现采用嵌套的 try-catch 结构,以便:
- 区分验证错误(图表语法无效)和系统错误
- 提供详细的错误信息,帮助用户修复图表
- 即使处理无效输入,也能确保服务保持稳定
-
简单的项目结构:项目采用直观的 TypeScript 项目结构,便于:
- 轻松维护和理解
- 直接管理依赖项
- 简化构建流程
构建和运行
可以使用 npm 脚本构建和运行应用:
# Install dependencies
npm install
# Build the application
npm run build
# Run locally (for development)
npx @modelcontextprotocol/inspector node dist/main.js
# Format code
npm run format
# Lint code
npm run lint
# Watch for changes (development)
npm run watch
应用作为 MCP 服务运行,并通过标准输入/输出通信,因此适合与兼容 MCP 的客户端集成。
发布
要发布新版本,请按顺序执行以下步骤:
npm run buildnpm run bumpnpm run changelognpm publish --access public
故障排除
- WSL/Windows 标准输入:早期版本使用
/dev/stdin调用 Mermaid CLI,这在 WSL 上可能因ENXIO而失败。此服务现在使用-处理标准输入/标准输出(-i -/-o -),以兼容 Linux/macOS/WSL/Windows。 - Inspector 工作目录:通过 MCP Inspector 启动时,请确保服务路径可解析(例如,
npx @modelcontextprotocol/inspector npx -y @rtuin/mcp-mermaid-validator@latest,或使用dist/main.js的绝对路径)。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。