PDF Viewer
by PDF Viewer
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/mcpWorks in any MCP-compatible client. In Agentman Studio it is one click — no config file to edit.
PDF Viewer Tools & Capabilities (4)
List available PDFs that can be displayed
Read a range of bytes from a PDF (max 512KB per request). The model should NOT call this tool directly.
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 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
readOnlyHinthave nothing to read. - The directory listing understates the surface. One tool named against four served.
- Two directory entries share this name. The local
claude-desktopextension is a different deployment with nine listed tools; do not read its capabilities onto this endpoint. - Claude only. Anthropic's entry records
claudeas 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_bytescaps at 512 KB per call, per the schema maximum of 524288 onbyteCount. Larger documents need paging viaoffsetandhasMore.- On the hosted endpoint, the local-file tools have nothing to work on.
list_pdfsandsave_pdfoperate on directories supplied at startup, and a public deployment supplies none. taskSupportisforbiddenon 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.
interactis 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.tsandmain.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 whyinteractis not registered in stateless HTTP mode · retrieved 2026-08-18 - Live
tools/list,initialize,resources/listandprompts/listhandshake againsthttps://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 StudioServer 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.