图表生成服务

mcp-kroki是一个基于Kroki的流式HTTP MCP服务器,支持生成、验证和管理多种类型的图表,适用于开发和技术文档场景。

  • by aescanero
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 aescanero/mcp-kroki

使用说明

麦克克罗基

可流式传输的HTTP MCP服务器,用于本地或远程Kroki实例。

概述

此MCP(模型上下文协议)服务器提供了使用Kroki生成、验证和管理图表的工具。它支持Kroki中可用的所有图表类型,并提供可流式传输的HTTP接口。

特性

  • 支持27+种图表类型:包括PlantUML、Mermaid、GraphViz、D2、BPMN等等
  • 每种图表类型4个工具类别:
    • generate_diagram_xxx:生成各种格式的图表(SVG、PNG、PDF、JPEG)
    • validate_diagram_xxx:验证图表语法(适用于具有架构支持的图表类型)
    • obtain_svg_from_diagram:从Kroki URL获取图表内容
    • save_diagram:将图表从URL保存到本地文件
  • OAuth 2.1身份验证:可选OAuth 2.1身份验证支持(可以禁用)
    • 令牌自检或JWKS验证
    • 兼容任何OAuth 2.1提供程序(Keycloak、Auth0、Azure AD、Okta等)
    • 看 OAUTH.md 有关配置详细信息

支持的图表类型

  • 方框图族:blockdiag、seqdiag、actdiag、nwdiag、packetdiag、rackdiag
  • 通用:bpmn、字节字段、c4plantuml、d2、dbml、ditaa、erd、excalidraw
  • 代码和架构:graphviz、美人鱼、nomnoml、pikchr、plantuml、structurizer
  • 专业:svgbob、符号器、umlet、vega、vegalite、wavedrom、wireviz

Docker快速入门

备注:Docker Hub镜像将在创建第一个版本(v1.0.0)后可用。 现在,使用Docker Compose在本地构建和运行(见下文)。 要发布图像,请在main上创建一个版本标记: git tag -a v1.0.0 -m "Release v1.0.0" && git push origin v1.0.0

v1.0.0发布后,运行mcp-kroki的最简单方法是使用Docker Hub中的预构建Docker镜像:

# Pull the latest image
docker pull aescanero/mcp-kroki:latest

# Run the container
docker run -d -p 8084:8084 \
  -e KROKI_URL=http://your-kroki-server:8000 \
  aescanero/mcp-kroki:latest

Docker Hub

存储库: https://hub.docker.com/r/aescanero/mcp-kroki

可用标签:

  • latest -最新稳定版本
  • 1.0.0 -具体版本(示例)
  • 1.0 -1.0版本中的最新补丁
  • 1 -主要版本1的最新版本

使用Docker Compose

创建一个 docker-compose.yml:

version: "3.8"

services:
  kroki:
    image: yuzutech/kroki
    ports:
      - "8000:8000"

  mcp-kroki:
    image: aescanero/mcp-kroki:latest
    ports:
      - "8084:8084"
    environment:
      - KROKI_URL=http://kroki:8000
      - HOST=0.0.0.0
      - PORT=8084
    depends_on:
      - kroki

然后运行:

docker-compose up -d

Kubernetes/Helm快速入门

使用Helm将MCP Kroki部署到Kubernetes集群:

# Add the Helm repository
helm repo add mcp-kroki https://aescanero.github.io/mcp-kroki
helm repo update

# Install the chart (includes Kroki server)
helm install my-mcp-kroki mcp-kroki/mcp-kroki

# Or with custom values
helm install my-mcp-kroki mcp-kroki/mcp-kroki \
  --set service.type=LoadBalancer \
  --set ingress.enabled=true

Helm存储库

存储库URL: https://aescanero.github.io/mcp-kroki

特征:

  • 在一个命令中部署MCP Kroki和Kroki服务器
  • 可选入口配置
  • 水平Pod自动缩放支持
  • 基于ConfigMap的配置
  • 生产就绪默认值

有关Helm chart的详细文档,请参阅 HELM.md.

从源安装

  1. 克隆存储库:
git clone https://github.com/aescanero/mcp-kroki.git
cd mcp-kroki
  1. 安装依赖项:
pip install -r requirements.txt
  1. 配置环境变量:
cp .env.example .env
# Edit .env to set your Kroki server URL

配置

创建一个 .env 包含以下变量的文件:

# Kroki server URL (local or remote instance)
KROKI_URL=http://localhost:8000

# Server configuration
HOST=0.0.0.0
PORT=8084

运行服务器

直接使用Python:

python mcp_kroki_server.py

使用uvicorn:

uvicorn mcp_kroki_server:app --host 0.0.0.0 --port 8084

服务器将在以下时间可用 http://localhost:8084

用法示例

生成PlantUML图

{
  "tool": "generate_diagram_plantuml",
  "arguments": {
    "diagram_source": "@startuml\nAlice -> Bob: Hello\n@enduml",
    "output_format": "svg"
  }
}

验证美人鱼图

{
  "tool": "validate_diagram_mermaid",
  "arguments": {
    "diagram_source": "graph TD\n  A-->B"
  }
}

从URL获取SVG

{
  "tool": "obtain_svg_from_diagram",
  "arguments": {
    "diagram_url": "http://localhost:8000/plantuml/svg/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000"
  }
}

将图表保存到文件

{
  "tool": "save_diagram",
  "arguments": {
    "diagram_url": "http://localhost:8000/mermaid/svg/...",
    "output_path": "/path/to/diagram.svg"
  }
}

可用工具

生成工具(27种)

每种图表类型都有一个 generate_diagram_{type} 工具接受:

  • diagram_source (string):图表源代码
  • output_format (字符串,可选):输出格式(svg、png、pdf、jpeg、base64)。默认值:svg

验证工具(7种)

验证可用于支持模式或解析器验证的图表类型:

  • validate_diagram_vega
  • validate_diagram_vegalite
  • validate_diagram_dbml
  • validate_diagram_mermaid
  • validate_diagram_plantuml
  • validate_diagram_bpmn
  • validate_diagram_graphviz

每个验证工具都接受:

  • diagram_source (string):要验证的图表源代码

实用工具

  • obtain_svg_from_diagram:从Kroki URL获取图表内容

    • diagram_url (string):完整的Kroki图URL
  • save_diagram:将图表从URL保存到本地文件

    • diagram_url (string):完整的Kroki图URL
    • output_path (string):保存的本地文件路径

健康检查

检查服务器状态:

curl http://localhost:8084/health

答复:

{
  "status": "ok",
  "kroki_url": "http://localhost:8000",
  "supported_diagrams": 27,
  "validatable_diagrams": 7
}

需求

  • Python 3.8+
  • Kroki服务器(本地或远程)
  • 看 requirements.txt 对于Python依赖项

设置本地Kroki服务器

使用Docker:

docker run -d -p 8000:8000 yuzutech/kroki

使用Docker Compose:

version: "3"
services:
  kroki:
    image: yuzutech/kroki
    ports:
      - "8000:8000"

部署

自动发布

该项目使用GitHub Actions在推送新版本标签时自动构建和发布Docker镜像和Helm图表。

要创建新版本,请执行以下操作:

# Create a version tag (following semantic versioning)
git tag -a v1.0.0 -m "Release version 1.0.0"

# Push the tag to GitHub
git push origin v1.0.0

GitHub操作将自动:

Docker:

  1. 为多个平台(linux/amd64、linux/arm64)构建Docker镜像
  2. 用多个版本(最新版本、1.0.0、1.0、1)标记图像
  3. 推送到Docker Hubhttps://hub.docker.com/r/aescanero/mcp-kroki

赫尔姆:

  1. 更新Helm图表版本
  2. 打包Helm图表
  3. 发布到GitHub页面https://aescanero.github.io/mcp-kroki

有关发布过程的详细信息,请参阅 发布.md.

发展

在当地发展

# Install dependencies
pip install -r requirements.txt

# Run with auto-reload
uvicorn mcp_kroki_server:app --reload --host 0.0.0.0 --port 8084

在本地构建Docker镜像

# Build the image
docker build -t mcp-kroki:dev .

# Run the image
docker run -p 8084:8084 -e KROKI_URL=http://localhost:8000 mcp-kroki:dev

许可证

有关详细信息,请参阅LICENSE文件。

贡献

欢迎投稿!请随时提交拉取请求。

如何贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

支持

  • 问题: https://github.com/aescanero/mcp-kroki/issues
  • Docker Hub: https://hub.docker.com/r/aescanero/mcp-kroki
  • Helm图表: https://aescanero.github.io/mcp-kroki
  • 文档:
  • Kroki文档: https://kroki.io/