UML-MCP
Un servidor de generación de diagramas que admite múltiples tipos de diagramas UML y otros, con varios formatos de salida. Se integra con servicios de renderizado como Kroki y PlantUML.
Documentación
UML-MCP
UML-MCP le da a un asistente de IA una herramienta de diagramas real en lugar de pedirle que simule diagramas en Markdown. Conéctalo una vez a través de MCP, y luego pide un diagrama de clases, diagrama de secuencia, vista de arquitectura, diagrama de flujo Mermaid, grafo D2, proceso BPMN, u otro formato respaldado por Kroki. El servidor valida el código fuente, lo renderiza y devuelve una URL, un enlace de playground o una imagen en línea.
También funciona como un bloque de construcción para productos orientados a agentes. Usa MCP cuando un agente necesite herramientas de diagramas, AG-UI cuando un frontend necesite un flujo de eventos estándar, y OpenUI cuando el producto deba convertir la salida del modelo en componentes de UI interactivos y propiedad de la aplicación. Estas capas se complementan entre sí; UML-MCP se mantiene enfocado en la generación de diagramas.
| MCP en vivo | https://uml-mcp.vercel.app/mcp |
| Documentación | antoinebou12.github.io/uml-mcp |
| Catálogo | ~37 tipos respaldados por Kroki · 5 herramientas MCP · URL + playground + PNG de chat |
| UI de agente | MCP /mcp · AG-UI canónico /ag-ui · Guía de integración con OpenUI |
| Instalación | python scripts/install.py · uv tool install uml-mcp && uml-mcp setup · Instalación |
| Consola | uml-mcp admin: formulario de configuración, ajustes, registros en vivo, gráficos, playground de Kroki (instalar · guía de usuario · recorrido) |
Forma de la respuesta del chat: vista previa del diagrama · URL · Playground (mermaid.live)
Inicio rápido
Remoto (recomendado) — añade a tu cliente MCP:
"uml-mcp": {
"transport": "http",
"url": "https://uml-mcp.vercel.app/mcp"
}
Usa /mcp, no la raíz del sitio. Luego pregunta: "Dibuja un diagrama de secuencia de un usuario iniciando sesión a través de una puerta de enlace de API" o pega código fuente de PlantUML / Mermaid / Kroki.
Valores predeterminados del repositorio: .cursor/mcp.json · .vscode/mcp.json · .codex/config.toml.
| Cliente | Configuración | Guía |
|---|---|---|
| Cursor | .cursor/mcp.json | docs/integrations/cursor.md |
| VS Code / Copilot | .vscode/mcp.json | docs/integrations/vscode_copilot.md |
| OpenAI Codex | .codex/config.toml | docs/integrations/openai_codex.md |
| Ollama / Open WebUI | config/openwebui_mcp.json | docs/integrations/ollama.md |
| Claude Desktop | config/claude_desktop_*.json | docs/integrations/claude_desktop.md |
Todos los fragmentos: config/README.md
Instalación local (guiada):
| Ruta | Comando |
|---|---|
| Instalador (solo necesita Python + typer + tqdm) | python scripts/install.py |
| Asistente de configuración | uv tool install uml-mcp && uml-mcp setup (perfil, características, clientes, verificación de salud) |
| Formulario de configuración web | uml-mcp setup --web → página de configuración en la consola |
| Manual | uml-mcp config init --profile local · uml-mcp client install --client vscode|cursor|claude-desktop|claude-code |
Guía: docs/installation.md
Consola de administración (uml-mcp admin): resumen · configuración · ajustes · actividad · registros · métricas · plugins, claro y oscuro, escritorio y móvil
Clonar desde el origen (stdio local)
git clone https://github.com/antoinebou12/uml-mcp.git
cd uml-mcp
uv sync
uv run python server.py
Si ya tienes el repositorio y necesitas configurar el origen:
git remote add origin https://github.com/antoinebou12/uml-mcp.git
Configuraciones: config/README.md (Cursor, VS Code, Codex, Claude, Open WebUI, Continue)
Plugin de Claude Code
/plugin marketplace add https://github.com/antoinebou12/uml-mcp
/plugin install uml-mcp@uml-mcp-plugins
docs/integrations/claude_code.md · Habilidad de Cursor: .skill/skills/uml-mcp-diagrams/SKILL.md
De un vistazo
| Tema | Lo que obtienes |
|---|---|
| Diagramas | ~37 tipos a través de Kroki (UML, Mermaid, D2, TikZ, BPMN, C4, GoAT, UMLet, …) |
| Herramientas | generate_uml · generate_uml_image · validate_uml · list_diagram_types · generate_uml_batch |
| Chat | PNG en línea + markdown  + enlace de Playground |
| Despliegue | Local · Docker · Kubernetes (Helm) · Vercel · Smithery |
| Empresa | SSO opcional: Microsoft Entra ID / tokens de portador OAuth 2.1, metadatos RFC 9728, 401/403 claros (docs/enterprise · guía) |
| Archivo de configuración | Un uml-mcp.yaml (predeterminados < archivo < env) · uml-mcp config init|show|validate · perfiles local / docker / enterprise |
| Auditoría y observabilidad | Auditoría estilo MXCP de cada llamada de herramienta/recurso/prompt (rotación JSONL, stdout → SIEM) · registros JSON · métricas + Prometheus /metrics · límites de tasa por IP/usuario/ruta/herramienta (operaciones) |
| Calidad | uml-mcp lint --strict --min-grade A: calificación estilo mcpx, presupuesto de tokens, verificaciones de configuración estilo MXCP (reglas) |
| Consola de administración | Formulario de configuración, ajustes basados en esquema (guardar, restablecer, aplicar en vivo), actividad, registros en vivo, gráficos, playground de Kroki y pila Docker, Detener; token local o MCP.Admin (recorrido) |
| Kroki local | uml-mcp kroki up --use: Kroki + mermaid, blockdiag, bpmn, excalidraw en Docker en 127.0.0.1 (guía) |
| Plugins | Herramientas MCP adicionales y renderizadores de diagramas desde paquetes de Python, permitidos en la lista de plugins.enabled (guía · autor) |
| Trazado | Spans de OpenTelemetry opcionales por solicitud y llamada MCP (uml-mcp[otel]) |
| Frontend | AG-UI SSE canónico para UIs de agentes; OpenUI puede consumir AG-UI y renderizar componentes generados en tu aplicación |
Herramientas MCP
| Herramienta | Propósito |
|---|---|
generate_uml | Renderiza un diagrama; el texto de la herramienta incluye markdown de imagen, URL, Playground. Usa png para ImageContent. |
generate_uml_image | Imagen de chat en línea (PNG predeterminado); obtiene bytes incluso bajo MCP_URL_ONLY alojado |
validate_uml | Verificaciones locales; strict para Mermaid/D2 (rechaza sequenceDiagram lleno de punto y coma) |
list_diagram_types | Catálogo (como uml://types) |
generate_uml_batch | Muchos diagramas (MCP_BATCH_MAX_ITEMS, MCP_BATCH_CONCURRENCY) |
Prompts de prueba: tests/prompts/chatgpt_mcp_smoke_test.md
Recursos (uml://)
| Recurso | Descripción |
|---|---|
uml://types | Tipos, backends, formatos |
uml://templates / uml://examples | Iniciadores y ejemplos |
uml://formats / uml://capabilities | Formatos y matriz de validación |
uml://server-info / uml://workflow | Versión/herramientas y planificar-luego-generar |
Tipos de diagramas
| Categoría | Ejemplos |
|---|---|
| UML | Clase, Secuencia, Actividad, Caso de uso, Estado, Componente, Despliegue, Objeto |
| General | Mermaid, D2, Graphviz, ERD, BlockDiag, BPMN, C4 |
| Especializado | TikZ, Excalidraw, GoAT, UMLet, Nomnoml, Pikchr, Structurizr, SVGBob, WaveDrom, WireViz, … |
Remoto vs local
| Remoto (Vercel) | Local | |
|---|---|---|
| Transporte | HTTP MCP | stdio o HTTP |
| Escrituras de archivos | No | Opcional |
| Imágenes de chat | Las herramientas PNG obtienen bytes bajo URL-only | Igual + disco opcional |
| Entorno | Del lado del servidor | Tu .env |
Despliegue
Vercel — conecta el repositorio; los clientes usan https://<project>.vercel.app/mcp.
Smithery — pega esa URL /mcp en smithery.ai/new. Guía: docs/integrations/vercel_smithery.md.
Docker
docker compose up -d
docker build -t uml-mcp . && docker run -p 8000:8000 uml-mcp
docker run -i uml-mcp python server.py --transport stdio
Kubernetes + SSO: helm upgrade --install uml-mcp deploy/helm/uml-mcp --set auth.mode=jwt … (Entra ID o cualquier proveedor OIDC). Guía: docs/enterprise.
Configuración (local)
| Variable | Predeterminado |
|---|---|
KROKI_SERVER | https://kroki.io |
PLANTUML_SERVER | http://plantuml-server:8080 |
MCP_OUTPUT_DIR | ./output |
MCP_READ_ONLY | false |
MCP_URL_ONLY | ver docs/configuration.md |
MCP_BATCH_MAX_ITEMS | 20 |
MCP_BATCH_CONCURRENCY | 4 |
MCP_RATE_LIMIT_PER_MINUTE | 0 |
UML_MCP_CONFIG | descubierto uml-mcp.yaml (none desactiva) |
Lista completa: docs/configuration.md · archivo único: docs/configuration/uml-mcp-yaml.md
Arquitectura y estructura
Asistente → generate_uml / generate_uml_image → Kroki (+ respaldos) → url, playground, bytes de imagen opcionales.
server.py / app.py -- MCP + FastAPI (/mcp)
mcp_core/tools/ -- generate_uml, generate_uml_image, validate, batch
tools/kroki/ -- Kroki, PlantUML, Mermaid, D2
UI de agente: POST /ag-ui canónico para clientes AG-UI; render directo heredado en POST /ag-ui/generate. Ver integración de frontend y OpenUI + UML-MCP.
Desarrollo
uv sync --all-groups
uv run pytest tests/ -v
uv run ruff check . && uv run ruff format --check .
make ci
Documentación local: uv run mkdocs serve → http://127.0.0.1:8000
SSO empresarial: OAuth 2.1 · OpenID Connect · Microsoft Entra ID
Opcional y desactivado por predeterminado (MCP_AUTH_MODE=none; el endpoint público de Vercel permanece abierto).
| Tema | Resumen |
|---|---|
| Modos | jwt: valida tokens de acceso Entra / OIDC (servidor de recursos) · entra-proxy: añade fachada RFC 8414 + RFC 7591 con PKCE solo S256 para clientes DCR |
| OAuth 2.1 | Código de autorización + PKCE S256; tokens de portador solo en encabezado; 401 → WWW-Authenticate: Bearer resource_metadata, scope; 403 insufficient_scope paso adicional |
| OpenID Connect | Descubrimiento + JWKS para claves de firma; los tokens de ID se rechazan, solo tokens de acceso |
| Entra ID | Tokens v2 (requestedAccessTokenVersion: 2), mcp.read / mcp.write / .default, roles de aplicación, VS Code + Visual Studio preautorizados (configuración) |
| MSAL | Solo del lado del cliente (VS Code, Visual Studio, Azure CLI, demonios); ejemplos en OAuth/OIDC/MSAL |
| Pruébalo | tests/http/entra-auth.http · python -m mcp_core.auth generate az-script · lista de verificación |
Comunidad
Si esto sobrevive a un repositorio de producción real, supera a muchos demos de lanzamiento pulidos.
— @AIDailyGems en antoinebou12/uml-mcp
Actividad diaria y mensual (estrellas, bifurcaciones, PRs fusionados, problemas): trendshift.io/repositories/42725
Enlaces
| Docs | Site · Cursor · Claude Code · Frontend · Enterprise SSO · OpenUI |
| Contribuir | CONTRIBUTING.md · CODE_OF_CONDUCT.md · SECURITY.md |
| Licencia | MIT |
Mantenido por Antoine Boucher. Construido sobre PlantUML, Kroki, Mermaid y D2.