An on-device MCP server that converts Markdown to pixel-perfect slide decks
Project description
Slidesmith MCP Server
An on-device Model Context Protocol (MCP) server that converts Markdown content into pixel-perfect slide decks with Tailwind/React components and print-ready PDFs. Built for AI-powered presentation creation with zero network dependencies.
🚀 Quick Start
Installation
# Install via uv (recommended - fastest)
uv tool install slidesmith
# Or via pipx
pipx install slidesmith
# Or via pip
pip install slidesmith
First-time Setup
# Install required browsers and templates
slidesmith setup
# Start the MCP server
slidesmith serve
Using with Claude Code
# Add to Claude Code (recommended - always uses latest version)
claude mcp add slidesmith -s project -- uvx slidesmith serve
# Alternative: Use specific version
claude mcp add slidesmith -s project -- uvx slidesmith@0.2.2 serve
# Legacy: Use pipx (if uv not available)
claude mcp add slidesmith -s project -- pipx run --spec slidesmith slidesmith serve
# Verify connection
claude --debug
Important: Using
uvx(orpipx run) ensures Claude Code always fetches the latest version from PyPI on restart. This is the recommended approach for MCP servers to ensure you're always running the most recent updates.uvxis preferred overpipx rundue to its superior performance.
✨ Features
- 🏠 Local-first: No Docker, no network I/O, no telemetry
- 🤖 AI-optimized: Designed for Claude Code to create professional presentations
- ⚡ Fast builds: Sub-second deck generation with Python renderer
- 🎨 Token-based theming: Easy brand customization via JSON
- ✅ Quality gates: Automated linting ensures pixel-perfect output
- 📄 Export ready: Generate print-quality PDFs with embedded fonts
- 🖼️ Rich components: Charts, timelines, metrics, and more
- 🔒 Fully offline: All assets bundled, no CDN dependencies
📚 MCP Tools
Deck Management
list_templates- List available slide templatesinit_deck- Initialize a new slide deck (minimal, no auto-content)cleanup- Clean up deck workspace
Slide Management (v0.4.0+)
add_slide- Add a new slide to the deckupdate_slide- Update an existing slide's contentlist_slides- List all slides with summariesremove_slide- Remove a slide and renumberreorder_slides- Reorder slides in the deck
Component Discovery (v0.4.0+)
list_components- List all available components with descriptionsget_component_doc- Get detailed component documentationpreview_component- Preview component with sample data
Template Configuration (v0.4.0+)
configure_template_defaults- Set default template behaviorset_slide_template- Set template and display options per slide
Dynamic Content (v0.4.0+)
generate_chart_data- Generate properly formatted chart datacreate_data_visualization- Create metrics/timeline visualizationscompute_metrics- Perform calculations for displaysgenerate_timeline- Generate timeline from eventsembed_asset- Embed images, icons, logos, diagrams
Theming
theme_base- Get base theme tokens for a templateapply_tokens- Apply custom theme tokens to a deck
Building & Export
html_preview- Generate HTML preview of deckpdf_export- Export deck to print-ready PDFsnapshot- Generate PNG screenshots of slides
Quality & Utilities
slide_lint- Check slides for quality issuesget_version- Get current Slidesmith versionsvg_icon- Get SVG icons from offline library
🎯 Example Usage
v0.4.0+ Workflow - Claude Does the Work
# 1. Initialize an empty deck
"Create a new deck using the markov-pro template"
# 2. Claude writes all the slides
"Add a title slide for TechVision AI startup pitch"
"Add a slide with our problem statement and market size"
"Create a slide showing our solution with a 3-column layout"
"Add a metrics slide showing 200% YoY growth with a bar chart"
"Create a team slide with photos and bios"
# 3. Fine-tune and export
"Update slide 4 to use a line chart instead"
"Apply a blue color scheme with Montserrat font"
"Export to PDF for investors"
Key Difference from Earlier Versions
- v0.3.x and earlier: SlideSmith auto-generated content and made layout decisions
- v0.4.0+: Claude explicitly creates every slide and component - full control
📦 What's Included
Templates
- markov-pro: Professional business template
- minimal: Clean, minimalist design
- tech: Modern tech presentation style
Components
SlideBase- Standard slide container (1920x1080)Header/Footer- Consistent branding elementsBarChart/PieChart- Data visualizationTimeline- Event sequencesMetricSection- KPI displaysCardGrid- Feature showcasesImpactBox- Highlighted metrics- And many more...
Example Decks
- Startup Pitch (10 slides) - Series B investor deck
- Product Demo (15 slides) - Feature showcase
- Company Overview (20 slides) - Corporate presentation
📝 Slide Format (v0.2.0+)
Slidesmith uses Markdown with a custom component syntax:
---
slide: 1
template: title
---
# My Presentation
## Subtitle Here
:::speaker-notes
These are my speaker notes
:::
Components
:::card title="Feature Card" icon=rocket color=blue
This is the card content
:::
:::columns ratio=2:1
Left column content
Right column content
:::
:::chart type=bar
labels: ['Q1', 'Q2', 'Q3', 'Q4']
data: [100, 200, 150, 300]
:::
See MIGRATION_GUIDE.md for converting from MDX format.
🛠️ Development
Setup Development Environment
# Clone the repository
git clone https://github.com/markov/slidesmith.git
cd slidesmith
# Create virtual environment
python -m venv slidesmith-env
source slidesmith-env/bin/activate
# Install in development mode
pip install -e ".[dev]"
# Install Node dependencies
npm install
# Run tests
pytest
Project Structure
slidesmith/
├── slidesmith/ # Python MCP server
│ ├── tools/ # MCP tool implementations
│ ├── models.py # Pydantic models
│ └── server.py # FastMCP server
├── scripts/ # Node.js build scripts
├── templates/ # Slide templates
├── examples/ # Example presentations
└── tests/ # Test suite
🧪 Testing
# Run all tests
pytest
# Run with coverage
pytest --cov=slidesmith --cov-report=html
# Run specific test category
pytest tests/test_tools_unit.py -v
📋 Requirements
- Python 3.11+
- Node.js 18+
- macOS, Linux, or Windows
- 500MB free disk space
🤝 Contributing
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
📄 License
MIT License - see LICENSE for details.
🔗 Links
🙏 Acknowledgments
Built with:
- FastMCP - MCP framework
- Playwright - Browser automation
- MDX - Markdown + JSX
- Tailwind CSS - Styling
- esbuild - Bundling
Made with ❤️ for the MCP community
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file slidesmith-0.4.7.tar.gz.
File metadata
- Download URL: slidesmith-0.4.7.tar.gz
- Upload date:
- Size: 347.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
def4aefbb9fb8f38737ec5e6e77df65d9aa84c202b1596f4f433062ea63d9fa1
|
|
| MD5 |
3002cecd273ae9e9eb2e732e3467e8e9
|
|
| BLAKE2b-256 |
d10f42a413607c1af057e858fb9db016c434ca7d382adb100556569a3cd48872
|
File details
Details for the file slidesmith-0.4.7-py3-none-any.whl.
File metadata
- Download URL: slidesmith-0.4.7-py3-none-any.whl
- Upload date:
- Size: 344.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbb060f50bc84966198358ac80995b64e0eae809b74ab7f22e1793c31f4ce93c
|
|
| MD5 |
c4b0fb1fe9309045dc41ec1c8ee8e855
|
|
| BLAKE2b-256 |
f64e55c03ba61b4cba065ff112029631a73fd36f51fbf18fd469d111eba33970
|