[{"data":1,"prerenderedAt":615},["ShallowReactive",2],{"content-query-Gfh4jb2HZo":3,"content-navigation-8C37fagqQL":426},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"heading":10,"abstract":11,"year":12,"tags":13,"schemaOrg":17,"body":69,"_type":398,"_id":399,"_source":400,"_file":401,"_stem":402,"_extension":403,"head":404},"/projects/slidev-mcp","projects",false,"","Slidev MCP: AI-powered presentation generation with shareable links","Open-source MCP server that lets any AI assistant create, update, and host Slidev presentations with permanent shareable URLs, 24 themes, and zero-login sharing.","Slidev MCP","Built an MCP server that turns any AI assistant into a presentation tool. Ask it to create slides, pick a theme, and get a shareable link that works in any browser. 24 themes, iterative editing, 30-day hosted URLs.","2026",[14,15,16],"On Github","MCP","Slidev",[18,44],{"@context":19,"@type":20,"name":10,"headline":8,"description":21,"datePublished":22,"dateModified":23,"author":24,"codeRepository":33,"url":34,"programmingLanguage":35,"runtimePlatform":38,"license":39,"operatingSystem":40,"applicationCategory":41,"keywords":42,"inLanguage":43},"https://schema.org","SoftwareSourceCode","Open-source MCP server enabling AI assistants to generate, render, and host Slidev presentations with permanent shareable URLs.","2025-03-01","2025-04-01",{"@type":25,"givenName":26,"familyName":27,"name":28,"url":29,"sameAs":30},"Person","Joel","Barmettler","Joel Barmettler","https://joelbarmettler.xyz",[31,32],"https://www.linkedin.com/in/joel-barmettler-b9ab361b7","https://github.com/joelbarmettlerUZH","https://github.com/joelbarmettlerUZH/slidev-mcp","https://slidev-mcp.org",[36,37],"Python","TypeScript","Docker","https://fsl.software/FSL-1.1-ALv2.template.md","Linux","DeveloperApplication","MCP, Model Context Protocol, Slidev, presentations, AI tools, open source","en",{"@context":19,"@type":45,"mainEntity":46},"FAQPage",[47,53,57,61,65],{"@type":48,"name":49,"acceptedAnswer":50},"Question","What is Slidev MCP?",{"@type":51,"text":52},"Answer","Slidev MCP is an open-source MCP server that enables AI assistants like Claude, ChatGPT, Cursor, and others to generate, render, and host Slidev presentations. Users describe what they want, the AI produces slides, and the server returns a shareable URL that works in any browser without login.",{"@type":48,"name":54,"acceptedAnswer":55},"How do I connect Slidev MCP to my AI assistant?",{"@type":51,"text":56},"For Claude Code, run: claude mcp add slidev-mcp --transport streamable-http https://mcp.slidev-mcp.org/mcp. For Claude Desktop, add it as a custom connector. For Cursor, VS Code, and other IDEs, add the URL to your MCP JSON config. Any client supporting streamable HTTP works.",{"@type":48,"name":58,"acceptedAnswer":59},"How does Slidev MCP work technically?",{"@type":51,"text":60},"The MCP server (Python/FastMCP) receives markdown and a theme choice from the AI client, validates the input, and sends a build request to an isolated Bun-based builder service. The builder copies a pre-installed theme project, injects the markdown, runs Slidev's static build, and outputs HTML to a shared volume. Nginx serves the result at a unique UUID-based URL. PostgreSQL stores slide metadata and version history.",{"@type":48,"name":62,"acceptedAnswer":63},"What themes are available in Slidev MCP?",{"@type":51,"text":64},"Slidev MCP ships with 24 pre-installed themes: 5 official (default, seriph, apple-basic, bricks, shibainu) and 19 community themes (academic, cobalt, dracula, geist, nord, penguin, unicorn, vibe, and more). Users can ask the AI to show a theme gallery or describe a style and let the AI choose.",{"@type":48,"name":66,"acceptedAnswer":67},"Can I self-host Slidev MCP?",{"@type":51,"text":68},"Yes. Slidev MCP is fully open source and can be self-hosted via Docker Compose. The repository includes production-ready configurations with Let's Encrypt TLS, Traefik routing, rate limiting, and automated garbage collection of expired slides.",{"type":70,"children":71,"toc":389},"root",[72,81,98,104,127,134,139,145,159,171,192,197,203,208,234,260,278,288,301,307,312,318,331,337,359,375],{"type":73,"tag":74,"props":75,"children":77},"element","h1",{"id":76},"slidev-mcp-ai-powered-presentation-generation",[78],{"type":79,"value":80},"text","Slidev MCP: AI-powered presentation generation",{"type":73,"tag":82,"props":83,"children":89},"video",{"controls":84,"muted":84,"playsInline":84,"className":85},true,[86,87,88],"w-full","rounded-lg","my-4",[90,92],{"type":79,"value":91},"\n  ",{"type":73,"tag":93,"props":94,"children":97},"source",{"src":95,"type":96},"/projects/slidev-mcp/demo.mp4","video/mp4",[],{"type":73,"tag":99,"props":100,"children":101},"p",{},[102],{"type":79,"value":103},"Creating presentations is tedious. Designing slides, choosing layouts, formatting content, exporting, hosting, sharing. What if you could just describe what you want and get a link?",{"type":73,"tag":99,"props":105,"children":106},{},[107,109,117,119,125],{"type":79,"value":108},"Slidev MCP is a ",{"type":73,"tag":110,"props":111,"children":114},"a",{"href":33,"rel":112},[113],"nofollow",[115],{"type":79,"value":116},"source-available",{"type":79,"value":118}," MCP server that connects any AI assistant to ",{"type":73,"tag":110,"props":120,"children":123},{"href":121,"rel":122},"https://sli.dev",[113],[124],{"type":79,"value":16},{"type":79,"value":126},", the developer-friendly presentation framework. You describe your slides in natural language, the AI generates Slidev markdown, the server renders it into a hosted presentation, and you get a permanent URL. No login, no file management, no export step.",{"type":73,"tag":128,"props":129,"children":131},"h2",{"id":130},"the-problem",[132],{"type":79,"value":133},"The problem",{"type":73,"tag":99,"props":135,"children":136},{},[137],{"type":79,"value":138},"Presentations sit in an awkward gap between thinking and communicating. The content itself often takes minutes to outline, but the tooling overhead (choosing a template, fighting with layout engines, exporting to PDF, uploading somewhere) can take longer than the writing. MCP (Model Context Protocol) gives AI assistants the ability to call external tools, but there was no presentation tool in the ecosystem. I built one.",{"type":73,"tag":128,"props":140,"children":142},{"id":141},"how-it-works",[143],{"type":79,"value":144},"How it works",{"type":73,"tag":99,"props":146,"children":147},{},[148,150,157],{"type":79,"value":149},"Connect your AI assistant to ",{"type":73,"tag":151,"props":152,"children":154},"code",{"className":153},[],[155],{"type":79,"value":156},"mcp.slidev-mcp.org/mcp",{"type":79,"value":158}," and ask it to make a presentation. For Claude Code, that is a single command:",{"type":73,"tag":160,"props":161,"children":166},"pre",{"className":162,"code":164,"language":165,"meta":7},[163],"language-bash","claude mcp add slidev-mcp --transport streamable-http https://mcp.slidev-mcp.org/mcp\n","bash",[167],{"type":73,"tag":151,"props":168,"children":169},{"__ignoreMap":7},[170],{"type":79,"value":164},{"type":73,"tag":99,"props":172,"children":173},{},[174,176,182,184,190],{"type":79,"value":175},"From there, you describe what you want. The AI reads the bundled Slidev documentation, picks appropriate layouts and components, generates markdown, and calls the ",{"type":73,"tag":151,"props":177,"children":179},{"className":178},[],[180],{"type":79,"value":181},"render_slides",{"type":79,"value":183}," tool. Seconds later, you have a URL like ",{"type":73,"tag":151,"props":185,"children":187},{"className":186},[],[188],{"type":79,"value":189},"https://slides.slidev-mcp.org/slides/abc123/",{"type":79,"value":191}," that works in any browser, ready to present.",{"type":73,"tag":99,"props":193,"children":194},{},[195],{"type":79,"value":196},"You can iterate: ask for changes, and the same URL updates in place. Pick from 24 pre-installed themes or describe a style and let the AI choose. The slides stay hosted for 30 days after your session ends.",{"type":73,"tag":128,"props":198,"children":200},{"id":199},"architecture",[201],{"type":79,"value":202},"Architecture",{"type":73,"tag":99,"props":204,"children":205},{},[206],{"type":79,"value":207},"The system has four components orchestrated via Docker Compose:",{"type":73,"tag":99,"props":209,"children":210},{},[211,217,219,224,226,232],{"type":73,"tag":212,"props":213,"children":214},"strong",{},[215],{"type":79,"value":216},"MCP Server (Python/FastMCP).",{"type":79,"value":218}," The entry point for AI clients. Exposes two MCP tools (",{"type":73,"tag":151,"props":220,"children":222},{"className":221},[],[223],{"type":79,"value":181},{"type":79,"value":225},", ",{"type":73,"tag":151,"props":227,"children":229},{"className":228},[],[230],{"type":79,"value":231},"list_session_slides",{"type":79,"value":233},") and a set of resources (Slidev syntax guides, theme documentation, examples). The server validates input (theme allowlist, markdown size limits, UUID v4 format), manages sessions, and coordinates builds. Built with async Python using SQLAlchemy for persistence and httpx for internal HTTP calls.",{"type":73,"tag":99,"props":235,"children":236},{},[237,242,244,250,252,258],{"type":73,"tag":212,"props":238,"children":239},{},[240],{"type":79,"value":241},"Builder (Bun/TypeScript).",{"type":79,"value":243}," An isolated HTTP service that does the actual rendering. On each build request, it copies a pre-installed theme project directory, patches the frontmatter, runs ",{"type":73,"tag":151,"props":245,"children":247},{"className":246},[],[248],{"type":79,"value":249},"slidev build",{"type":79,"value":251}," to produce static HTML with hash-based routing, and writes the output to a shared volume. Each theme has its own pre-bootstrapped ",{"type":73,"tag":151,"props":253,"children":255},{"className":254},[],[256],{"type":79,"value":257},"node_modules",{"type":79,"value":259},", so builds take seconds rather than minutes.",{"type":73,"tag":99,"props":261,"children":262},{},[263,268,270,276],{"type":73,"tag":212,"props":264,"children":265},{},[266],{"type":79,"value":267},"PostgreSQL.",{"type":79,"value":269}," Stores slide metadata and version history. Every update creates a new ",{"type":73,"tag":151,"props":271,"children":273},{"className":272},[],[274],{"type":79,"value":275},"SlideVersion",{"type":79,"value":277}," row, so the system maintains a full edit trail per presentation.",{"type":73,"tag":99,"props":279,"children":280},{},[281,286],{"type":73,"tag":212,"props":282,"children":283},{},[284],{"type":79,"value":285},"Nginx.",{"type":79,"value":287}," Serves the rendered static slides from the shared volume at UUID-based paths. Origin isolation (slides served from a separate domain) prevents any embedded content from accessing the MCP server's cookies or state.",{"type":73,"tag":99,"props":289,"children":290},{},[291,293,299],{"type":79,"value":292},"The design prioritizes security: the builder runs as a non-root user with ",{"type":73,"tag":151,"props":294,"children":296},{"className":295},[],[297],{"type":79,"value":298},"no-new-privileges",{"type":79,"value":300},", themes are validated against an allowlist with regex pattern matching, lifecycle scripts are disabled in Bun, and Traefik enforces rate limiting at 60 requests per minute.",{"type":73,"tag":128,"props":302,"children":304},{"id":303},"mcp-resources-as-context",[305],{"type":79,"value":306},"MCP resources as context",{"type":73,"tag":99,"props":308,"children":309},{},[310],{"type":79,"value":311},"Beyond the two tools, the server exposes MCP resources that give AI assistants deep knowledge about Slidev. Resources cover syntax (slide separators, frontmatter, code blocks, animations), built-in components and layouts, per-theme documentation with examples, and a style guide for choosing themes. This means the AI does not just dump text onto slides. It uses theme-specific layouts, applies proper Slidev syntax for animations and transitions, and follows formatting conventions.",{"type":73,"tag":128,"props":313,"children":315},{"id":314},"supported-clients",[316],{"type":79,"value":317},"Supported clients",{"type":73,"tag":99,"props":319,"children":320},{},[321,323,329],{"type":79,"value":322},"Slidev MCP works with any MCP client that supports streamable HTTP transport: Claude Code, Claude Desktop, claude.ai, Cursor, Windsurf, VS Code (Copilot), JetBrains IDEs, Zed, Opencode, Gemini CLI, and ChatGPT. Setup is typically one command or a few lines of JSON config. Full client guides are available at ",{"type":73,"tag":110,"props":324,"children":326},{"href":34,"rel":325},[113],[327],{"type":79,"value":328},"slidev-mcp.org",{"type":79,"value":330},".",{"type":73,"tag":128,"props":332,"children":334},{"id":333},"self-hosting",[335],{"type":79,"value":336},"Self-hosting",{"type":73,"tag":99,"props":338,"children":339},{},[340,342,349,351,357],{"type":79,"value":341},"The entire stack is source-available under the ",{"type":73,"tag":110,"props":343,"children":346},{"href":344,"rel":345},"https://fsl.software",[113],[347],{"type":79,"value":348},"FSL-1.1-ALv2",{"type":79,"value":350}," license (converting to Apache 2.0 after two years). The repository includes production Docker Compose configurations with Let's Encrypt TLS via Traefik, automated garbage collection of expired slides, and database backup/restore scripts. A ",{"type":73,"tag":151,"props":352,"children":354},{"className":353},[],[355],{"type":79,"value":356},"make install && make docker-dev-up && make serve",{"type":79,"value":358}," gets a local development environment running.",{"type":73,"tag":99,"props":360,"children":361},{},[362,367,369],{"type":73,"tag":212,"props":363,"children":364},{},[365],{"type":79,"value":366},"Repository:",{"type":79,"value":368}," ",{"type":73,"tag":110,"props":370,"children":372},{"href":33,"rel":371},[113],[373],{"type":79,"value":374},"github.com/joelbarmettlerUZH/slidev-mcp",{"type":73,"tag":99,"props":376,"children":377},{},[378,383,384],{"type":73,"tag":212,"props":379,"children":380},{},[381],{"type":79,"value":382},"Documentation:",{"type":79,"value":368},{"type":73,"tag":110,"props":385,"children":387},{"href":34,"rel":386},[113],[388],{"type":79,"value":328},{"title":7,"searchDepth":390,"depth":390,"links":391},2,[392,393,394,395,396,397],{"id":130,"depth":390,"text":133},{"id":141,"depth":390,"text":144},{"id":199,"depth":390,"text":202},{"id":303,"depth":390,"text":306},{"id":314,"depth":390,"text":317},{"id":333,"depth":390,"text":336},"markdown","content:3.projects:1.slidev-mcp.md","content","3.projects/1.slidev-mcp.md","3.projects/1.slidev-mcp","md",{"script":405},[406],{"type":407,"key":408,"nodes":409,"data-nuxt-schema-org":84},"application/ld+json","schema-org-graph",[410,414],{"@context":19,"@type":20,"name":10,"headline":8,"description":21,"datePublished":22,"dateModified":23,"author":411,"codeRepository":33,"url":34,"programmingLanguage":413,"runtimePlatform":38,"license":39,"operatingSystem":40,"applicationCategory":41,"keywords":42,"inLanguage":43},{"@type":25,"givenName":26,"familyName":27,"name":28,"url":29,"sameAs":412},[31,32],[36,37],{"@context":19,"@type":45,"mainEntity":415},[416,418,420,422,424],{"@type":48,"name":49,"acceptedAnswer":417},{"@type":51,"text":52},{"@type":48,"name":54,"acceptedAnswer":419},{"@type":51,"text":56},{"@type":48,"name":58,"acceptedAnswer":421},{"@type":51,"text":60},{"@type":48,"name":62,"acceptedAnswer":423},{"@type":51,"text":64},{"@type":48,"name":66,"acceptedAnswer":425},{"@type":51,"text":68},[427,441,457,473,484,569],{"title":428,"_path":429,"children":430,"icon":440},"About","/about",[431,434,437],{"title":432,"_path":433},"Joel Barmettler - AI Engineer, Researcher, and Entrepreneur","/about/about-me",{"title":435,"_path":436},"What Drives Me - Research Focus and Philosophy on AI Systems","/about/what-drives-me",{"title":438,"_path":439},"Technical Skills and Expertise - AI, ML, Infrastructure, and Web Development","/about/skills","📁",{"title":442,"_path":443,"children":444,"icon":440},"Career","/career",[445,448,451,454],{"title":446,"_path":447},"Building the AI Business Area at bbv Software Services","/career/bbv",{"title":449,"_path":450},"PolygonSoftware: Building a tech company during university","/career/polygon-software",{"title":452,"_path":453},"Machine learning for semiconductor quality control at BESI","/career/besi",{"title":455,"_path":456},"Data engineering for cryptocurrency analytics at CoinPaper","/career/coinpaper",{"title":458,"_path":459,"children":460,"icon":440},"Research","/research",[461,464,467,470],{"title":462,"_path":463},"The Invisible Coalition Partner: How LLMs Vote When Democracy Gets Concrete","/research/invisible-coalition-partner",{"title":465,"_path":466},"ConceptFormer: Graph-native grounding of LLMs via latent concept injection","/research/masters-thesis",{"title":468,"_path":469},"Airspace auction simulator for urban drone traffic","/research/masters-project",{"title":471,"_path":472},"Physical sky rendering engine for appleseed","/research/bachelors-thesis",{"title":474,"_path":475,"children":476,"icon":440},"Projects","/projects",[477,480,481],{"title":478,"_path":479},"md-reheader: Restoring heading hierarchy in PDF-extracted markdown","/projects/md-reheader",{"title":8,"_path":4},{"title":482,"_path":483},"Vue Docs MCP: Live Vue ecosystem documentation for AI assistants","/projects/vue-mcp",{"title":485,"_path":486,"children":487,"icon":440},"Podcast","/podcast",[488,491,494,497,500,503,506,509,512,515,518,521,524,527,530,533,536,539,542,545,548,551,554,557,560,563,566],{"title":489,"_path":490},"Measuring political bias in language models: systematic analysis using Swiss Smart Vote data","/podcast/political-bias-in-language-models",{"title":492,"_path":493},"DeepSeek R1: pure reinforcement learning for reasoning and why distillation changes everything","/podcast/deepseek-r1-reasoning",{"title":495,"_path":496},"DeepSeek V3: how mixture-of-experts and multi-token prediction enable $5.5M training runs","/podcast/deepseek-v3-architecture",{"title":498,"_path":499},"SRF Arena part 3: international regulation, student perspectives, and why the debate structure failed","/podcast/srf-arena-final-analysis",{"title":501,"_path":502},"SRF Arena part 2: the EU AI Act, nationalization demands, and Switzerland's supercomputer strategy","/podcast/srf-arena-regulation-debate",{"title":504,"_path":505},"Deconstructing the SRF Arena AI debate: deepfakes, Swiss GPT, and the job displacement argument","/podcast/srf-arena-ai-debate-analysis",{"title":507,"_path":508},"O3-mini: how a smaller model outperforms its predecessor at a fraction of the cost","/podcast/openai-o3-mini",{"title":510,"_path":511},"OpenAI o3: trading compute time for reasoning capability","/podcast/openai-o3",{"title":513,"_path":514},"ChatGPT o1: reasoning breakthroughs and emergent deception","/podcast/chatgpt-o1-manipulation",{"title":516,"_path":517},"When AI kills: autonomous weapons, drone swarms, and predictive policing","/podcast/when-ai-kills",{"title":519,"_path":520},"Google's AI pivot: 25% AI-generated code and 90% cost reduction","/podcast/google-ai-revolution",{"title":522,"_path":523},"Why AI projects fail: a practitioner's guide to implementation","/podcast/ai-project-implementation",{"title":525,"_path":526},"Deep learning explained: from embedding spaces to few-shot learning","/podcast/deep-learning-explained",{"title":528,"_path":529},"Vision AI: why language models need to see, and how Llama 3.2 gets there","/podcast/vision-ai",{"title":531,"_path":532},"BitNets and the road to AGI: on-device inference and Sam Altman's 1000-day prediction","/podcast/bitnets-and-agi",{"title":534,"_path":535},"OpenAI o1 benchmarks and AGI implications: IQ 120, coding breakthroughs, and what they mean","/podcast/openai-o1-technical-analysis",{"title":537,"_path":538},"OpenAI o1 and the mechanics of self-reflection: how 70,000 hidden tokens change inference","/podcast/openai-o1-self-reflection",{"title":540,"_path":541},"AI utopia 2035: when automation funds a renaissance in human agency (part 2 of 2)","/podcast/ai-utopia-2035",{"title":543,"_path":544},"AI dystopia 2035: when AI becomes the lifeblood of the economy (part 1 of 2)","/podcast/ai-dystopia-2035",{"title":546,"_path":547},"AI hype vs. reality: a technical assessment of where things actually stand","/podcast/ai-hype-vs-reality",{"title":549,"_path":550},"Open-source AI: the infrastructure behind the hype","/podcast/open-source-ai",{"title":552,"_path":553},"Is AI intelligent? Why the question matters less than you think","/podcast/is-ai-intelligent",{"title":555,"_path":556},"AI in education: why bans backfire and what actually needs to change","/podcast/ai-in-education",{"title":558,"_path":559},"Bias in AI systems: how 15 people shape the values of a billion-user product","/podcast/bias-in-ai-systems",{"title":561,"_path":562},"AI and the labor market: autonomous agents and the transformation of knowledge work","/podcast/ai-and-the-labor-market",{"title":564,"_path":565},"AI terminology explained: a technical guide beyond the hype","/podcast/ai-terminology-explained",{"title":567,"_path":568},"AI and democratic manipulation: from Cambridge Analytica to language models","/podcast/ai-and-democracy",{"title":570,"_path":571,"children":572,"icon":440},"Appearances","/appearances",[573,576,579,582,585,588,591,594,597,600,603,606,609,612],{"title":574,"_path":575},"AI trends 2025 and predictions for 2026: model convergence, integration, and sovereignty","/appearances/webinar-2025-rewind-2026-outlook",{"title":577,"_path":578},"Swiss AI Impact Forum 2025: live demos of the Swiss AI Hub","/appearances/swiss-ai-impact-forum-2025",{"title":580,"_path":581},"AI trends 2024 and predictions for 2025: a technical analysis","/appearances/webinar-2024-rewind-2025-outlook",{"title":583,"_path":584},"AI as a development partner: tools, techniques, and team integration","/appearances/webinar-ai-development-partner",{"title":586,"_path":587},"Swiss AI Impact Forum: Panel on the future of AI in Switzerland","/appearances/swiss-ai-impact-forum-2024",{"title":589,"_path":590},"AI in knowledge management: keynote at the SWICO event in Zurich","/appearances/swico",{"title":592,"_path":593},"Swiss AI Conference: hands-on workshop on AI agents in the enterprise","/appearances/swiss-ai-conference",{"title":595,"_path":596},"AI trends 2023: milestones and developments in artificial intelligence","/appearances/webinar-2023-rewind",{"title":598,"_path":599},"KI Revolution: AI first how a digital native thinks about generative AI","/appearances/bbv-ki-revolution",{"title":601,"_path":602},"AI agents: the future of enterprise automation","/appearances/netzwoche",{"title":604,"_path":605},"ChatGPT demystified: technical deep dive into large language models","/appearances/webinar-chatgpt-demystified",{"title":607,"_path":608},"Swarm intelligence and AI: the future of enterprise automation","/appearances/webinar-swarm-intelligence",{"title":610,"_path":611},"Polygon Software our journey to an innovative UZH tech startup","/appearances/readme-polygon",{"title":613,"_path":614},"UZH startup label for Polygon Software","/appearances/uzh-startup-label",1775406465734]