Sailor
Generate and render Mermaid diagrams as images using LLMs.
๐งโโ๏ธ Sailor - Mermaid Diagram Generator
Get a picture of your Mermaid! ๐จ
Sailor combines a beautiful web interface with an MCP (Model Context Protocol) server for generating and rendering Mermaid diagrams. Use the web UI for interactive diagram creation, or integrate with Claude Desktop for AI-powered diagram generation through natural language.
โจ Features
๐ Web Interface
- ๐จ AI-Powered Generation: Generate diagrams using OpenAI or Anthropic APIs
- ๐ Live Preview: Real-time rendering with syntax highlighting
- ๐ Copy Functions: Copy both code and rendered images
- ๐ฏ Style Controls: Theme and appearance customization
- โ API Key Validation: Instant feedback on key validity
๐ค MCP Server
- ๐ All Mermaid Diagram Types: Flowcharts, sequence, gantt, class, state, ER, pie, mindmap, journey, timeline
- ๐จ Multiple Themes: Default, dark, forest, neutral
- โ๏ธ Hand-drawn Look: Optional sketch-style rendering
- ๐ผ๏ธ Flexible Output: PNG with transparent background support
- ๐ค LLM Integration: Works with Claude Desktop via MCP
- ๐ณ Fully Containerized: No dependencies needed except Docker
๐ Quick Start
Choose your preferred way to use Sailor:
Option A: Web Interface ๐
- Clone and Setup:
git clone https://github.com/aj-geddes/sailor.git
cd sailor
- Configure Environment (backend folder):
cd backend
cp .env.example .env
# Edit .env with your API keys
- Run with Docker:
docker-compose up -d
- Access: Open http://localhost:5000
Option B: Claude Desktop Integration ๐ค
Prerequisites: Docker Desktop + Claude Desktop
- Clone and Build:
git clone https://github.com/aj-geddes/sailor.git
cd sailor
docker build -f Dockerfile.mcp-stdio -t sailor-mcp .
- Configure Claude Desktop:
Add the following to your Claude Desktop configuration file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"sailor-mermaid": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"C:\\Users\\YourName\\Pictures:/output",
"sailor-mcp"
]
}
}
}
Note: Replace C:\\Users\\YourName\\Pictures
with your desired output directory.
4. Restart Claude Desktop
Completely close and reopen Claude Desktop to load the new configuration.
๐ Usage
๐ Web Interface
- Enter API Key: Provide your OpenAI or Anthropic API key
- Describe Your Diagram: Enter a natural language description
- Generate: Click "Generate Diagram" to create Mermaid code
- Customize: Use style controls to adjust appearance
- Export: Copy the code or image with the copy buttons
๐ค Claude Desktop Integration
Once configured, you can use natural language commands in Claude Desktop:
- "Use sailor-mermaid to create a flowchart showing a login process"
- "Generate a sequence diagram with sailor-mermaid showing API calls"
- "Create a Gantt chart for a project timeline using sailor-mermaid"
- "Show me examples of Mermaid diagrams with sailor-mermaid"
Images are automatically saved to your configured output directory.
๐ ๏ธ Available Tools
1. request_mermaid_generation
Request AI to generate Mermaid diagram code based on your description.
2. validate_and_render_mermaid
Validate and render existing Mermaid code as an image.
3. get_mermaid_examples
Get examples of different Mermaid diagram types.
๐จ Styling Options
- Themes:
default
,dark
,forest
,neutral
- Look:
classic
,handDrawn
- Background:
transparent
,white
- Direction:
TB
(top-bottom),LR
(left-right),BT
,RL
๐ Project Structure
sailor/
โโโ backend/ # Web UI Flask application
โ โโโ app.py # Main Flask server
โ โโโ static/ # Frontend files (HTML/CSS/JS)
โ โโโ requirements.txt # Web UI dependencies
โ โโโ .env.example # Environment template
โโโ src/
โ โโโ sailor_mcp/ # MCP server implementation
โ โโโ server.py # Main MCP server
โ โโโ stdio_wrapper.py # Claude Desktop communication
โ โโโ renderer.py # Mermaid rendering engine
โ โโโ validators.py # Syntax validation
โ โโโ prompts.py # AI prompt templates
โโโ tests/ # Comprehensive test suite
โโโ Dockerfile.mcp-stdio # MCP server container
โโโ docker-compose.yml # Multi-service setup
โโโ setup.py # Python package setup
โโโ requirements.txt # MCP dependencies
๐งช Development
Web UI Development
# Setup environment
cd backend
cp .env.example .env
# Edit .env with your API keys
# Install dependencies
pip install -r requirements.txt
# Run Flask development server
python app.py
# Access at http://localhost:5000
MCP Server Development
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -e .
# Install Playwright browsers
playwright install chromium
# Run tests
pytest
# Run MCP server directly
python -m sailor_mcp.stdio_wrapper
Full Stack Development
# Run everything with Docker Compose
docker-compose up --build
# Web UI: http://localhost:5000
# MCP Server: Available for Claude Desktop integration
๐ Troubleshooting
Server Not Appearing in Claude Desktop
- Ensure Docker Desktop is running
- Check the image exists:
docker images | grep sailor-mcp
- Verify config file location and JSON syntax
- Restart Claude Desktop completely
Connection Issues
Test the server manually:
docker run -i --rm sailor-mcp
View Logs
Check Docker logs:
docker logs $(docker ps -a | grep sailor-mcp | awk '{print $1}')
๐ License
MIT License - see LICENSE file for details.
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
๐ Acknowledgments
- Built with MCP (Model Context Protocol)
- Powered by Mermaid.js for diagram rendering
- Uses Playwright for headless rendering
Made with โค๏ธ for Claude Desktop users
Related Servers
Terraform MCP
A command-line tool that acts as an MCP server to interact with Terraform environments.
Terragrunt-Docs
Terragrunt documentation always up to date.
UML-MCP
A diagram generation server supporting multiple UML and other diagram types, with various output formats. It integrates with rendering services like Kroki and PlantUML.
DevContainer MCP Server
Manage DevContainer environments using natural language prompts in any MCP-compatible editor.
Allyson
AI-powered SVG animation generator that transforms static files into animated SVG components using the Allyson platform
Rust Docs MCP Server
Query up-to-date documentation for Rust crates.
LaTeX to MathML MCP Server
Converts LaTeX mathematical expressions to MathML format using MathJax-node.
Quick Chart MCP Server
A server for creating charts and visualizations using the Quick Chart API.
Prometheus MCP
Expose Prometheus monitoring tools to an LLM for querying and analysis.
iOS Simulator MCP Server
A Model Context Protocol (MCP) server for interacting with iOS simulators. This server allows you to interact with iOS simulators by getting information about them, controlling UI interactions, and inspecting UI elements.