Skip to main content
Glama
rtuin

mcp-mermaid-validator

by rtuin

Servidor MCP: Validador de sirena

Un servidor de Protocolo de Contexto de Modelo que valida y renderiza diagramas de sirena . Este servidor permite a los LLM validar y renderizar diagramas de sirena.

Uso

Inicio rápido

Puede configurar su cliente MCP para utilizar Mermaid Validator agregándolo a su archivo de servidores mcp:

{
  "mcpServers": {
    "mermaid-validator": {
      "command": "npx",
      "args": [
        "-y",
        "@rtuin/mcp-mermaid-validator@latest"
      ]
    }
  }
}

Related MCP server: Mermaid MCP Server

Arquitectura

Arquitectura de alto nivel

Este proyecto está estructurado como una sencilla aplicación TypeScript Node.js que:

  1. Aplicación principal : un servicio Node.js que valida los diagramas de Mermaid y devuelve la salida PNG renderizada

  2. Integración con MCP : utiliza el SDK del protocolo de contexto de modelo para exponer la funcionalidad a clientes compatibles con MCP

  3. Integración de Mermaid CLI : aprovecha la herramienta Mermaid CLI para realizar la validación y representación de diagramas

Estructura del código

mcp-mermaid-validator/
├── dist/                   # Compiled JavaScript output
│   └── main.js             # Compiled main application
├── src/                    # TypeScript source code
│   └── main.ts             # Main application entry point
├── node_modules/           # Dependencies
├── package.json            # Project dependencies and scripts
├── package-lock.json       # Dependency lock file
├── tsconfig.json           # TypeScript configuration
├── eslint.config.js        # ESLint configuration
├── .prettierrc             # Prettier configuration
└── README.md               # Project documentation

Funcionalidad del componente

Servidor MCP (Componente principal)

La funcionalidad principal se implementa en src/main.ts . Este componente:

  1. Crea una instancia de servidor MCP

  2. Registra una herramienta validateMermaid que acepta la sintaxis del diagrama Mermaid

  3. Utiliza la CLI de Mermaid para validar y renderizar diagramas

  4. Devuelve los resultados de la validación y el PNG renderizado (si es válido)

  5. Maneja casos de error con mensajes de error apropiados

Flujo de datos

  1. Entrada : Sintaxis del diagrama de sirena como cadena

  2. Procesando :

    • El diagrama se pasa a la CLI de Mermaid a través de la entrada estándar.

    • La CLI valida la sintaxis y genera un PNG si es válido

    • La salida y los errores se capturan desde stdout/stderr

  3. Producción :

    • Éxito: Confirmación de texto + PNG renderizado como imagen codificada en base64

    • Error: Mensaje de error con detalles sobre el error de validación

Dependencias

Bibliotecas externas

  • @modelcontextprotocol/sdk : SDK para implementar el Protocolo de Contexto de Modelo

  • @mermaid-js/mermaid-cli : herramienta CLI para validar y renderizar diagramas de Mermaid

  • zod : Biblioteca de validación de esquemas para TypeScript

Dependencias de desarrollo

  • typescript : compilador de TypeScript

  • eslint : utilidad de pelusa

  • Más bonito : Formato de código

Especificación API

Herramienta validateMermaid

Propósito : Valida un diagrama de sirena y devuelve el PNG renderizado si es válido

Parámetros :

  • diagram (cadena): La sintaxis del diagrama de sirena para validar

Valor de retorno :

  • Éxito:

    {
      content: [
        { 
          type: "text", 
          text: "Mermaid diagram is valid" 
        },
        {
          type: "image", 
          data: string, // Base64-encoded PNG
          mimeType: "image/png"
        }
      ]
    }
  • Falla:

    {
      content: [
        { 
          type: "text", 
          text: "Mermaid diagram is invalid" 
        },
        {
          type: "text",
          text: string // Error message
        },
        {
          type: "text",
          text: string // Detailed error output (if available)
        }
      ]
    }

Decisiones técnicas

  1. Integración MCP : el proyecto utiliza el Protocolo de Contexto de Modelo para estandarizar la interfaz de las herramientas de IA, lo que permite una integración perfecta con clientes compatibles.

  2. Formato de salida PNG : la implementación utiliza PNG como formato de salida predeterminado para garantizar una mejor compatibilidad con la mayoría de los clientes MCP, particularmente Cursor, que no admite SVG.

  3. Enfoque de proceso secundario : la implementación utiliza procesos secundarios de Node.js para interactuar con la CLI de Mermaid, que proporciona:

    • Aislamiento entre la aplicación principal y el proceso de renderizado

    • Capacidad de capturar información detallada de errores

    • Manejo adecuado del pipeline de renderizado

  4. Estrategia de manejo de errores : La implementación utiliza una estructura try-catch anidada para:

    • Distinguir entre errores de validación (sintaxis de diagrama no válida) y errores del sistema

    • Proporcionar información detallada sobre errores para ayudar a los usuarios a corregir sus diagramas

    • Asegúrese de que el servicio permanezca estable incluso al procesar entradas no válidas

  5. Estructura de proyecto simple : el proyecto utiliza una estructura de proyecto TypeScript sencilla para:

    • Fácil mantenimiento y comprensión.

    • Gestión directa de dependencias

    • Proceso de construcción simplificado

Construcción y ejecución

La aplicación se puede crear y ejecutar utilizando scripts npm:

# Install dependencies
npm install

# Build the application
npm run build

# Run locally (for development)
npx @modelcontextprotocol/inspector node dist/main.js

# Format code
npm run format

# Lint code
npm run lint

# Watch for changes (development)
npm run watch

La aplicación se ejecuta como un servidor MCP que se comunica a través de entrada/salida estándar, lo que la hace adecuada para la integración con clientes compatibles con MCP.

Liberar

Para lanzar una nueva versión, siga estos pasos en orden:

  • npm run build

  • npm run bump

  • npm run changelog

  • npm publish --access public

Available Tools

1 tool
validateMermaidC

Validates a Mermaid diagram and returns the rendered image (PNG or SVG) if valid

ParametersJSON Schema
NameRequiredDescriptionDefault
diagramYes
formatNopng

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations; description fails to disclose what happens on invalid input (e.g., error messages), side effects, or rate limits. Minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no fluff. Efficient for its brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema; description mentions 'rendered image' but not format details (binary vs base64) or validation success/failure behavior. Lacks completeness for a validation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%; tool description does not explain parameters beyond schema fields. 'diagram' and 'format' remain underdocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb-resource: 'Validates a Mermaid diagram' and specifies output ('rendered image'). Lacks sibling differentiation but no siblings exist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use or when not to, no alternatives mentioned. Implied usage only.

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. 1 tool updatev0.7.0
    • ChangedvalidateMermaid1 field changed
      • addedInput schema / properties / format
        Added value: +{
        +  "default": "png",
        +  "enum": [
        +    "svg",
        +    "png"
        +  ],
        +  "type": "string"
        +}
  2. 1 tool updatev1.0.0
    • First observedvalidateMermaid

TDQS

B3.4/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility for confusion. The tool's purpose is clear and distinct.

Naming Consistency5/5

A single tool cannot be inconsistent. The name 'validateMermaid' follows a clear verb_noun pattern.

Tool Count5/5

A single validation tool perfectly matches the server's focused purpose. Adding more tools would be unnecessary.

Completeness5/5

The tool fully covers the domain: it validates Mermaid diagrams and returns the rendered image. No obvious gaps exist.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers