diagrams-mcp-server

Servidor MCP para generar diagramas de arquitectura en la nube, diagramas de flujo, diagramas de secuencia y más — impulsado por mingrammer/diagrams, Mermaid y PlantUML.

Documentación

diagrams-mcp-server

PyPI CI

Servidor MCP para generar diagramas de arquitectura en la nube, diagramas de flujo, diagramas de secuencia y más — impulsado por tres motores de renderizado: mingrammer/diagrams, Mermaid y PlantUML.

Example diagram

Comenzando

Instalación Local

Requisitos previos

Graphviz es necesario para el modo de renderizado local/en proceso predeterminado. Mermaid CLI y PlantUML son opcionales — instálalos solo si necesitas esos motores de renderizado específicos localmente.

DependenciaRequerida paraInstalación
Graphvizrender_diagram (arquitectura en la nube)brew install graphviz
Mermaid CLIrender_mermaid (diagramas de flujo, secuencia, etc.)npm install -g @mermaid-js/mermaid-cli
Java + PlantUMLrender_plantuml (diagramas UML)brew install openjdk + descargar plantuml.jar

Instalar el servidor

Mediante uvx (recomendado):

uvx diagrams-mcp-server

Mediante pip:

pip install diagrams-mcp-server

Desde el código fuente:

pip install git+https://github.com/ByteOverDev/diagrams-mcp.git

Configurar tu cliente MCP

Claude Desktop

Agrega a tu claude_desktop_config.json (Settings → Developer → Edit Config):

uvx (recomendado):

{
  "mcpServers": {
    "diagrams-mcp": {
      "command": "uvx",
      "args": ["diagrams-mcp-server"]
    }
  }
}

pip:

{
  "mcpServers": {
    "diagrams-mcp": {
      "command": "diagrams-mcp-server"
    }
  }
}
Claude Code (CLI)

Ejecuta:

claude mcp add diagrams-mcp -- uvx diagrams-mcp-server

O agrega a tu .mcp.json:

uvx (recomendado):

{
  "mcpServers": {
    "diagrams-mcp": {
      "command": "uvx",
      "args": ["diagrams-mcp-server"]
    }
  }
}

pip:

{
  "mcpServers": {
    "diagrams-mcp": {
      "command": "diagrams-mcp-server"
    }
  }
}
Cursor

Agrega a tu .cursor/mcp.json:

uvx (recomendado):

{
  "mcpServers": {
    "diagrams-mcp": {
      "command": "uvx",
      "args": ["diagrams-mcp-server"]
    }
  }
}

pip:

{
  "mcpServers": {
    "diagrams-mcp": {
      "command": "diagrams-mcp-server"
    }
  }
}
Windsurf

Agrega a tu ~/.codeium/windsurf/mcp_config.json:

uvx (recomendado):

{
  "mcpServers": {
    "diagrams-mcp": {
      "command": "uvx",
      "args": ["diagrams-mcp-server"]
    }
  }
}

pip:

{
  "mcpServers": {
    "diagrams-mcp": {
      "command": "diagrams-mcp-server"
    }
  }
}
VS Code

Agrega a tu .vscode/mcp.json:

uvx (recomendado):

{
  "servers": {
    "diagrams-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": ["diagrams-mcp-server"]
    }
  }
}

pip:

{
  "servers": {
    "diagrams-mcp": {
      "type": "stdio",
      "command": "diagrams-mcp-server"
    }
  }
}

Herramientas Disponibles

Descubrimiento

  • list_providers() → list[str] — Lista todos los proveedores de diagramas (aws, gcp, k8s, azure, onprem, etc.)
  • list_services(provider) → list[str] — Lista las categorías de servicios dentro de un proveedor (por ejemplo, aws → compute, database, network)
  • list_nodes(provider, service) → list[dict] — Lista las clases de nodos para un par proveedor.servicio con rutas de importación
  • search_nodes(query) → list[dict] — Busca nodos por palabra clave en todos los proveedores (por ejemplo, "postgres", "lambda")

Renderizado

  • render_diagram(code) → Image (PNG) — Ejecuta un script de Python usando mingrammer/diagrams en un subproceso aislado. Devuelve un diagrama de arquitectura en la nube renderizado.
  • render_mermaid(definition) → Image (PNG/SVG) — Renderiza una definición de diagrama Mermaid (diagramas de flujo, secuencia, clase, ER, estado, Gantt y más).
  • render_plantuml(definition) → Image (PNG) — Renderiza una definición de diagrama PlantUML (secuencia, clase, componente, actividad, estado, despliegue).

Equivalencia entre Proveedores

  • find_equivalent(node, target_provider?) → dict — Encuentra servicios equivalentes entre proveedores de nube (por ejemplo, EC2 → ComputeEngine en GCP).
  • list_categories() → list[dict] — Lista las 30 categorías de roles de infraestructura con nodos mapeados entre proveedores.

Recursos

El servidor proporciona documentación de referencia accesible mediante URIs de recursos MCP:

URIDescripción
diagrams://reference/diagramParámetros del constructor de diagramas, valores predeterminados y uso
diagrams://reference/edgeOperadores de bordes, etiquetas, estilos y encadenamiento
diagrams://reference/clusterAnidamiento de clústeres, estilos y atributos de grafo
diagrams://reference/mermaidEjemplos de sintaxis de Mermaid para 6 tipos de diagramas
diagrams://reference/plantumlEjemplos de sintaxis de PlantUML para 6 tipos de diagramas

Ejemplos

Arquitectura en la Nube (mingrammer/diagrams)

"Dibuja una arquitectura de AWS con un ALB enrutando a dos servicios ECS, respaldados por RDS y ElastiCache"

from diagrams import Diagram, Cluster
from diagrams.aws.network import ALB
from diagrams.aws.compute import ECS
from diagrams.aws.database import RDS, ElastiCache

with Diagram("ECS Service", direction="LR"):
    lb = ALB("ALB")

    with Cluster("ECS Cluster"):
        services = [ECS("Web"), ECS("API")]

    lb >> services
    services[0] >> ElastiCache("Cache")
    services[1] >> RDS("Database")

Diagrama de Flujo (Mermaid)

"Crea un diagrama de flujo que muestre un pipeline de CI/CD"

Mermaid flowchart

Diagrama de Secuencia (PlantUML)

"Muestra el flujo de autenticación entre un cliente, una puerta de enlace de API y un servicio de autenticación"

PlantUML sequence diagram

@startuml
Client -> "API Gateway": POST /login
"API Gateway" -> "Auth Service": Validate credentials
"Auth Service" --> "API Gateway": JWT token
"API Gateway" --> Client: 200 OK + token
Client -> "API Gateway": GET /data (Bearer token)
"API Gateway" -> "Auth Service": Verify token
"Auth Service" --> "API Gateway": Valid
"API Gateway" --> Client: 200 OK + data
@enduml

Desarrollo

# Clone and install
git clone https://github.com/ByteOverDev/diagrams-mcp.git
cd diagrams-mcp
pip install -e ".[dev]"

# Run tests
pytest

# Lint and format
ruff check .
ruff format .

# Run the MCP server locally (stdio mode)
diagrams-mcp-server

Modo Facade/Renderer Dividido

Para implementaciones alojadas, el servidor MCP puede ejecutarse como una fachada ligera que delega el trabajo de renderizado a un servicio de renderizado separado. Esto mantiene el proceso MCP siempre activo pequeño mientras Graphviz, Chromium, Mermaid CLI, Java y PlantUML viven solo en la imagen del renderizador.

# Terminal 1: renderer service
RENDERER_HOST=0.0.0.0 RENDERER_PORT=8001 diagrams-renderer-server

# Terminal 2: HTTP MCP facade delegating to the renderer
FASTMCP_TRANSPORT=http \
FASTMCP_HOST=0.0.0.0 \
FASTMCP_PORT=8000 \
DIAGRAMS_RENDERER_MODE=remote \
DIAGRAMS_RENDERER_URL=http://127.0.0.1:8001 \
diagrams-mcp-server

Se incluyen ejemplos de Docker/Railway:

ArchivoPropósito
Dockerfile.facadeImagen de fachada MCP ligera sin binarios exclusivos del renderizador
Dockerfile.rendererImagen del renderizador con Graphviz, Chromium, Mermaid CLI, Java y PlantUML
railway.facade.tomlEjemplo de configuración del servicio de fachada en Railway
railway.renderer.tomlEjemplo de configuración del servicio de renderizado en Railway

Variables de entorno clave:

VariablePropósito
DIAGRAMS_RENDERER_MODE=remoteHace que la fachada use el servicio de renderizado HTTP
DIAGRAMS_RENDERER_URLURL base del renderizador, por ejemplo http://diagrams-renderer.railway.internal:8080
DIAGRAMS_IMAGE_STORE_DIRDirectorio opcional de almacenamiento temporal de imágenes respaldado por archivos
BASE_URLURL base pública opcional utilizada al devolver enlaces de descarga absolutos

Proveedores Soportados

La herramienta render_diagram admite todos los proveedores de la biblioteca mingrammer/diagrams, incluyendo:

AWS, GCP, Azure, Kubernetes, On-Premise, AlibabaCloud, OCI, OpenStack, DigitalOcean, Elastic, Outscale, Generic y nodos Custom.

Usa list_providers() y search_nodes(query) para descubrir los nodos disponibles.

Licencia

MIT