关于 UML-MCP
UML-MCP 是一个 MCP 服务,可供 AI 助手验证并渲染 UML 及其他由 Kroki 支持的图表源码。它返回 URL、在线编辑器链接或内嵌图片,可在本地或远程运行。
主要功能
- 01渲染约 37 种图表
- 02验证图表源码
- 03生成单个或批量图表
- 04返回 URL 和内嵌图片
- 05提供图表类型与示例
适用场景
- 01根据自然语言创建 UML 图
- 02渲染 Mermaid 或 D2 源码
- 03一次请求生成多个图表
MCP 相关
向 MCP 客户端提供图表生成、验证和目录查询工具,并提供类型、模板、示例、格式及服务信息等资源。支持远程 HTTP MCP,以及本地 stdio 或 HTTP 传输。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://uml-mcp.vercel.app/mcpclaude mcp add --transport http uml https://uml-mcp.vercel.app/mcp{"mcpServers":{"uml":{"type":"http","url":"https://uml-mcp.vercel.app/mcp"}}}在 Cursor 中打开{"servers":{"uml":{"type":"http","url":"https://uml-mcp.vercel.app/mcp"}}}在 VS Code 中打开{"mcpServers":{"uml":{"type":"http","url":"https://uml-mcp.vercel.app/mcp"}}}{"mcpServers":{"uml":{"serverUrl":"https://uml-mcp.vercel.app/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
4此工具无需参数。
详细介绍
UML-MCP
UML-MCP 为 AI 助手提供真正的图表工具,无需再让它用 Markdown 伪造图表。 通过 MCP 连接一次,即可请求类图、时序图、架构视图、Mermaid 流程图、D2 图、BPMN 流程或其他由 Kroki 支持的格式。该服务会验证源内容、渲染图表,并返回 URL、在线编辑器链接或内嵌图片。
它还可以作为面向 Agent 的产品构建模块。Agent 需要图表工具时使用 MCP,前端需要标准事件流时使用 AG-UI,而产品需要将模型输出转换为交互式、由应用管理的 UI 组件时使用 OpenUI。这些层彼此互补;UML-MCP 专注于图表生成。
| 在线 MCP | https://uml-mcp.vercel.app/mcp |
| 文档 | antoinebou12.github.io/uml-mcp |
| 目录 | 约 37 种 Kroki 支持的类型 · 5 个 MCP 工具 · URL + 在线编辑器 + 聊天 PNG |
| Agent UI | MCP /mcp · 标准 AG-UI /ag-ui · OpenUI 集成指南 |
| 安装 | python scripts/install.py · uv tool install uml-mcp && uml-mcp setup · 安装指南 |
| 控制台 | uml-mcp admin:设置表单、设置项、实时日志、图表、Kroki 在线编辑器(安装 · 用户指南 · 导览) |
聊天回复形式:图表预览 · URL · Playground(mermaid.live)
快速开始
远程(推荐) — 添加到你的 MCP 客户端:
"uml-mcp": {
"transport": "http",
"url": "https://uml-mcp.vercel.app/mcp"
}
使用 /mcp,而不是网站根路径。然后询问:“绘制一个用户通过 API 网关登录的时序图。” 或粘贴 PlantUML / Mermaid / Kroki 源码。
仓库默认配置: .cursor/mcp.json · .vscode/mcp.json · .codex/config.toml。
| 客户端 | 配置 | 指南 |
|---|---|---|
| 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 |
所有代码片段:config/README.md
本地安装(引导式):
| 路径 | 命令 |
|---|---|
| 安装程序(只需 Python + typer + tqdm) | python scripts/install.py |
| 设置向导 | uv tool install uml-mcp && uml-mcp setup(配置方案、功能、客户端、健康检查) |
| Web 设置表单 | uml-mcp setup --web → 在控制台中打开设置页面 |
| 手动 | uml-mcp config init --profile local · uml-mcp client install --client vscode|cursor|claude-desktop|claude-code |
管理控制台(uml-mcp admin):概览 · 设置 · 配置 · 活动 · 日志 · 指标 · 插件,支持浅色和深色主题、桌面端和移动端
从 origin 克隆(本地 stdio)
git clone https://github.com/antoinebou12/uml-mcp.git
cd uml-mcp
uv sync
uv run python server.py
如果你已有仓库并需要设置 origin:
git remote add origin https://github.com/antoinebou12/uml-mcp.git
配置:config/README.md(Cursor、VS Code、Codex、Claude、Open WebUI、Continue)
Claude Code 插件
/plugin marketplace add https://github.com/antoinebou12/uml-mcp
/plugin install uml-mcp@uml-mcp-plugins
docs/integrations/claude_code.md · Cursor 技能:.skill/skills/uml-mcp-diagrams/SKILL.md
概览
| 主题 | 提供内容 |
|---|---|
| 图表 | 通过 Kroki 支持约 37 种类型(UML、Mermaid、D2、TikZ、BPMN、C4、GoAT、UMLet 等) |
| 工具 | generate_uml · generate_uml_image · validate_uml · list_diagram_types · generate_uml_batch |
| 聊天 | 行内 PNG + Markdown  + Playground 链接 |
| 部署 | 本地 · Docker · Kubernetes(Helm)· Vercel · Smithery |
| 企业版 | 可选 SSO:Microsoft Entra ID / OAuth 2.1 bearer tokens、RFC 9728 元数据、清晰的 401/403(文档 · 指南) |
| 配置文件 | 单个 uml-mcp.yaml(默认值 < 文件 < 环境变量)· uml-mcp config init|show|validate · local / docker / enterprise 配置档 |
| 审计与可观测性 | 采用 MXCP 风格,审计每次工具/资源/提示词调用(JSONL 轮转,stdout → SIEM)· JSON 日志 · 指标 + Prometheus /metrics · 按 IP/用户/路由/工具设置速率限制(运维) |
| 质量 | uml-mcp lint --strict --min-grade A:mcpx 风格评级、令牌预算、MXCP 风格配置检查(规则) |
| 管理控制台 | 设置表单、由架构驱动的设置(保存、重置、实时应用)、活动、实时日志、图表、Kroki Playground 和 Docker 堆栈、停止;本地令牌或 MCP.Admin(概览) |
| 本地 Kroki | uml-mcp kroki up --use:在 127.0.0.1 上通过 Docker 运行 Kroki + mermaid、blockdiag、bpmn、excalidraw(指南) |
| 插件 | 通过 Python 包提供额外的 MCP 工具和图表渲染器,并在 plugins.enabled 中列入允许列表(指南 · 作者指南)。包含交互式 D3 力导向图、云架构图和拓扑图(D3 插件) |
| 追踪 | 可选为每个请求和 MCP 调用生成 OpenTelemetry spans(uml-mcp[otel]) |
| 前端 | 为 Agent UI 提供规范的 AG-UI SSE;OpenUI 可使用 AG-UI,并在你的应用中渲染生成的组件 |
MCP 工具
| 工具 | 用途 |
|---|---|
generate_uml | 渲染一张图表;工具文本包含图片 Markdown、URL、Playground。使用 png 获取 ImageContent。 |
generate_uml_image | 行内聊天图片(默认 PNG);即使在托管的 MCP_URL_ONLY 模式下也会获取字节 |
validate_uml | 本地检查;对 Mermaid/D2 使用 strict(拒绝使用分号拼接的 sequenceDiagram) |
list_diagram_types | 目录(类似 uml://types) |
generate_uml_batch | 批量生成多张图表(MCP_BATCH_MAX_ITEMS、MCP_BATCH_CONCURRENCY) |
资源(uml://)
| 资源 | 描述 |
|---|---|
uml://types | 类型、后端、格式 |
uml://templates / uml://examples | 入门模板和示例 |
uml://formats / uml://capabilities | 格式和验证矩阵 |
uml://server-info / uml://workflow | 版本/工具以及先规划后生成 |
图表类型
| 类别 | 示例 |
|---|---|
| UML | 类图、时序图、活动图、用例图、状态图、组件图、部署图、对象图 |
| 通用 | Mermaid、D2、Graphviz、ERD、BlockDiag、BPMN、C4 |
| 专用 | TikZ、Excalidraw、GoAT、UMLet、Nomnoml、Pikchr、Structurizr、SVGBob、WaveDrom、WireViz 等 |
远程与本地
| 远程(Vercel) | 本地 | |
|---|---|---|
| 传输方式 | HTTP MCP | stdio 或 HTTP |
| 文件写入 | 否 | 可选 |
| 聊天图片 | 仅 URL 模式下,PNG 工具会获取字节 | 同上 + 可选写入磁盘 |
| 环境变量 | 服务端 | 你的 .env |
部署
Vercel — 连接代码仓库;客户端使用 https://<project>.vercel.app/mcp。
Smithery — 在 smithery.ai/new 粘贴该 /mcp URL。指南: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
# self-hosted PlantUML + mermaid.ink fallbacks next to local Kroki
MCP_DIAGRAM_FALLBACK=true USE_LOCAL_PLANTUML=true USE_LOCAL_MERMAID_INK=true docker compose --profile fallback up -d
Kubernetes + SSO:helm upgrade --install uml-mcp deploy/helm/uml-mcp --set auth.mode=jwt …(Entra ID 或任何 OIDC 提供方);添加 --set kroki.enabled=true --set plantuml.enabled=true --set mermaidInk.enabled=true,即可在集群内运行渲染器。指南:docs/enterprise。
配置(本地)
| 变量 | 默认值 |
|---|---|
KROKI_SERVER | https://kroki.io |
PLANTUML_SERVER | http://plantuml-server:8080 |
MERMAID_INK_SERVER | https://mermaid.ink |
MCP_OUTPUT_DIR | ./output |
MCP_READ_ONLY | false |
MCP_URL_ONLY | 参见 docs/configuration.md |
MCP_BATCH_MAX_ITEMS | 20 |
MCP_BATCH_CONCURRENCY | 4 |
MCP_RATE_LIMIT_PER_MINUTE | 0 |
UML_MCP_CONFIG | 自动发现 uml-mcp.yaml(设为 none 可禁用) |
ADMIN_EMAIL | 未设置(托管环境中的 /admin 登录已关闭),参见 docs/admin/hosted-vercel.md |
ADMIN_PASSWORD_HASH / ADMIN_PASSWORD | 未设置;优先使用哈希值 |
ADMIN_SESSION_SECRET | 未设置;至少 32 个字符,登录必需 |
完整列表:docs/configuration.md · 单文件配置:docs/configuration/uml-mcp-yaml.md
架构与布局
助手 → generate_uml / generate_uml_image → Kroki(以及备用方案)→ url、playground、可选的图像字节。
server.py / app.py -- MCP + FastAPI (/mcp)
mcp_core/tools/ -- generate_uml, generate_uml_image, validate, batch
tools/kroki/ -- Kroki, PlantUML, Mermaid, D2
**Agent UI:**面向 AG-UI 客户端的标准 POST /ag-ui;旧版直接渲染接口为 POST /ag-ui/generate。参见前端集成和 OpenUI + UML-MCP。
开发
uv sync --all-groups
uv run pytest tests/ -v
uv run ruff check . && uv run ruff format --check .
make ci
本地查看文档:uv run mkdocs serve → http://127.0.0.1:8000
企业 SSO:OAuth 2.1 · OpenID Connect · Microsoft Entra ID
可选功能,默认关闭(MCP_AUTH_MODE=none;公开的 Vercel 端点保持开放)。
| 主题 | 摘要 |
|---|---|
| 模式 | jwt:验证 Entra / OIDC 访问令牌(资源服务器)· entra-proxy:为使用 S256-only PKCE 的 DCR 客户端添加 RFC 8414 + RFC 7591 门面 |
| OAuth 2.1 | Authorization Code + PKCE S256;仅使用标头中的持有者令牌;401 → WWW-Authenticate: Bearer resource_metadata, scope;403 insufficient_scope 逐步提升权限 |
| OpenID Connect | 提供用于签名密钥的发现信息 + JWKS;拒绝 ID 令牌,仅接受访问令牌 |
| Entra ID | v2 令牌(requestedAccessTokenVersion: 2)、mcp.read / mcp.write / .default、应用角色、VS Code + Visual Studio 预先授权(设置) |
| MSAL | 仅用于客户端(VS Code、Visual Studio、Azure CLI、守护程序);示例见 OAuth/OIDC/MSAL |
| 试用 | tests/http/entra-auth.http · python -m mcp_core.auth generate az-script · 检查清单 |
社区
如果它能在真实的生产代码仓库中经受考验,那就胜过许多精心包装的发布演示。
— @AIDailyGems 在 antoinebou12/uml-mcp 上的评价
每日和每月活动(星标、复刻、已合并 PR、问题):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 |
Maintained by Antoine Boucher. Built on PlantUML, Kroki, Mermaid, and D2.
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。