UML-MCP
Um servidor de geração de diagramas que suporta múltiplos tipos de UML e outros tipos de diagrama, com vários formatos de saída. Ele se integra a serviços de renderização como Kroki e PlantUML.
Documentação
UML-MCP
O UML-MCP dá a um assistente de IA uma ferramenta de diagramas real, em vez de pedir que ele simule diagramas em Markdown. Conecte-o uma vez via MCP e então peça um diagrama de classes, diagrama de sequência, visão de arquitetura, fluxograma Mermaid, grafo D2, processo BPMN ou outro formato suportado pelo Kroki. O servidor valida a fonte, renderiza e retorna uma URL, link de playground ou imagem inline.
Ele também funciona como um bloco de construção para produtos voltados a agentes. Use MCP quando um agente precisar de ferramentas de diagrama, AG-UI quando um frontend precisar de um fluxo de eventos padrão e OpenUI quando o produto precisar transformar a saída do modelo em componentes de UI interativos e de propriedade do aplicativo. Essas camadas se complementam; o UML-MCP permanece focado na geração de diagramas.
| MCP ao vivo | https://uml-mcp.vercel.app/mcp |
| Documentação | antoinebou12.github.io/uml-mcp |
| Catálogo | ~37 tipos suportados pelo Kroki · 5 ferramentas MCP · URL + playground + PNG no chat |
| UI do agente | MCP /mcp · AG-UI canônico /ag-ui · Guia de integração OpenUI |
| Instalação | python scripts/install.py · uv tool install uml-mcp && uml-mcp setup · Instalação |
| Console | uml-mcp admin: formulário de configuração, configurações, logs ao vivo, gráficos, playground Kroki (instalar · guia do usuário · tour) |
Formato da resposta no chat: pré-visualização do diagrama · URL · Playground (mermaid.live)
Início rápido
Remoto (recomendado) — adicione ao seu cliente MCP:
"uml-mcp": {
"transport": "http",
"url": "https://uml-mcp.vercel.app/mcp"
}
Use /mcp, não a raiz do site. Então peça: “Desenhe um diagrama de sequência de um usuário fazendo login através de um gateway de API.” ou cole código-fonte PlantUML / Mermaid / Kroki.
Padrões do repositório: .cursor/mcp.json · .vscode/mcp.json · .codex/config.toml.
| Cliente | Configuração | Guia |
|---|---|---|
| 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 os trechos: config/README.md
Instalar localmente (guiado):
| Caminho | Comando |
|---|---|
| Instalador (precisa apenas de Python + typer + tqdm) | python scripts/install.py |
| Assistente de configuração | uv tool install uml-mcp && uml-mcp setup (perfil, recursos, clientes, verificação de saúde) |
| Formulário de configuração web | uml-mcp setup --web → página de configuração no console |
| Manual | uml-mcp config init --profile local · uml-mcp client install --client vscode|cursor|claude-desktop|claude-code |
Guia: docs/installation.md
Console administrativo (uml-mcp admin): visão geral · configuração · configurações · atividade · logs · métricas · plugins, claro e escuro, desktop e mobile
Clonar da origem (stdio local)
git clone https://github.com/antoinebou12/uml-mcp.git
cd uml-mcp
uv sync
uv run python server.py
Se você já tem o repositório e precisa definir a origem:
git remote add origin https://github.com/antoinebou12/uml-mcp.git
Configurações: config/README.md (Cursor, VS Code, Codex, Claude, Open WebUI, Continue)
Plugin Claude Code
/plugin marketplace add https://github.com/antoinebou12/uml-mcp
/plugin install uml-mcp@uml-mcp-plugins
docs/integrations/claude_code.md · Habilidade do Cursor: .skill/skills/uml-mcp-diagrams/SKILL.md
De relance
| Tópico | O que você obtém |
|---|---|
| Diagramas | ~37 tipos via Kroki (UML, Mermaid, D2, TikZ, BPMN, C4, GoAT, UMLet, …) |
| Ferramentas | generate_uml · generate_uml_image · validate_uml · list_diagram_types · generate_uml_batch |
| Chat | PNG inline + markdown  + link Playground |
| Implantação | Local · Docker · Kubernetes (Helm) · Vercel · Smithery |
| Empresarial | SSO opcional: Microsoft Entra ID / tokens de portador OAuth 2.1, metadados RFC 9728, 401/403 claros (docs/enterprise · guia) |
| Arquivo de configuração | Um uml-mcp.yaml (padrões < arquivo < env) · uml-mcp config init|show|validate · perfis local / docker / enterprise |
| Auditoria e observabilidade | Auditoria estilo MXCP de cada chamada de ferramenta/recurso/prompt (rotação JSONL, stdout → SIEM) · logs JSON · métricas + Prometheus /metrics · limites de taxa por IP/usuário/rota/ferramenta (operações) |
| Qualidade | uml-mcp lint --strict --min-grade A: nota estilo mcpx, orçamento de tokens, verificações de configuração estilo MXCP (regras) |
| Console administrativo | Formulário de configuração, configurações orientadas por esquema (salvar, redefinir, aplicar ao vivo), atividade, logs ao vivo, gráficos, playground Kroki e pilha Docker, Parar; token local ou MCP.Admin (tour) |
| Kroki local | uml-mcp kroki up --use: Kroki + mermaid, blockdiag, bpmn, excalidraw em Docker em 127.0.0.1 (guia) |
| Plugins | Ferramentas MCP extras e renderizadores de diagramas de pacotes Python, permitidos na lista de plugins.enabled (guia · autor) |
| Rastreamento | Spans OpenTelemetry opcionais por solicitação e chamada MCP (uml-mcp[otel]) |
| Frontend | AG-UI SSE canônico para UIs de agentes; OpenUI pode consumir AG-UI e renderizar componentes gerados no seu aplicativo |
Ferramentas MCP
| Ferramenta | Propósito |
|---|---|
generate_uml | Renderiza um diagrama; o texto da ferramenta inclui markdown de imagem, URL, Playground. Use png para ImageContent. |
generate_uml_image | Imagem inline no chat (PNG padrão); busca bytes mesmo sob MCP_URL_ONLY hospedado |
validate_uml | Verificações locais; strict para Mermaid/D2 (rejeita sequenceDiagram cheio de ponto e vírgula) |
list_diagram_types | Catálogo (como uml://types) |
generate_uml_batch | Muitos diagramas (MCP_BATCH_MAX_ITEMS, MCP_BATCH_CONCURRENCY) |
Prompts de teste: tests/prompts/chatgpt_mcp_smoke_test.md
Recursos (uml://)
| Recurso | Descrição |
|---|---|
uml://types | Tipos, backends, formatos |
uml://templates / uml://examples | Iniciadores e exemplos |
uml://formats / uml://capabilities | Formatos e matriz de validação |
uml://server-info / uml://workflow | Versão/ferramentas e planejar-depois-gerar |
Tipos de diagrama
| Categoria | Exemplos |
|---|---|
| UML | Classe, Sequência, Atividade, Caso de Uso, Estado, Componente, Implantação, Objeto |
| Geral | 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 ou HTTP |
| Gravações de arquivo | Não | Opcional |
| Imagens no chat | Ferramentas PNG buscam bytes sob URL-only | Mesmo + disco opcional |
| Ambiente | Lado do servidor | Seu .env |
Implantação
Vercel — conecte o repositório; os clientes usam https://<project>.vercel.app/mcp.
Smithery — cole essa URL /mcp em smithery.ai/new. Guia: 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 ou qualquer provedor OIDC). Guia: docs/enterprise.
Configuração (local)
| Variável | Padrão |
|---|---|
KROKI_SERVER | https://kroki.io |
PLANTUML_SERVER | http://plantuml-server:8080 |
MCP_OUTPUT_DIR | ./output |
MCP_READ_ONLY | false |
MCP_URL_ONLY | veja docs/configuration.md |
MCP_BATCH_MAX_ITEMS | 20 |
MCP_BATCH_CONCURRENCY | 4 |
MCP_RATE_LIMIT_PER_MINUTE | 0 |
UML_MCP_CONFIG | descoberto uml-mcp.yaml (none desativa) |
Lista completa: docs/configuration.md · arquivo único: docs/configuration/uml-mcp-yaml.md
Arquitetura e layout
Assistente → generate_uml / generate_uml_image → Kroki (+ fallbacks) → url, playground, bytes de imagem opcionais.
server.py / app.py -- MCP + FastAPI (/mcp)
mcp_core/tools/ -- generate_uml, generate_uml_image, validate, batch
tools/kroki/ -- Kroki, PlantUML, Mermaid, D2
UI do agente: POST /ag-ui canônico para clientes AG-UI; renderização direta legada em POST /ag-ui/generate. Veja integração frontend e OpenUI + UML-MCP.
Desenvolvimento
uv sync --all-groups
uv run pytest tests/ -v
uv run ruff check . && uv run ruff format --check .
make ci
Documentação local: uv run mkdocs serve → http://127.0.0.1:8000
SSO empresarial: OAuth 2.1 · OpenID Connect · Microsoft Entra ID
Opcional e desativado por padrão (MCP_AUTH_MODE=none; o endpoint público Vercel permanece aberto).
| Tópico | Resumo |
|---|---|
| Modos | jwt: valida tokens de acesso Entra / OIDC (servidor de recursos) · entra-proxy: adiciona fachada RFC 8414 + RFC 7591 com PKCE somente S256 para clientes DCR |
| OAuth 2.1 | Código de Autorização + PKCE S256; tokens de portador somente no cabeçalho; 401 → WWW-Authenticate: Bearer resource_metadata, scope; 403 insufficient_scope step-up |
| OpenID Connect | Descoberta + JWKS para chaves de assinatura; tokens de ID são rejeitados, apenas tokens de acesso |
| Entra ID | Tokens v2 (requestedAccessTokenVersion: 2), mcp.read / mcp.write / .default, funções de aplicativo, VS Code + Visual Studio pré-autorizados (configuração) |
| MSAL | Somente no lado do cliente (VS Code, Visual Studio, Azure CLI, daemons); exemplos em OAuth/OIDC/MSAL |
| Experimente | tests/http/entra-auth.http · python -m mcp_core.auth generate az-script · checklist |
Comunidade
Se isso sobreviver a um repositório de produção real, supera muitos demos de lançamento polidos.
— @AIDailyGems em antoinebou12/uml-mcp
Atividade diária e mensal (estrelas, forks, PRs mesclados, issues): trendshift.io/repositories/42725
Links
| Docs | Site · Cursor · Claude Code · Frontend · Enterprise SSO · OpenUI |
| Contribute | CONTRIBUTING.md · CODE_OF_CONDUCT.md · SECURITY.md |
| License | MIT |
Mantido por Antoine Boucher. Construído com PlantUML, Kroki, Mermaid e D2.