generate_diagram_from_mermaid
Convert Mermaid diagram code to D2 format and generate PNG images for flowcharts, sequence diagrams, ER diagrams, and other visualizations.
Instructions
Convert a Mermaid diagram definition into a D2 diagram and return a PNG image. Use this tool when the user has existing Mermaid code (flowchart, sequenceDiagram, erDiagram, etc.) and wants it converted to D2 or rendered as an image. Pass the Mermaid source as content. Returns a link to view and edit the generated diagram in the browser.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | A Mermaid diagram definition to convert to D2. Pass the raw Mermaid source (e.g. flowchart, sequenceDiagram, erDiagram). Example: "flowchart LR A --> B --> C" | |
| prompt | No | Optional instruction for layout or styling of the converted diagram. | |
| diagramType | No | Preferred diagram type for the converted D2 output. | |
| isIconEnabled | No | Set to true when the user asks to include icons in the diagram. |
Implementation Reference
- src/tools/generate-mermaid.ts:33-49 (handler)Registration of the "generate_diagram_from_mermaid" tool, which uses the shared `generateDiagram` handler.
export function registerGenerateMermaidTool(server: McpServer): void { registerAppTool( server, "generate_diagram_from_mermaid", { description: "Convert a Mermaid diagram definition into a D2 diagram and return a PNG image. " + "Use this tool when the user has existing Mermaid code (flowchart, sequenceDiagram, erDiagram, etc.) " + "and wants it converted to D2 or rendered as an image. " + "Pass the Mermaid source as content. " + "Returns a link to view and edit the generated diagram in the browser.", inputSchema, _meta: { ui: { resourceUri: DIAGRAM_APP_RESOURCE_URI } }, }, async (args) => generateDiagram("mermaid", args) ); } - src/tools/shared.ts:158-161 (handler)The shared `generateDiagram` function that serves as the actual handler logic for multiple diagram tools, including `generate_diagram_from_mermaid`.
export async function generateDiagram( inputType: GenerateDiagramV2Request["inputType"], params: DiagramParams ): Promise<CallToolResult> {