使用说明

项目简介

本项目 'mcp-kroki' 是一个实现了 Model Context Protocol (MCP) 的服务器,它作为一个桥梁,连接了 LLM 客户端和 Kroki.io 图表生成服务。通过此服务器,LLM 可以调用工具,将 Mermaid, PlantUML, Graphviz 等多种图表代码转换为图片,并获取图片的 URL 或直接下载图片文件到本地。这使得 LLM 应用能够方便地生成和处理各种图表,增强了内容创作和数据可视化的能力。

主要功能点

  1. 生成图表 URL: 根据图表类型和代码,生成一个可以直接在浏览器中访问的图表 URL。
  2. 下载图表: 将图表代码转换为图片文件(支持 SVG, PNG, PDF, JPEG 格式),并保存到服务器本地指定路径。
  3. 支持多种图表格式: 支持 Kroki.io 支持的所有图表类型,包括 Mermaid, PlantUML, Graphviz, C4plantuml 等。
  4. 可配置输出格式: 用户可以指定输出图片的格式,例如 SVG, PNG, PDF, JPEG,以及 Base64 编码的 SVG。
  5. SVG缩放: 下载SVG图表时,支持缩放比例调整。
  6. 错误处理: 能够检测并报告 Kroki.io 服务返回的错误信息,以及图表代码本身的错误。

安装步骤

  1. 克隆仓库到本地:

    git clone https://github.com/tkoba1974/mcp-kroki.git
    cd mcp-kroki
  2. 安装依赖:

    npm install
  3. 构建项目:

    npm run build

服务器配置

要将 'mcp-kroki' 服务器与 MCP 客户端(例如 Claude Desktop)连接,您需要在客户端的配置文件中添加服务器配置信息。以下是两种配置方式:

方式一:本地安装方式配置

如果您选择本地安装 'mcp-kroki' 服务器,请使用以下 JSON 配置。您需要将 '/path/to/mcp-kroki/build/index.js' 替换为实际的 'mcp-kroki' 项目 'build/index.js' 文件的绝对路径。

{
  "mcpServers": {
    "mcp-kroki": {
      "command": "node",
      "args": ["/path/to/mcp-kroki/build/index.js"]
    }
  }
}
  • 'mcpServers': 配置 MCP 服务器的根节点。
  • 'mcp-kroki': 为该服务器自定义的名称,在客户端中用于标识和调用此服务器,可以修改为其他名称。
  • 'command': 启动服务器的命令,这里使用 'node' 命令来执行 JavaScript 文件。
  • 'args': 启动命令的参数,这里指定了 'mcp-kroki' 服务器程序入口文件 'build/index.js' 的路径。

方式二:npx 方式配置

如果您希望使用 'npx' 直接运行,而无需本地构建,可以使用以下 JSON 配置。

{
  "mcpServers": {
    "mcp-kroki": {
      "command": "npx",
      "args": [
        "-y",
        "@tkoba1974/mcp-kroki"
      ]
    }
  }
}
  • 'mcpServers': 配置 MCP 服务器的根节点。
  • 'mcp-kroki': 为该服务器自定义的名称,在客户端中用于标识和调用此服务器,可以修改为其他名称。
  • 'command': 启动服务器的命令,这里使用 'npx' 命令来运行 npm 包。
  • 'args': 启动命令的参数:
    • '-y': 'npx' 的参数,表示自动确认安装包。
    • '@tkoba1974/mcp-kroki': 要运行的 npm 包名称。

基本使用方法

配置完成后,在 MCP 客户端中,您可以使用 'callTool' 函数来调用 'mcp-kroki' 服务器提供的工具。

1. 生成图表 URL

调用 'generate_diagram_url' 工具,并提供图表类型 ('type') 和图表内容 ('content')。'outputFormat' 参数可选,用于指定输出格式(默认为 SVG)。

// 生成 Mermaid 图表的 URL (SVG 格式)
const result = await callTool('generate_diagram_url', {
  type: 'mermaid',
  content: 'graph TD; A-->B; B-->C; C-->D;'
});
console.log(result.content[0].text); // 输出包含 URL 的文本信息

// 生成 PlantUML 图表的 URL (PNG 格式)
const result = await callTool('generate_diagram_url', {
  type: 'plantuml',
  content: '@startuml\nAlice -> Bob: Authentication Request\nBob --> Alice: Authentication Response\n@enduml',
  outputFormat: 'png'
});
console.log(result.content[0].text); // 输出包含 URL 的文本信息

2. 下载图表

调用 'download_diagram' 工具,需要提供图表类型 ('type')、图表内容 ('content') 和保存路径 ('outputPath')。'outputFormat' 参数可选,用于指定输出格式(默认为从 'outputPath' 扩展名推断,或默认为 SVG)。'scale' 参数可选,用于设置 SVG 图表的缩放比例。

// 下载 Mermaid 图表为 SVG 文件
const result = await callTool('download_diagram', {
  type: 'mermaid',
  content: 'graph TD; A-->B; B-->C; C-->D;',
  outputPath: '/path/to/save/diagram.svg' // 替换为实际的保存路径
});
console.log(result.content[0].text); // 输出成功保存的信息

// 下载 PlantUML 图表为 PNG 文件,并设置缩放比例为 2.0 (仅对 SVG 有效,此处仅为示例)
const result = await callTool('download_diagram', {
  type: 'plantuml',
  content: '@startuml\nAlice -> Bob: Authentication Request\nBob --> Alice: Authentication Response\n@enduml',
  outputPath: '/path/to/save/diagram.png', // 替换为实际的保存路径
  outputFormat: 'png',
  scale: 2.0
});
console.log(result.content[0].text); // 输出成功保存的信息

请根据您的实际需求选择合适的工具和参数,并参考 Kroki.io 的文档了解更多支持的图表类型和格式。

信息

分类

开发者工具