1. Conduid
  2. AI
  3. Mermaid MCP Server
MCP server · AI

Mermaid MCP Server

A Model Context Protocol (MCP) server that converts Mermaid diagrams to PNG images

Unclaimed MIT last commit a year ago ai
67Good

Scored 3 hours ago · breakdown

About Mermaid MCP Server

Mermaid MCP Server is an MCP server published by peng-shawn in the AI category: a Model Context Protocol (MCP) server that converts Mermaid diagrams to PNG images. It has been installed 0 times through Conduid.

The repository has 222 stars and 22 forks, with the last commit a year ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues (0) before depending on it in production.

Install

Install
npx mermaid-mcp-server

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

Ask AI about Mermaid MCP Server

Powered by Claude · Grounded in docs

I know everything about Mermaid MCP Server. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ·README presentNot checked yet.
  • ·License declaredNot checked yet.
  • ·Tests presentNot checked yet.
  • ·Dependencies pinnedNot checked yet.
  • ·No dynamic code executionNot checked yet.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

v0.1.1Correctly scoped package name · 6 Mar 2025Creating this release to match the version in npm
v0.1.0Initial Release · 5 Mar 2025

README

Mermaid MCP Server

A Model Context Protocol (MCP) server that converts Mermaid diagrams to PNG images or SVG files. This server allows AI assistants and other applications to generate visual diagrams from textual descriptions using the Mermaid markdown syntax.

Features

  • Converts Mermaid diagram code to PNG images or SVG files
  • Supports multiple diagram themes (default, forest, dark, neutral)
  • Customizable background colors
  • Uses Puppeteer for high-quality headless browser rendering
  • Implements the MCP protocol for seamless integration with AI assistants
  • Flexible output options: return images/SVG directly or save to disk
  • Error handling with detailed error messages

How It Works

The server uses Puppeteer to launch a headless browser, render the Mermaid diagram to SVG, and optionally capture a screenshot of the rendered diagram. The process involves:

  1. Launching a headless browser instance
  2. Creating an HTML template with the Mermaid code
  3. Loading the Mermaid.js library
  4. Rendering the diagram to SVG
  5. Either saving the SVG directly or taking a screenshot as PNG
  6. Either returning the image/SVG directly or saving it to disk

Build

npx tsc

Usage

Use with Claude desktop

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

Use with Cursor and Cline

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

You can find a list of mermaid diagrams under ./diagrams, they are created using Cursor agent with prompt: "generate mermaid diagrams and save them in a separate diagrams folder explaining how renderMermaidPng work"

Run with inspector

Run the server with inspector for testing and debugging:

npx @modelcontextprotocol/inspector node dist/index.js

The server will start and listen on stdio for MCP protocol messages.

Learn more about inspector here.

Installing via Smithery

To install Mermaid Diagram Generator for Claude Desktop automatically via Smithery:

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

Docker and Smithery Environments

When running in Docker containers (including via Smithery), you may need to handle Chrome dependencies:

  1. The server now attempts to use Puppeteer's bundled browser by default

  2. If you encounter browser-related errors, you have two options:

    Option 1: During Docker image build:

    • Set PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true when installing Puppeteer
    • Install Chrome/Chromium in your Docker container
    • Set PUPPETEER_EXECUTABLE_PATH at runtime to point to the Chrome installation

    Option 2: Use Puppeteer's bundled Chrome:

    • Ensure your Docker container has the necessary dependencies for Chrome
    • No need to set PUPPETEER_SKIP_CHROMIUM_DOWNLOAD
    • The code will use the bundled browser automatically

For Smithery users, the latest version should work without additional configuration.

API

The server exposes a single tool:

  • generate: Converts Mermaid diagram code to a PNG image or SVG file
    • Parameters:
      • code: The Mermaid diagram code to render
      • theme: (optional) Theme for the diagram. Options: "default", "forest", "dark", "neutral"
      • backgroundColor: (optional) Background color for the diagram, e.g. 'white', 'transparent', '#F0F0F0'
      • outputFormat: (optional) Output format for the diagram. Options: "png", "svg" (defaults to "png")
      • name: Name for the generated file (required when CONTENT_IMAGE_SUPPORTED=false)
      • folder: Absolute path to save the image/SVG to (required when CONTENT_IMAGE_SUPPORTED=false)

The behavior of the generate tool depends on the CONTENT_IMAGE_SUPPORTED environment variable:

  • When CONTENT_IMAGE_SUPPORTED=true (default): The tool returns the image/SVG directly in the response
  • When CONTENT_IMAGE_SUPPORTED=false: The tool saves the image/SVG to the specified folder and returns the file path

Environment Variables

  • CONTENT_IMAGE_SUPPORTED: Controls whether images are returned directly in the response or saved to disk
    • true (default): Images are returned directly in the response
    • false: Images are saved to disk, requiring name and folder parameters

Examples

Basic Usage

// 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]"
}

With Theme and Background Color

// 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"
}

Saving to Disk (when CONTENT_IMAGE_SUPPORTED=false)

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

Generating SVG Output

// Generate a state diagram as 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"
}

FAQ

Doesn't Claude desktop already support mermaid via canvas?

Yes, but it doesn't support the theme and backgroundColor options. Plus, having a dedicated server makes it easier to create mermaid diagrams with different MCP clients.

Why do I need to specify CONTENT_IMAGE_SUPPORTED=false when using with Cursor?

Cursor doesn't support inline images in responses yet.

Publishing

This project uses GitHub Actions to automate the publishing process to npm.

Method 1: Using the Release Script (Recommended)

  1. Make sure all your changes are committed and pushed

  2. Run the release script with either a specific version number or a semantic version increment:

    # Using a specific version number
    npm run release 0.1.4
    
    # Using semantic version increments
    npm run release patch  # Increments the patch version (e.g., 0.1.3 → 0.1.4)
    npm run release minor  # Increments the minor version (e.g., 0.1.3 → 0.2.0)
    npm run release major  # Increments the major version (e.g., 0.1.3 → 1.0.0)
    
  3. The script will:

    • Validate the version format or semantic increment
    • Check if you're on the main branch
    • Detect and warn about version mismatches between files
    • Update all version references consistently (package.json, package-lock.json, and index.ts)
    • Create a single commit with all version changes
    • Create and push a git tag
    • The GitHub workflow will then automatically build and publish to npm

Method 2: Manual Process

  1. Update your code and commit the changes
  2. Create and push a new tag with the version number:
    git tag v0.1.4  # Use the appropriate version number
    git push origin v0.1.4
    
  3. The GitHub workflow will automatically:
    • Build the project
    • Publish to npm with the version from the tag

Note: You need to set up the NPM_TOKEN secret in your GitHub repository settings. To do this:

  1. Generate an npm access token with publish permissions
  2. Go to your GitHub repository → Settings → Secrets and variables → Actions
  3. Create a new repository secret named NPM_TOKEN with your npm token as the value

Badges

smithery badge

License

MIT

README mirrored from the source repository 3 hours ago. The original is authoritative.

Questions

About Mermaid MCP Server

How do I install Mermaid MCP Server?

Run npx mermaid-mcp-server, then add the server to your MCP client's configuration. Conduid has recorded 0 installs, so the command is known to work with current clients.

Is Mermaid MCP Server safe to use with an AI agent?

Its trust score is 67 out of 100 (good). It passes 0 of 1 static security checks; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Mermaid MCP Server still maintained?

The last commit was a year ago, with 0 open issues. That's long enough that you should check whether the maintainer is responding to issues before depending on it.