Turns articles, transcripts, and markdown into LinkedIn carousel PDFs
carousels-mcp
MCP server that turns articles, transcripts, and markdown into LinkedIn carousel PDFs, Instagram PNGs, and Threads PNGs. Content in, slides out. No web UI, no cloud service.
Where this came from
I'd been building LinkedIn carousels manually -- Gemini for the content distillation, SVG generation for the slides, Puppeteer for the PDF conversion, then merging everything together. The whole process is documented in this article. It worked well but it was a lot of steps. So I packaged the pipeline into an MCP server. Now Claude handles the orchestration and I just tell it what I want.
What it does
You've got an article or a YouTube transcript or some markdown notes and you want a carousel. This server handles everything: content extraction, slide planning, SVG generation, PDF/PNG output. Give it a URL and it scrapes the content. Give it just a topic and it tells Claude how to research first using other MCP tools, then call back with the results.
The content extractor is actually quite good at picking the right slide type automatically. Numbers and percentages become stat slides. Ordered lists become step-by-step slides. Strong emphasis becomes takeaway callouts. "Before/after" language triggers comparison slides. The usual content, list, and quote types are there obviously, plus code slides for technical content and a CTA slide at the end.
The five tools
| Tool | What it does |
|---|---|
list_templates |
Shows available templates, including any custom brand kits you've made |
preview_slides |
Converts content into a structured slide plan you can review and edit before committing |
render_slides |
Takes a slide plan and produces SVGs + PDF/PNG output |
create_carousel |
Full pipeline in one call -- content in, carousel out |
create_template |
Creates a custom brand kit by overriding colours and fonts from a base template |
Eleven slide types
cover · content · code · quote · list · cta · stat · comparison · steps · takeaway · dataviz
Multi-platform output
Each platform gets the right dimensions and format. No fiddling with resize tools.
- LinkedIn -- 1080x1350, merged into a single PDF carousel
- Instagram -- 1080x1080, individual PNG slides at 2x resolution
- Threads -- 1080x1350, individual PNGs
Getting started
Claude Desktop config
{
"mcpServers": {
"carousels": {
"command": "npx",
"args": ["-y", "@houtini/carousels-mcp"],
"env": {
"CAROUSEL_TEMPLATES_DIR": "/path/to/your/brand-kits"
}
}
}
}
CAROUSEL_TEMPLATES_DIR is optional. Skip it if you're fine with the built-in templates.
Or install globally:
npm install -g @houtini/carousels-mcp
PDF and PNG output
SVG generation works out of the box. For the actual PDF and PNG files you need Puppeteer:
npm install -g puppeteer
Without it everything still works -- you just get SVG files. The server tells you this in its response, so you'll know. For most workflows you want Puppeteer installed. The SVG-only path is there as a fallback.
Gemini MCP integration
This is where it gets interesting. If you've got Gemini MCP installed alongside carousels-mcp, the two servers work together through Claude's orchestration. The carousel server can't see Gemini's tools directly -- MCP servers are isolated from each other -- but the tool descriptions teach Claude how to compose them.
What that means in practice:
- Research-first carousels. Give
create_carouseljust a topic and it returns orchestration instructions. Claude picks up the workflow, callsgemini_deep_researchfor the content, then calls back with the results. You get a carousel about a topic you haven't written about yet. - Custom charts. Use
preview_slidesto get a slide plan, then ask Gemini'sgenerate_svgto create charts or diagrams for specific slides. Inject the SVGs into the plan'scustomSvgfields and callrender_slides. The chart ends up embedded directly in the slide. - Quality review. After rendering, Gemini's
analyze_imagecan review the output PNGs and suggest improvements. Useful for catching text overflow or layout issues before
Tools (5)
list_templatesShows available templates, including any custom brand kits you've made.preview_slidesConverts content into a structured slide plan you can review and edit before committing.render_slidesTakes a slide plan and produces SVGs + PDF/PNG output.create_carouselFull pipeline in one call -- content in, carousel out.create_templateCreates a custom brand kit by overriding colours and fonts from a base template.Environment Variables
CAROUSEL_TEMPLATES_DIRPath to your custom brand kits directoryConfiguration
{"mcpServers": {"carousels": {"command": "npx", "args": ["-y", "@houtini/carousels-mcp"], "env": {"CAROUSEL_TEMPLATES_DIR": "/path/to/your/brand-kits"}}}}