Back to Browse

Presio MCP Server

Developer ToolsLow Risk10.0MCP RegistryRemote
Free

Server data from the Official MCP Registry

Present PDFs from the browser: upload to start a slideshow or validate Presio sidecars. No auth.

About

Present PDFs from the browser: upload to start a slideshow or validate Presio sidecars. No auth.

Remote endpoints: streamable-http: https://presio.xyz/mcp

Security Report

10.0
Low Risk10.0Low Risk

Valid MCP server (2 strong, 2 medium validity signals). No known CVEs in dependencies. Imported from the Official MCP Registry.

2 tools verified · Open access · No issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Found in Source Code

Found by scanning the linked source code. This listing connects to a hosted endpoint, so none of this runs on your machine: it describes what the server software does where it is hosted.

file_system

Applies to the server that hosts this plugin, not to your machine.

HTTP Network Access

Connects to external APIs or services over the internet.

How to Connect

Remote Plugin

No local installation needed. Your AI client connects to the remote endpoint directly.

Add this to your MCP configuration to connect:

{
  "mcpServers": {
    "xyz-presio-presio": {
      "url": "https://presio.xyz/mcp"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

Presio

Present PDFs from your browser: a no-install alternative to Pympress. Try it at presio.ch or presio.xyz (use presio.ch if your institution blocks .xyz).

Plugins

Open a PDF, drive the slides from one browser window and show them in another. This repository is the source of the hosted service.

Demo

How it works

Features

  • Local by default: your PDF stays in the browser and works offline. Local presentations are kept for 7 days.
  • Controller + viewer: the viewer window mirrors the controller, in sync.
  • Present across devices: log in and sync to get a 6-character code. Viewers enter it on the home page and follow along live.
  • Shared control: give someone a passphrase to drive.
  • Speaker notes: shown next to the current and next slide, rendered as markdown.
  • Embedded media: videos, GIFs and YouTube/Vimeo, with playback synced to viewers.
  • Timer, a customizable layout and remappable shortcuts.
  • Plugins: add features such as polls or captions; see Plugins.
  • Agent APIs: an MCP server and a REST API; see Use it from an AI agent.

Adding videos and speaker notes

Any PDF works. For notes and media, use the official packages, or embed them by hand (see Embedding notes by hand):

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}

To install, copy presio.sty from the package repository next to your .tex file.

Embedding notes by hand

Presio reads speaker notes from JSON files attached to the PDF (Typst) or from note: link annotations (LaTeX).

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.}

Check the result at presio.ch/check, which reports whether the notes and media on each page are valid.

Plugins

Plugins add features such as live polls or closed captions. Browse them under the presio-plugin topic on GitHub and add one from Settings → Discover plugins.

To build your own, paste this prompt into Claude Code, Codex or Cursor:

Read https://presio.ch/plugins.md and build me a Presio plugin. Ask me what it should do first.

Use it from an AI agent

Agents can present and check PDFs over MCP or REST. Start at presio.ch/llms.txt. To add the MCP server to Claude Code:

claude mcp add --transport http presio https://presio.ch/mcp

Self-hosting

For a full deployment (accounts, cross-device sync, your own domain) see deploy/README.md.

For a single offline container with no accounts or Supabase:

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/potentialhedge/presio-local:1

:1 tracks the current major version, so it gets no breaking changes (see Versions and upgrading). See Running fully local / offline for what this mode includes.

Reviews

No reviews yet

Be the first to review this server!