Models write Mermaid that almost parses, and a diagram that fails silently in a README is worse than no diagram. Getting the syntax checked and the image back in the same call closes that loop. Decide up front whether you want the image inline or on disk — the mounted output directory is what makes the file path route work, and it is easy to forget in the client config.
A Mermaid diagram server that both validates and renders. It ships two front ends over the same engine: a web interface for interactive work, and an MCP server so an assistant can produce the diagram, check the syntax, and hand back the picture without you opening anything.
- `validate_and_render_mermaid` — check the code and render it as PNG, with `return_image=true` for an inline image or `return_base64_text=true` for something you can save
- `get_diagram` to fetch a rendered diagram later by file ID, and `request_mermaid_generation` to have the diagram code written from a description
- Learning by example — `get_mermaid_examples` by category or complexity, `get_diagram_template` for a starting point, `get_syntax_help` for one diagram type
- Improving what exists — `analyze_diagram_code` for suggestions, `suggest_diagram_improvements` for targeted ones
- `health_check` and `server_status` for when rendering stops working
- Every Mermaid type: flowchart, sequence, gantt, class, state, ER, pie, mindmap, journey and timeline
- Themes `default`, `dark`, `forest` and `neutral`; a `classic` or `handDrawn` look; `transparent` or `white` background
- 11 tools and 11 prompts, the prompts being wizards for specific jobs — `flowchart_wizard`, `sequence_diagram_wizard`, `er_diagram_wizard`, `architecture_diagram`, `project_timeline`, `mindmap_wizard`, `user_journey_wizard` and others
No account and no key for diagram rendering; the web interface's AI generation needs an OpenAI or Anthropic key set in `backend/.env`. For MCP, clone the repository and `docker build -f Dockerfile.mcp-stdio -t sailor-mcp .`, then run the image from your client config with a volume mount for the output directory — that mount is where rendered files land. Docker Desktop is the only prerequisite; nothing else is installed on the host. The web interface is a separate path: `docker-compose up -d` and open `http://localhost:5000`. Package `sailor` at 2.0.0.
One command — docker run -i --rm sailor-mcp
