PluginBench
MCP Server
Active

Presio MCP Server

xyz.presio/presio

Present PDFs from your browser with live sync, speaker notes, and embedded media—no installation required.

What is the Presio MCP server?

Presio is an MCP server that enables AI agents to upload and manage PDF presentations, validate speaker notes and media sidecars, and control slideshow sessions. It provides browser-based presentation control with live synchronization across devices, speaker notes rendering, and embedded video support.

Presio is a modern, browser-based presentation tool that lets you upload a PDF, get a shareable link, and control slides from one window while viewers watch in another. It works locally by default (PDFs stay in your browser), supports speaker notes and embedded media, and offers both local and online presentation modes. The MCP server integration lets AI agents upload PDFs, validate presentation metadata, and manage sessions programmatically.

How to install Presio

Copy-paste configuration for popular MCP clients.

transport: http
Config generated by PluginBench — verify against the source before use.
~/.cursor/mcp.json
{
  "mcpServers": {
    "presio": {
      "url": "https://presio.xyz/mcp"
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • upload_pdf — Upload a PDF presentation to Presio and receive a shareable session link.
  • validate_sidecar — Validate Presio sidecars (speaker notes and media metadata) attached to a PDF.
  • create_session — Create a new presentation session with optional online sync and controller passphrase.
  • get_session_info — Retrieve information about an active presentation session.

Use cases

  • Upload a PDF presentation and generate a shareable link for live viewing across devices.
  • Validate speaker notes and embedded media metadata before presenting.
  • Control a slideshow remotely while viewers follow along in sync via WebSockets.
  • Embed speaker notes and videos in Typst or LaTeX presentations and verify they render correctly.
  • Present offline with local PDFs that sync across multiple browser windows on the same machine.

Presio MCP server FAQ

What is Presio?

Presio is a browser-based presentation tool that lets you upload PDFs, control slides from a controller window, and share with viewers in real-time. It supports speaker notes, embedded media, and works both locally (offline) and online with cross-device sync.

Is Presio free?

Yes. Presio is a free hosted service at presio.xyz or presio.ch. You can also self-host it using Docker.

How do I use Presio with Claude or Cursor?

Install the Presio MCP server via the remote endpoint https://presio.xyz/mcp. Once connected, you can upload PDFs, validate presentation metadata, and manage sessions through the MCP interface.

Do I need to authenticate to use Presio?

No authentication is required. Local presentations work offline and are kept for up to 7 days. Online sync with cross-device features requires a free login.

Can I add speaker notes and videos to my presentation?

Yes. Use the official Typst or LaTeX packages (presio-typst-package and presio-latex-package) to embed speaker notes and media. You can also embed them by hand using JSON attachments (Typst) or link annotations (LaTeX).

How do I validate my presentation before presenting?

Visit presio.ch/check to upload your PDF. It shows per-page thumbnails and reports whether speaker notes and media sidecars are valid.

README (reference)

Source of truth, from the repository.

Presio

Present PDFs from your browser. Try it at presio.ch or presio.xyz.

A modern no-install alternative to Pympress with more features!

Upload a PDF presentation, get a short link, and control the slideshow from one browser window while viewers watch in another. Presio is a hosted service; this repository is its source code.

If .xyz domains are blocked by your institution you can use presio.ch

Demo

Demo

Features

  • Local by default — your PDF stays in the browser and is never uploaded. Works offline; local presentations are kept for up to 7 days.
  • Controller + viewer — drive slides from the controller window while a viewer window mirrors it, kept perfectly in sync.
  • Present across devices — log in and sync online to get a 6-character session code. Viewers enter it on the home page and follow along live over WebSockets.
  • Shared control — hand out a controller passphrase to let someone else drive.
  • Speaker notes — written next to your current and next slide, rendered as markdown.
  • Embedded media — local videos and GIFs, direct video URLs, and YouTube/Vimeo. Playback, autoplay, and seeking all stay in sync with viewers.
  • Presentation timer — track how long you've been talking.
  • Customizable controller — rearrange the layout and remap keyboard shortcuts.
  • Recent presentations — pick up where you left off from the home page.
  • Download — anyone can grab the PDF from the presentation view.
  • Agent APIs — MCP server and REST API for AI agents; see Use it from an AI agent.

Adding videos and speaker notes

Presio is agnostic to the typesetting engine used — any PDF works, and notes can also be embedded by hand from plain Typst or LaTeX (see Embedding notes by hand). Official packages are available for the two most common ones:

Typst

#import "@preview/presio:0.2.3": media, speaker-notes

= Introduction

Hello world.

#speaker-notes[
  Remember to mention the demo before moving on.
]

#media("https://www.youtube.com/watch?v=dQw4w9WgXcQ", width: 60%, aspect-ratio: 16/9)

LaTeX

Open in Overleaf

\documentclass{beamer}
\usepackage{presio}

\begin{document}

\begin{frame}{Introduction}
  Hello world.
  \presionote{Remember to mention the demo before moving on.}
\end{frame}

\begin{frame}{The demo}
  \presiomedia[width=0.7\linewidth]{https://www.youtube.com/watch?v=dQw4w9WgXcQ}
\end{frame}

\end{document}

For LaTeX, copy presio.sty from the package repository next to your .tex file — that's the whole install.

Embedding notes by hand

Prefer not to use the packages? Presio reads speaker notes from JSON files attached to the PDF (Typst) or from note: link annotations (LaTeX), and renders them as markdown in the controller's notes panel.

Typst — define a helper and call it on each slide:

#let speaker-notes(notes) = context {
  // Page number keeps the attachment filename unique per slide
  let page-num = counter(page).display()
  let filename = "notes-slide-" + page-num + ".json"

  let json-string = json.encode((slide: page-num, notes: notes))

  pdf.attach(
    filename,
    bytes(json-string),
    description: "Speaker notes for slide " + page-num,
    mime-type: "application/json",
  )
}

#speaker-notes("Remember to mention the demo.")

LaTeX — use hyperref to create an invisible note: link:

\usepackage{hyperref}

\newcommand{\speakernote}[1]{%
  \href{note:#1}{\phantom{n}}%
}

% Usage on a slide:
\speakernote{Remember to mention the demo.}

Validate what you produced at presio.ch/check — it shows per-page thumbnails and reports whether the notes and media sidecars are valid.

Self-hosting

Want to run Presio yourself instead of using the hosted service? For a full deployment (accounts, cross-device sync, your own domain) see deploy/README.md.

For a single offline container with no accounts and no Supabase — just present PDFs on your own machine or LAN — nothing needs building:

docker run -d -p 3001:3001 -e PRESIO_MODE=local -e LOCAL_DATA_DIR=/data \
  -e TRUST_PROXY=false -v presio-data:/data \
  ghcr.io/benedict-armstrong/presio-local:1

The :1 tag tracks the current major release line — fixes and features, no breaking changes. See Versions and upgrading.

See "Running fully local / offline" for what this mode does and doesn't include.

Related MCP servers

Guarded agent surface for X & LinkedIn: discover, score, and draft in your voice. No key can post.

View repository →

Revenue research and pipeline tools for agencies: scouting, contact intel, ABM, cadences, briefs.

Paid MCP for AI agents: vol risk premium, Agent-SOFR, max-LTV. $0.001 USDC on Base via x402.

Multichain DEX router: free MCP tools for swap-quote prices, chains, catalog; paid via x402.

PAPartle logo

Partle

Active

Search products in nearby stores. Agents can also list items for sale on a user's behalf.

1
Python
Apache-2.0
View repository →
SBSBOR logo

SBOR

Active

Check a lending rate before your agent borrows. Stacks benchmark, read from contract state. No key.

0
JavaScript
MIT
View repository →