PDF Viewer MCP server icon

PDF Viewer

by PDF Viewer

Productivity4 toolsNo Auth Required

The official MCP demo server for rendering a PDF inside the chat as an interactive MCP Apps widget. 4 tools, no sign-in, HTTPS-only URLs. A reference implementation, not a production product.

Verified connector

Listed by Anthropic as a partner connector in its Connectors Directory.

Connection checked by Agentman on .

Anthropic states this reflects the level of review a connector received, not a security audit.

Connect PDF Viewer via MCP

https://example-server.modelcontextprotocol.io/pdf/mcp

Works in any MCP-compatible client. In Agentman Studio it is one click — no config file to edit.

PDF Viewer Tools & Capabilities (4)

list_pdfsNot annotated

List available PDFs that can be displayed

read_pdf_bytesNot annotated

Read a range of bytes from a PDF (max 512KB per request). The model should NOT call this tool directly.

display_pdfNot annotated

Show and render a PDF in a read-only viewer. Use this tool when the user wants to view or read a PDF. The renderer displays the document for viewing. The widget exposes app-registered tools for page navigation, text extraction, searching, and zoom control. Accepts local files (use list_pdfs), client MCP root directories, or any HTTPS URL.

save_pdfNot annotated

Save annotated PDF bytes back to a local file. The model should NOT call this tool directly — use interact with action: save_as instead.

Read from the server on 2026-08-18, including each tool's own safety annotations.

Limits

  • No safety annotations anywhere. Four of four tools ship without them, including the one that writes files. Client-side auto-approval rules that key on readOnlyHint have nothing to read.
  • The directory listing understates the surface. One tool named against four served.
  • Two directory entries share this name. The local claude-desktop extension is a different deployment with nine listed tools; do not read its capabilities onto this endpoint.
  • Claude only. Anthropic's entry records claude as the sole client under works-with.
  • The viewer needs MCP Apps. Without that extension you get structured output and no interface.
  • HTTPS only. Non-HTTPS URLs are rejected outright; plain-HTTP loopback needs an environment variable set on the server you are running.
  • read_pdf_bytes caps at 512 KB per call, per the schema maximum of 524288 on byteCount. Larger documents need paging via offset and hasMore.
  • On the hosted endpoint, the local-file tools have nothing to work on. list_pdfs and save_pdf operate on directories supplied at startup, and a public deployment supplies none.
  • taskSupport is forbidden on all four tools, so none of them can run as a long-lived task.
  • The annotation and editing tool is missing from the hosted endpoint. interact is documented in the repository but requires a flag not set here, so the hosted connector displays PDFs and cannot annotate, search or fill forms through a tool call.
  • The README's domain allowlist is not enforced in code. Do not rely on it as a security boundary when self-hosting.

Frequently asked questions

Is the PDF Viewer MCP server a real product or a demo?

It is a demo. The server is published by the Model Context Protocol project itself as a reference implementation of MCP Apps, and it lives in the examples directory of the modelcontextprotocol/ext-apps repository on a host literally named example-server. Anthropic lists it at partner tier, but no vendor stands behind it commercially. Treat it as something to learn from and experiment with, not to build a workflow on.

How many tools does the PDF Viewer MCP server actually have?

Four, verified on the wire on 2026-08-18. Anthropic's directory listing names only one of them, display_pdf, so the listing is an incomplete subset rather than a stale snapshot. The three the directory omits are list_pdfs, read_pdf_bytes and save_pdf. Two of those three are marked in the server's own metadata as intended for the widget rather than the model.

Which PDF URLs will the PDF Viewer connector open?

Any HTTPS URL, plus local files the server was explicitly granted at startup. The README lists academic domains such as arxiv.org and zenodo.org under Allowed Sources, but we searched the server source on 2026-08-18 and found no host check at all. Validation tests the protocol only and rejects anything that is not HTTPS. Arxiv appears in the code solely to rewrite abstract links into PDF links.

Do the PDF Viewer tools carry safety annotations?

No. All four tools ship with no annotations block at all, verified live on 2026-08-18. There is no readOnlyHint on the reading tools and no destructiveHint on save_pdf, which takes a URL and base64 bytes and writes a file. Absent annotations mean unknown, not safe, so a client cannot infer from the wire data which of these four calls writes to disk.

Where does the PDF Viewer save_pdf tool write files?

To local paths the server was explicitly given, and nowhere else. A file is writable only if it was named on the command line, or sits strictly under a granted directory. A path the MCP client sent as a file root is always read-only, and a directory named uploads stays read-only unless a flag is passed, because that is where Claude Desktop mounts attachments. With no roots and no arguments, nothing is writable.

Does the PDF Viewer connector offer prompts or resources?

Resources yes, prompts no. The initialize response declares a resources capability and resources/list returns exactly one entry: the MCP Apps widget at ui://pdf-viewer/mcp-app.html with MIME type text/html;profile=mcp-app. The server never declares a prompts capability, so prompts/list answers with JSON-RPC error -32601, method not found. That is capability absent, not a declared-but-empty listing.

Can I use the PDF Viewer MCP server outside Claude?

You can connect it anywhere, but only Claude is listed as a supported client and only MCP Apps clients render the viewer. Anthropic's directory entry records claude alone under works with. In a client without the MCP Apps extension the display_pdf call still returns structured output, but no interactive viewer appears and the page navigation and search controls are unreachable.

Sources

  • PDF Viewer server source — server.ts and main.ts, https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/pdf-server (read 2026-08-18) · retrieved 2026-08-18
  • PDF Viewer README — https://github.com/modelcontextprotocol/ext-apps/blob/main/examples/pdf-server/README.md (retrieved 2026-08-18) — source of the Allowed Sources list, the tool table including interact, and the deployment notes on why interact is not registered in stateless HTTP mode · retrieved 2026-08-18
  • Live tools/list, initialize, resources/list and prompts/list handshake against https://example-server.modelcontextprotocol.io/pdf/mcp — 2026-08-18 · retrieved 2026-08-18
  • Anthropic connector directory entry — https://claude.ai/directory/a6f1af7d-e85f-4775-bbfb-da7a8eb990db (directory snapshot, 2026-08-18) · retrieved 2026-08-18
  • Anthropic connector directory documentation, on what verification means — https://claude.com/docs/connectors/directory (retrieved 2026-08-18) · retrieved 2026-08-18
  • Privacy policy — https://lfprojects.org/policies/privacy-policy/
  • Support — https://github.com/modelcontextprotocol/ext-apps/issues

Use in Agentman

Connect once and your agents call these tools on their own — on a schedule, in a workflow, with nobody at the keyboard.

Open in Agentman Studio

Server Info

Category
Productivity
Developer
PDF Viewer
Tools
4
Domain
example-server.modelcontextprotocol.io

Using Claude Desktop or another MCP client? Setup docs — the connection URL above works anywhere.