
Media Forge
io.github.PavelGuzenfeldPublished by GitHub account PavelGuzenfeldv0.2.0Updated Nov 10, 2026
MCP server for generating diagrams, charts, presentations, and animations for Markdown documentation
Overview
Local MCP server that turns text DSLs into diagrams, charts, self-contained HTML pages and slide decks, returning file paths to embed in Markdown docs.
- What you can do
- Render diagrams from Mermaid, D2 and Graphviz DOT code as SVG or PNG
- Render Vega-Lite JSON specifications as bar, line, scatter, area or heatmap charts
- Generate self-contained themed HTML pages with a built-in CSS design system
- Build HTML slide decks from a JSON slide array with keyboard and touch navigation
- Read per-tool usage guides and list previously generated assets in the output directory
- When to use it
- Useful when an assistant writes or maintains Markdown documentation and should add architecture diagrams, dependency graphs, charts, report pages or presentation decks as files in the project rather than inline text.
- Requirements
- Runs locally over stdio, typically via npx or a cloned and built Node.js package. Diagram and chart tools need a Docker rendering container started separately; HTML page and slide tools work without Docker. Optional environment variables PROJECT_ROOT, OUTPUT_DIR and MEDIA_FORGE_CONTAINER set the output location and container name.
Installation
In SourceWeft
- Open Media Forge in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
MCP Media Forge
[npm] [MCP Registry] [License: MIT]
MCP server that generates diagrams, charts, HTML pages, and slide decks from text DSLs -- designed for AI coding agents to embed into Markdown.
LLM agents call tools like render_mermaid, render_html_page, or render_slides with text input, and get back file paths to assets ready to embed in docs.
Output Gallery
Mermaid Flowchart
[Mermaid flowchart]Mermaid Sequence Diagram
[Mermaid sequence diagram]D2 Architecture Diagram
[D2 architecture diagram]Graphviz Dependency Graph
[Graphviz dependency graph]Vega-Lite Bar Chart
[Vega-Lite bar chart]Tools
Diagram & Chart Renderers (Docker)
HTML Generators (No Docker)
Utilities
Quick Start
1. Start the rendering container (for diagram tools)
HTML page and slide tools work without Docker.
2. Install the MCP server
Option A -- npx (no install)
Option B -- Clone and build
3. Register with your MCP client
Any MCP-compatible client (Claude Code, Cursor, VS Code + Copilot, Cline, etc.) can use this server. The standard config:
Where to add this depends on your client:
- Claude Code:
~/.claude/settings.json - Cursor: MCP settings panel
- VS Code (Copilot):
.vscode/mcp.json - Cline: MCP server configuration
4. Use it
Ask your AI assistant to generate diagrams, pages, or presentations:
"Create a sequence diagram showing the OAuth2 flow and embed it in the README"
"Generate an HTML page summarizing the API architecture with KPI cards"
"Make a slide deck with our Q1 metrics and architecture overview"
The agent calls the appropriate tool, gets back a file path, and embeds it in your markdown.
How It Works
Key design decisions:
- Text in, file path out -- returns relative paths, never base64 blobs
- Content-hash naming -- same input = same file = free caching + git-friendly
- SVG preferred -- vector format, small files, diffs cleanly in git
- Docker-contained -- diagram renderers run in a sandboxed container with
network_mode: none - Self-contained HTML -- pages and slides have zero external dependencies (inline CSS/JS)
- Input pre-validation -- catches common mistakes before Docker round-trips
- Structured errors -- error responses include
error_type,error_message, andsuggestionto enable LLM self-correction
Tool Reference
get_tool_guide
Get usage guide for any tool before rendering. Returns examples, anti-patterns to avoid, complexity limits, and tips.
Available guides: mermaid, d2, graphviz, vegalite, html_page, slides, or all for a summary.
render_mermaid
Pre-validation catches: missing diagram type, semicolons, HTML in labels, >25 nodes.
render_d2
Pre-validation catches: Mermaid/D2 syntax confusion, unbalanced braces, >3 nesting depth.
render_graphviz
Pre-validation catches: missing graph wrapper, -> in undirected graphs, unbalanced braces.
render_chart
Pre-validation catches: invalid JSON, missing $schema/data/mark, >500 inline data rows.
render_html_page
Generates a self-contained themed HTML page. No Docker required.
Design system CSS classes:
Themes:
render_slides
Generates a self-contained HTML slide deck with keyboard/touch navigation. No Docker required.
Slide types:
Navigation: Arrow keys, Space, PageUp/PageDown, Home/End. Touch: swipe left/right. Click dots to jump.
list_assets
Returns a JSON array of all generated files with name, path, size, and modification time.
Error Handling
All tools return structured errors that help LLMs self-correct:
Error types: syntax_error, rendering_error, dependency_missing.
Pre-validation catches common LLM mistakes before hitting the renderer:
- Mermaid: missing diagram type, semicolons, HTML tags, legacy
graphsyntax - D2: Mermaid syntax confusion (
-->,subgraph), unbalanced braces - Graphviz: missing
digraph/graphwrapper,->in undirected graphs - Vega-Lite: invalid JSON, missing required fields, oversized inline data
Environment Variables
Development
Running integration tests
HTML page and slide integration tests run without Docker.
Examples
See examples/ for sample input files:
See examples/README.md for MCP tool call examples and expected responses.
License
Source: README.md at commit 315951c
Tools
0Version history
1- v0.2.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts