M

Mermaid-MCP 服务器

@peng-shawn/mermaid-mcp-server
8 Stars 2.3k 次浏览 peng-shawn 更新于 2026-08-23

一个将Mermaid图表转换为PNG图像的模型上下文协议(MCP)服务器。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "mermaid": {
      "args": [
        "-y",
        "@peng-shawn/mermaid-mcp-server"
      ],
      "command": "npx"
    }
  }
}

该服务需要配置环境变量:CONTENT_IMAGE_SUPPORTED

服务介绍

Mermaid MCP 服务器

一个模型上下文协议 (MCP) 服务器,可以将 Mermaid 图表转换为 PNG 图像。此服务器允许 AI 助手和其他应用程序使用 Mermaid markdown 语法从文本描述生成可视化图表。

功能

  • 将 Mermaid 图表代码转换为 PNG 图像
  • 支持多种图表主题(默认、森林、暗色、中性)
  • 可自定义背景颜色
  • 使用 Puppeteer 进行高质量的无头浏览器渲染
  • 实现 MCP 协议,以便与 AI 助手无缝集成
  • 灵活的输出选项:直接返回图像或保存到磁盘
  • 带有详细错误信息的错误处理

工作原理

服务器使用 Puppeteer 启动无头浏览器,将 Mermaid 图表渲染为 SVG,并截取渲染图表的屏幕截图。过程包括:

  1. 启动无头浏览器实例
  2. 创建包含 Mermaid 代码的 HTML 模板
  3. 加载 Mermaid.js 库
  4. 将图表渲染为 SVG
  5. 将渲染的 SVG 截图作为 PNG
  6. 直接返回图像或将图像保存到磁盘

构建

npx tsc

使用

与 Claude 桌面版一起使用

"mcpServers": {
  "mermaid": {
    "command": "npx",
    "args": [
      npx @peng-shawn/mermaid-mcp-server
    ]
  }
}

与 Cursor 和 Cline 一起使用

env CONTENT_IMAGE_SUPPORTED=false npx @peng-shawn/mermaid-mcp-server

你可以在 ./diagrams 下找到一系列 Mermaid 图表,这些图表是使用 Cursor 代理通过提示 "generate mermaid diagrams and save them in a separate diagrams folder explaining how renderMermaidPng work" 生成并保存的。

使用检查器运行

使用检查器运行服务器以进行测试和调试:

npx @modelcontextprotocol/inspector node dist/index.js

服务器将启动并在 stdio 上监听 MCP 协议消息。

了解更多关于检查器的信息,请访问这里

通过 Smithery 安装

要通过 Smithery 自动安装 Claude Desktop 的 Mermaid 图表生成器:

npx -y @smithery/cli install @peng-shawn/mermaid-mcp-server --client claude

Docker 和 Smithery 环境

在 Docker 容器(包括通过 Smithery)中运行时,你可能需要处理 Chrome 依赖项:

  1. 服务器现在默认尝试使用 Puppeteer 的捆绑浏览器

  2. 如果遇到浏览器相关的错误,你有两个选择:

    选项 1:在构建 Docker 镜像期间:

    • 在安装 Puppeteer 时设置 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
    • 在你的 Docker 容器中安装 Chrome/Chromium
    • 在运行时设置 PUPPETEER_EXECUTABLE_PATH 指向 Chrome 安装路径

    选项 2:使用 Puppeteer 的捆绑 Chrome:

    • 确保你的 Docker 容器具有 Chrome 所需的依赖项
    • 不需要设置 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD
    • 代码将自动使用捆绑浏览器

对于 Smithery 用户,最新版本应该无需额外配置即可工作。

API

服务器公开了一个工具:

  • generate: 将 Mermaid 图表代码转换为 PNG 图像
    • 参数:
      • code: 要渲染的 Mermaid 图表代码
      • theme: (可选)图表的主题。选项:"default""forest""dark""neutral"
      • backgroundColor: (可选)图表的背景颜色,例如 'white''transparent''#F0F0F0'
      • name: 生成文件的名称(当 CONTENT_IMAGE_SUPPORTED=false 时必需)
      • folder: 保存图像的绝对路径(当 CONTENT_IMAGE_SUPPORTED=false 时必需)

generate 工具的行为取决于 CONTENT_IMAGE_SUPPORTED 环境变量:

  • CONTENT_IMAGE_SUPPORTED=true(默认):工具直接在响应中返回图像
  • CONTENT_IMAGE_SUPPORTED=false:工具将图像保存到指定文件夹,并返回文件路径

环境变量

  • CONTENT_IMAGE_SUPPORTED: 控制图像是直接在响应中返回还是保存到磁盘
    • true(默认):图像直接在响应中返回
    • false:图像保存到磁盘,需要 namefolder 参数

示例

基本用法

// Generate a flowchart with default settings
{
  "code": "flowchart TD\n    A[Start] --> B{Is it?}\n    B -->|Yes| C[OK]\n    B -->|No| D[End]"
}

使用主题和背景颜色

// Generate a sequence diagram with forest theme and light gray background
{
  "code": "sequenceDiagram\n    Alice->>John: Hello John, how are you?\n    John-->>Alice: Great!",
  "theme": "forest",
  "backgroundColor": "#F0F0F0"
}

保存到磁盘(当 CONTENT_IMAGE_SUPPORTED=false 时)

// Generate a class diagram and save it to disk
{
  "code": "classDiagram\n    Class01 <|-- AveryLongClass\n    Class03 *-- Class04\n    Class05 o-- Class06",
  "theme": "dark",
  "name": "class_diagram",
  "folder": "/path/to/diagrams"
}

常见问题

Claude 桌面版不是已经通过 canvas 支持 mermaid 了吗?

是的,但它不支持 themebackgroundColor 选项。此外,拥有一个专用服务器使得使用不同的 MCP 客户端创建 mermaid 图表变得更加容易。

为什么在与 Cursor 一起使用时需要指定 CONTENT_IMAGE_SUPPORTED=false

Cursor 还不支持在响应中内联图像。

发布

此项目使用 GitHub Actions 自动化发布过程到 npm。

方法 1:使用发布脚本(推荐)

  1. 确保所有更改都已提交并推送
  2. 使用特定版本号或语义版本增量运行发布脚本:
    # 使用特定版本号
    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)
    
  3. 脚本将执行以下操作:
    • 验证版本格式或语义增量
    • 检查是否位于主分支
    • 检测并警告文件之间的版本不匹配
    • 一致更新所有版本引用(package.jsonpackage-lock.jsonindex.ts
    • 创建包含所有版本更改的单个提交
    • 创建并推送 git 标签
    • GitHub 工作流将自动构建并发布到 npm

方法 2:手动过程

  1. 更新你的代码并提交更改
  2. 创建并推送带有版本号的新标签:
    git tag v0.1.4  # 使用适当的版本号
    git push origin v0.1.4
    
  3. GitHub 工作流将自动:
    • 构建项目
    • 根据标签中的版本号发布到 npm

注意:你需要在你的 GitHub 仓库设置中配置 NPM_TOKEN 密钥。为此,请执行以下步骤:

  1. 生成具有发布权限的 npm 访问令牌
  2. 转到你的 GitHub 仓库 → 设置 → 密码和变量 → 操作
  3. 创建一个名为 NPM_TOKEN 的新仓库密钥,其值为你的 npm 令牌

徽章

smithery 徽章

许可证

MIT

相关 MCP 服务