这是一个使用Model Context Protocol (MCP)协议的服务器,用于将Mermaid图表转换为PNG图像或SVG文件。该服务器允许AI助手和其他应用程序通过使用Mermaid Markdown语法从文本描述生成可视化图表。
服务器使用Puppeteer启动一个无头浏览器,将Mermaid图表渲染为SVG,并可选地捕获渲染图表的截图。过程包括:
npx tsc
{
"mcpServers": {
"mermaid": {
"command": "npx",
"args": ["-y", "@peng-shawn/mermaid-mcp-server"]
}
}
}
env CONTENT_IMAGE_SUPPORTED=false npx -y @peng-shawn/mermaid-mcp-server
可以在./diagrams下找到Mermaid图表列表,它们是使用Cursor代理并提示:"生成Mermaid图表并将它们保存在一个单独的图表文件夹中,解释renderMermaidPng的工作原理"创建的。
为了测试和调试,可以使用检查器运行服务器:
npx @modelcontextprotocol/inspector node dist/index.js
服务器将启动并监听stdio上的MCP协议消息。
了解更多关于检查器的信息,请参阅这里。
要自动通过Smithery为Claude Desktop安装Mermaid图表生成器:
npx -y @smithery/cli install @peng-shawn/mermaid-mcp-server --client claude
在Docker容器中运行(包括通过Smithery),您可能需要处理Chrome依赖项:
服务器现在默认尝试使用Puppeteer捆绑的浏览器
如果遇到浏览器相关错误,您有两个选择:
选项1:在Docker镜像构建期间:
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=truePUPPETEER_EXECUTABLE_PATH指向Chrome安装选项2:使用Puppeteer捆绑的Chrome:
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD对于Smithery用户,最新版本应该无需额外配置即可工作。
服务器公开了一个工具:
generate:将Mermaid图表代码转换为PNG图像或SVG文件
code:要渲染的Mermaid图表代码theme:(可选)图表的主题。选项:"default","forest","dark","neutral"backgroundColor:(可选)图表的背景颜色,例如'white','transparent','#F0F0F0'outputFormat:(可选)图表的输出格式。选项:"png","svg"(默认为"png")name:生成文件的名称(当CONTENT_IMAGE_SUPPORTED=false时需要)folder:保存图像/SVG的绝对路径(当CONTENT_IMAGE_SUPPORTED=false时需要)generate工具的行为取决于CONTENT_IMAGE_SUPPORTED环境变量:
CONTENT_IMAGE_SUPPORTED=true(默认):工具直接在响应中返回图像/SVGCONTENT_IMAGE_SUPPORTED=false:工具将图像/SVG保存到指定文件夹并返回文件路径CONTENT_IMAGE_SUPPORTED:控制是否直接在响应中返回图像还是保存到磁盘
true(默认):图像直接在响应中返回false:图像保存到磁盘,需要name和folder参数// 使用默认设置生成流程图
{
"code": "flowchart TD\n A[Start] --> B{Is it?}\n B -->|Yes| C[OK]\n B -->|No| D[End]"
}
// 使用森林主题和浅灰色背景生成序列图
{
"code": "sequenceDiagram\n Alice->>John: Hello John, how are you?\n John-->>Alice: Great!",
"theme": "forest",
"backgroundColor": "#F0F0F0"
}
// 生成类图并将其保存为PNG
{
"code": "classDiagram\n Class01 <|-- AveryLongClass\n Class03 *-- Class04\n Class05 o-- Class06",
"theme": "dark",
"name": "class_diagram",
"folder": "/path/to/diagrams"
}
// 生成状态图作为SVG
{
"code": "stateDiagram-v2\n [*] --> Still\n Still --> [*]\n Still --> Moving\n Moving --> Still\n Moving --> Crash\n Crash --> [*]",
"outputFormat": "svg",
"name": "state_diagram",
"folder": "/path/to/diagrams"
}
是的,但它不支持theme和backgroundColor选项。此外,拥有一个专用服务器使得使用不同MCP客户端创建Mermaid图表更加容易。
Cursor目前还不支持在响应中内联显示图片。
此项目使用GitHub Actions自动化发布过程到npm。
确保所有更改已提交并推送
使用特定版本号或语义版本增量运行发布脚本:
# 使用特定版本号
npm run release 0.1.4
# 使用语义版本增量
npm run release patch # 增加补丁版本(例如,0.1.3 → 0.1.4)
npm run release minor # 增加次要版本(例如,0.1.3 → 0.2.0)
npm run release major # 增加主要版本(例如,0.1.3 → 1.0.0)
脚本将:
git tag v0.1.4 # 使用适当的版本号
git push origin v0.1.4
注意:您需要在GitHub存储库设置中设置NPM_TOKEN秘密。为此:
NPM_TOKEN的新仓库秘密,值为您的npm令牌MIT