mermaid-mcp-server
Servidor MCP de sirena
Un servidor de Protocolo de Contexto de Modelo (MCP) que convierte diagramas de Mermaid en imágenes PNG. Este servidor permite a los asistentes de IA y otras aplicaciones generar diagramas visuales a partir de descripciones textuales utilizando la sintaxis markdown de Mermaid.
Características
Convierte el código del diagrama de sirena en imágenes PNG.
Admite múltiples temas de diagrama (predeterminado, bosque, oscuro, neutral)
Colores de fondo personalizables
Utiliza Puppeteer para la representación de navegadores sin interfaz gráfica de alta calidad
Implementa el protocolo MCP para una integración perfecta con asistentes de IA
Opciones de salida flexibles: devuelve imágenes directamente o guárdalas en el disco
Manejo de errores con mensajes de error detallados
Related MCP server: Mermaid MCP Server
Cómo funciona
El servidor usa Puppeteer para iniciar un navegador sin interfaz gráfica, renderizar el diagrama de la Sirena a SVG y capturar una captura de pantalla del diagrama renderizado. El proceso implica:
Lanzar una instancia de navegador sin cabeza
Creando una plantilla HTML con el código Mermaid
Cargando la biblioteca Mermaid.js
Representación del diagrama en formato SVG
Tomar una captura de pantalla del SVG renderizado como PNG
Devolviendo la imagen directamente o guardándola en el disco
Construir
npx tscUso
Usar con el escritorio de Claude
"mcpServers": {
"mermaid": {
"command": "npx",
"args": [
npx @peng-shawn/mermaid-mcp-server
]
}
}Usar con Cursor y Cline
env CONTENT_IMAGE_SUPPORTED=false npx @peng-shawn/mermaid-mcp-serverPuede encontrar una lista de diagramas de sirena en ./diagrams . Se crean utilizando el agente Cursor con el mensaje: "Genere diagramas de sirena y guárdelos en una carpeta de diagramas separada, explicando cómo funciona renderMermaidPng".
Correr con el inspector
Ejecute el servidor con el inspector para realizar pruebas y depuraciones:
npx @modelcontextprotocol/inspector node dist/index.jsEl servidor se iniciará y escuchará en stdio los mensajes del protocolo MCP.
Obtenga más información sobre el inspector aquí .
Instalación mediante herrería
Para instalar Mermaid Diagram Generator para Claude Desktop automáticamente a través de Smithery :
npx -y @smithery/cli install @peng-shawn/mermaid-mcp-server --client claudeEntornos Docker y Smithery
Al ejecutar en contenedores Docker (incluso a través de Smithery), es posible que deba gestionar dependencias de Chrome:
El servidor ahora intenta utilizar el navegador incluido de Puppeteer de forma predeterminada
Si encuentra errores relacionados con el navegador, tiene dos opciones:
Opción 1: Durante la compilación de la imagen de Docker:
Establezca
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=trueal instalar PuppeteerInstalar Chrome/Chromium en tu contenedor Docker
Establezca
PUPPETEER_EXECUTABLE_PATHen tiempo de ejecución para que apunte a la instalación de Chrome
Opción 2: Utilizar el Chrome incluido de Puppeteer:
Asegúrese de que su contenedor Docker tenga las dependencias necesarias para Chrome
No es necesario configurar
PUPPETEER_SKIP_CHROMIUM_DOWNLOADEl código utilizará automáticamente el navegador incluido.
Para los usuarios de Smithery, la última versión debería funcionar sin configuración adicional.
API
El servidor expone una única herramienta:
generate: convierte el código del diagrama de sirena en una imagen PNGParámetros:
code: El código del diagrama de la sirena para renderizartheme: (opcional) Tema para el diagrama. Opciones: "predeterminado", "bosque", "oscuro", "neutro".backgroundColor: (opcional) Color de fondo para el diagrama, por ejemplo, 'blanco', 'transparente', '#F0F0F0'name: Nombre del archivo generado (obligatorio cuando CONTENT_IMAGE_SUPPORTED=false)folder: ruta absoluta donde guardar la imagen (obligatorio cuando CONTENT_IMAGE_SUPPORTED=false)
El comportamiento de la herramienta generate depende de la variable de entorno CONTENT_IMAGE_SUPPORTED :
Cuando
CONTENT_IMAGE_SUPPORTED=true(predeterminado): La herramienta devuelve la imagen directamente en la respuestaCuando
CONTENT_IMAGE_SUPPORTED=false: La herramienta guarda la imagen en la carpeta especificada y devuelve la ruta del archivo
Variables de entorno
CONTENT_IMAGE_SUPPORTED: Controla si las imágenes se devuelven directamente en la respuesta o se guardan en el discotrue(predeterminado): las imágenes se devuelven directamente en la respuestafalse: las imágenes se guardan en el disco, lo que requiere parámetrosnameyfolder
Ejemplos
Uso básico
// 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]"
}Con tema y color de fondo
// 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"
}Guardar en el disco (cuando 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"
}Preguntas frecuentes
¿El escritorio de Claude ya no admite la sirena a través del lienzo?
Sí, pero no es compatible con las opciones de theme y backgroundColor . Además, tener un servidor dedicado facilita la creación de diagramas de sirena con diferentes clientes MCP.
¿Por qué necesito especificar CONTENT_IMAGE_SUPPORTED=false cuando lo uso con Cursor?
Cursor aún no admite imágenes en línea en las respuestas.
Publicación
Este proyecto utiliza GitHub Actions para automatizar el proceso de publicación en npm.
Método 1: Usar el script de lanzamiento (recomendado)
Asegúrese de que todos sus cambios estén confirmados y enviados
Ejecute el script de lanzamiento con un número de versión específico o un incremento de versión semántico:
# 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)El guión hará lo siguiente:
Validar el formato de la versión o el incremento semántico
Comprueba si estás en la rama principal
Detectar y advertir sobre desajustes de versiones entre archivos
Actualice todas las referencias de versión de manera consistente (package.json, package-lock.json e index.ts)
Crear una única confirmación con todos los cambios de versión
Crear y enviar una etiqueta git
Luego, el flujo de trabajo de GitHub se compilará y publicará automáticamente en npm.
Método 2: Proceso manual
Actualice su código y confirme los cambios
Crea y envía una nueva etiqueta con el número de versión:
git tag v0.1.4 # Use the appropriate version number git push origin v0.1.4El flujo de trabajo de GitHub realizará automáticamente lo siguiente:
Construir el proyecto
Publicar en npm con la versión de la etiqueta
Nota: Debes configurar el secreto NPM_TOKEN en la configuración de tu repositorio de GitHub. Para ello:
Generar un token de acceso npm con permisos de publicación
Vaya a su repositorio de GitHub → Configuración → Secretos y variables → Acciones
Cree un nuevo secreto de repositorio llamado
NPM_TOKENcon su token npm como valor
Insignias
Licencia
Instituto Tecnológico de Massachusetts (MIT)
Available Tools
1 toolgenerateC
Generate PNG image or SVG from mermaid markdown
| Name | Required | Description | Default |
|---|---|---|---|
| backgroundColor | No | Background color for the diagram, e.g. 'white', 'transparent', '#F0F0F0' (optional) | |
| code | Yes | The mermaid markdown to generate an image from | |
| folder | No | Absolute path to save the image to (optional) | |
| name | No | Name of the diagram (optional) | |
| outputFormat | No | Output format for the diagram (optional, defaults to 'png') | |
| theme | No | Theme for the diagram (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool generates images from mermaid markdown but doesn't cover important behavioral aspects like file system interactions (saving to a folder), performance characteristics, error handling, or any side effects. For a tool that writes files, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—a single sentence that directly states the tool's function without any fluff. It's front-loaded and efficiently communicates the core purpose, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, file output, no output schema) and lack of annotations, the description is insufficient. It doesn't explain what the tool returns, how errors are handled, or the implications of optional parameters like 'folder'. For a generative tool with file system operations, more context is needed for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, meaning all parameters are well-documented in the schema itself. The description doesn't add any meaningful parameter semantics beyond what's already in the schema (e.g., it doesn't explain parameter interactions or provide examples). This meets the baseline for high schema coverage but doesn't enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Generate PNG image or SVG from mermaid markdown'. It specifies the verb ('Generate'), resource ('PNG image or SVG'), and source material ('mermaid markdown'), making the function unambiguous. However, since there are no sibling tools mentioned, it doesn't need to distinguish from alternatives, so it doesn't reach the highest score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, prerequisites, or context. It simply states what the tool does without indicating scenarios where it's appropriate or any limitations. This lack of usage context leaves the agent without operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.0- First observed
generate
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity or overlap between tools. The tool's purpose is clearly defined and distinct by default.
A single tool inherently has perfect naming consistency, as there are no other tools to compare against. The name 'generate' is simple and follows a verb-based pattern.
One tool is too few for a server's purpose, as it severely limits functionality and suggests the server is under-scoped. A typical MCP server should offer multiple operations to handle a domain comprehensively.
The tool surface is severely incomplete for a mermaid diagramming domain. It only provides generation, missing essential operations like validation, editing, listing diagram types, or managing diagram states, which are necessary for agent workflows.
Maintenance
Related MCP Connectors
Render, verify, describe, and safely edit Mermaid diagrams through MCP.
Collaborative whiteboard MCP server — create objects, connectors, C4 diagrams, and manage boards
Create and manage Mermaid.js flowcharts and diagrams with AI agents via MCP.
MCP server for generating rough-draft project plans from natural-language prompts.
Related MCP Servers
- AlicenseBqualityCmaintenanceA Model Context Protocol server that validates and renders Mermaid diagrams.1186 npm57MIT
- AlicenseNot gradedqualityNot gradedmaintenanceA server that implements the Model Context Protocol (MCP), providing an interface for LLM applications to generate mermaid.js visualizations and diagrams.MIT
- AlicenseAqualityBmaintenanceA Model Context Protocol server that converts Mermaid diagram code into various image formats (PNG, JPG, SVG, PDF) with theme customization options for AI clients.39MIT
- AlicenseAqualityDmaintenanceAn MCP server that generates diagrams from Mermaid code in multiple formats (PNG, PDF, SVG).21MIT