使用说明
Mermaid MCP服务器
用于验证Mermaid图的模型上下文协议(MCP)服务器。
在上面实现一个最小的Python包装器https://github.com/mermaid-js/mermaid-cli更简单的开箱即用。
概述
Python MCP服务器,用于验证Mermaid图并(可选)将其渲染为PNG图像。它使用Mermaid CLI工具执行验证和渲染。
服务器为LLM提供结构化验证结果,包括:
- 布尔验证状态 (
is_valid: true/false)指示Mermaid图语法是否正确 - 详细的错误消息 解释验证失败时到底出了什么问题(例如,语法错误、不支持的图表类型、格式错误的节点)
- 可选的base64编码PNG图像 用于视觉验证的成功渲染图表
这使LLM能够以编程方式验证Mermaid图语法,了解特定错误以提供有用的更正,并可选择接收渲染输出的视觉确认。
还提供了一个简单的Pydantic AI MCP客户端,用于使用Gemini模型调用MCP服务器进行测试。
先决条件
重要:此MCP服务器要求在您的系统上安装Node.js,即使您只使用服务器组件(而不是客户端)。服务器内部调用 npx @mermaid-js/mermaid-cli 作为执行图表验证和渲染的子流程。
所需依赖关系
- Node.js 使用npm(所有使用都需要)
- Mermaid CLI:安装
npm install -g @mermaid-js/mermaid-cli - python 带uv(用于运行MCP服务器)
快速依赖设置
# Install Mermaid CLI globally
npm install -g @mermaid-js/mermaid-cli
# Verify installation
npx @mermaid-js/mermaid-cli --version
快速启动
要将此服务器与MCP客户端(如Claude Desktop)一起使用,请将以下配置添加到MCP设置中:
备注:在配置MCP服务器之前,请确保安装了Node.js和Mermaid CLI(请参阅上面的先决条件)。
配置格式
-
克隆此存储库
-
将其添加到您的MCP客户端配置文件中(例如。,
claude_desktop_config.json):
{
"mcpServers": {
"mermaid-validator": {
"command": "uv",
"args": ["run", "/path/to/mermaid_mcp_server.py"],
}
}
}
配置选项
- 命令:使用
uv运行服务器 - 参数:使用以下命令运行服务器脚本
uv run - 当前工作目录:设置为克隆存储库的绝对路径
- 环境:服务器的环境变量
MCP_TRANSPORT:设置为"stdio"用于标准输入/输出通信
扩展配置示例
{
"mcpServers": {
"mermaid-validator": {
"command": "uv",
"args": ["run", "/path/to/mermaid_mcp_server.py"],
"env": {
"MCP_TRANSPORT": "stdio",
}
}
}
}
Mermaid CLI上的摘要
Python包装器通过抽象掉复杂的文件处理和命令行参数,大大简化了Mermaid CLI的使用:
没有包装(原始美人鱼cli):
# Create input file
echo "graph TD; A-->B" > diagram.mmd
# Create puppeteer config file
echo '{"args": ["--no-sandbox", "--disable-setuid-sandbox"]}' > puppeteer-config.json
# Run mermaid-cli with multiple arguments
npx @mermaid-js/mermaid-cli -i diagram.mmd -o output.png --puppeteerConfigFile puppeteer-config.json
# Handle output file and cleanup
使用Python包装器:
# Simple function call with diagram text
result = await validate_mermaid_diagram("graph TD; A-->B")
# All file handling, configuration, and cleanup is automatic
# Returns structured result with validation status and base64-encoded image
关键摘要:
- 临时文件管理:自动创建和清理临时
.mmd输入文件 - 输出文件处理:管理临时
.png输出文件并将其转换为base64字符串 - 木偶配置:自动生成无头浏览器渲染所需的沙盒配置
- 错误处理:捕获并返回结构化错误消息,而不是原始stderr输出
- 指挥建设:构建完整
npx @mermaid-js/mermaid-cli带有所有必要标志的命令 - 资源清理:确保处理后正确删除所有临时文件
这种抽象允许用户专注于图表验证和呈现,而无需处理底层文件系统操作和命令行复杂性。
地方发展
该存储库可以独立使用,以编程方式测试Mermaid MCP验证器的功能。
需求
请参阅 先决条件 以上部分介绍了所需的依赖关系(Node.js、Mermaid CLI和带uv的Python)。
快速设置(推荐)
使用提供的Makefile简化设置:
# Install all dependencies (Python + Node.js + Mermaid CLI)
make install
# Run validation tests
make test
手动设置
如果您更喜欢手动设置:
- 克隆此存储库
- 安装依赖项:
uv sync - 安装Mermaid命令行界面:
npm install -g @mermaid-js/mermaid-cli - 复制
.env.example向.env并填写您的API密钥 - 运行服务器:
uv run mermaid_mcp_server.py
用法
服务器公开了一个用于验证Mermaid图的工具:
validate_mermaid_diagram:验证Mermaid图并返回验证结果
刀具参数
diagram_text(必填):美人鱼图文本验证return_image(可选,默认值:false):是否返回base64编码的PNG图像
上下文长度优化
重要:默认情况下,该工具不返回base64编码的图像(return_image=false)以保持LLM对话中的上下文长度。Base64编码的图像可能是非常长的字符串(通常为10KB-100KB+),这会显著影响对话的可用上下文。
何时使用每个设置:
return_image=false(默认):仅用于图表验证。快速且上下文高效。return_image=true:仅当您特别需要渲染图像数据时使用。警告:这将消耗大量上下文长度。
示例用法
# Validation only (recommended for most cases)
result = await validate_mermaid_diagram("graph TD; A-->B")
# Returns: MermaidValidationResult(is_valid=True, error_message=None, diagram_image=None)
# Validation with image (use sparingly)
result = await validate_mermaid_diagram("graph TD; A-->B", return_image=True)
# Returns: MermaidValidationResult(is_valid=True, error_message=None, diagram_image="iVBORw0KGgoAAAANSUhEUg...")
测试
该项目包括方便的测试命令:
# Run all tests
make test
# Or run the test script directly
uv run test_pydantic.py
测试脚本使用Pydantic AI和Gemini模型来验证MCP服务器功能。
