Mermaid图表生成与验证工具

一个用于生成和验证Mermaid图表的Gemini CLI扩展工具,支持PNG/SVG/PDF输出。

  • by barberosanto
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 barberosanto/mermaid-mcp

使用说明

Gemini的Mermaid MCP服务器

该项目实现了一个模型上下文协议(MCP)服务器,用于生成和验证Mermaid图。它被设计为Gemini CLI扩展。

先决条件

  • Node.js(v18+)
  • npm

安装和设置

  1. 安装依赖项并构建:

    npm install
    

    这将自动安装MCP服务器的依赖项并构建项目。

  2. Gemini CLI链接: 从项目根目录运行以下命令:

    gemini extensions link .
    
  3. 重新启动Gemini CLI: 这 mermaid 工具和斜线命令现在将在您的会话中可用。

用户安装

要分发此扩展,只需共享您的Git存储库URL。用户可以直接安装它:

gemini extension install <your-git-repo-url>

该扩展将自动安装依赖项并构建服务器。

特性

  • mermaid_generate_image:从Mermaid代码生成PNG/SVG/PDF。
  • mermaid_validate语法:验证Mermaid语法。

发展

源代码位于 mcp-server/src.

  • 运行测试: node mcp-server/test-manual.cjs

文档

系统上下文

C4Context
    title System Context Diagram for Mermaid MCP Extension

    Person(user, "User", "Developer using Gemini CLI")
    System(gemini, "Gemini CLI", "AI Assistant in Terminal")
    System_Boundary(extension, "Mermaid MCP Extension") {
        System(ext_config, "Extension Config", "gemini-extension.json & commands/")
        System(mcp_server, "MCP Server", "Node.js Server (stdio)")
    }
    System_Ext(mermaid_cli, "Mermaid CLI", "mmdc / Puppeteer")

    Rel(user, gemini, "Uses slash commands")
    Rel(gemini, ext_config, "Reads definition")
    Rel(gemini, mcp_server, "Sends tool calls (JSON-RPC)")
    Rel(mcp_server, mermaid_cli, "Executes for rendering")

架构图

graph TD
    subgraph Client ["Gemini CLI"]
        CLI[Command Line Interface]
        ExtHost[Extension Host]
    end

    subgraph Extension ["Mermaid MCP Extension"]
        Config["gemini-extension.json"]
        Commands["Slash Commands\n(/mermaid, /validate)"]
        
        subgraph MCPServer ["MCP Server Process"]
            Index["index.ts\n(Entry Point)"]
            Server["MermaidServer Class\n(MCP Protocol)"]
            Handler["MermaidHandler Class\n(Business Logic)"]
        end
    end

    subgraph External ["External Tools"]
        MMDC["Mermaid CLI (mmdc)\n(Headless Chrome)"]
        FS["File System"]
    end

    CLI -->|User Input| ExtHost
    ExtHost -->|Load| Config
    ExtHost -->|Parse| Commands
    Commands -->|Tool Call| Server
    Index -->|Init| Server
    Server -->|Delegate| Handler
    Handler -->|Spawn Process| MMDC
    Handler -->|Read/Write| FS
    MMDC -->|Generate| FS
    FS -->|Image Path| Handler
    Handler -->|Result| Server
    Server -->|Response| ExtHost
    ExtHost -->|Display| CLI

类图

classDiagram
    class MermaidServer {
        -Server server
        -MermaidHandler mermaidHandler
        +constructor()
        -setupToolHandlers()
        -setupErrorHandling()
        +run()
    }

    class MermaidHandler {
        -string mmdcPath
        +constructor()
        +generateImage(args) Promise~MermaidToolResponse~
        +validateSyntax(args) Promise~MermaidToolResponse~
        -runMmdc(args) Promise
    }

    class Types {
        <<interface>>
        GenerateImageArgs
        ValidateSyntaxArgs
        MermaidToolResponse
    }

    MermaidServer --> MermaidHandler : uses
    MermaidHandler ..> Types : uses

备注:高分辨率图表图像可在 docs/ 目录。

故障排除

Linux/Ubuntu用户

如果遇到安装错误或“连接已关闭”:

  1. Node.js版本:确保您使用的是Node.js v18或更高版本。

    node -v
    
  2. 系统相关性:此扩展程序依赖于Puppeteer(无头Chrome)。我们提供了一个帮助脚本,用于在Ubuntu/Debian上安装必要的库:

    # From inside the extension directory (after cloning or installing)
    cd <extension-path>
    sudo bash scripts/setup-linux.sh
    

    通常,扩展安装在 ~/.gemini/extensions/meramid-mcp 或类似。

配置

该扩展已预先配置为使用本地Node.js服务器运行。无需手动配置 mcpServers 运行后需要 gemini extensions link ..

许可证

此项目根据Apache许可证2.0获得许可-请参阅 许可证 文件以获取详细信息。