Connect to the OPF MCP server
The OPF MCP server teaches an agent the format and checks its decks. Use the hosted endpoint, or run the same server locally.
The hosted server
https://openpresentation.org/mcp is the @openpresentation/mcp server (0.28.0) over Streamable HTTP. It is read-only and stateless: no account, no key, no session, and nothing you send is stored. It serves the documentation, the schemas, the default catalog, the example decks and the agent skills as resources, and checks and converts decks with its tools. Requests are limited to 60 a minute per IP address; run it locally for more.
/.well-known/mcp.json describes it (name, version, transport, endpoint and tools), and /mcp in a browser shows a short description.
Claude Code
claude mcp add --transport http opf https://openpresentation.org/mcpThen ask, for example, “Use the opf tools to write a five-slide board update and validate it.”
Cursor
Add the server to .cursor/mcp.json in the project, or to ~/.cursor/mcp.json for every project:
{
"mcpServers": {
"opf": {
"url": "https://openpresentation.org/mcp"
}
}
}claude.ai and Claude Desktop
Open Settings, then Connectors, choose Add custom connector, name it OPF and enter https://openpresentation.org/mcp as the URL. Leave the OAuth fields empty: the server needs no authentication.
Other clients
Any client that speaks Streamable HTTP connects to the URL. A client that reads an mcpServers file takes:
{
"mcpServers": {
"opf": {
"type": "http",
"url": "https://openpresentation.org/mcp"
}
}
}The endpoint answers plain JSON-RPC POSTs too, so a script can call a tool directly:
curl -s https://openpresentation.org/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"validate_deck","arguments":{"document":{"slides":[{"layout":"cover","title":"Hello"}]}}}}'Run it locally
The same server runs on your machine over stdio, with no rate limit and no network. With @openpresentation/opf-render installed beside it, validate_deck measures text with the real fonts instead of estimating it. It needs Node 22 or later.
npx -y @openpresentation/mcp # any MCP client: command npx, args -y @openpresentation/mcp
claude mcp add opf -- npx -y @openpresentation/mcp # Claude Code
opf mcp # the same server through the CLI, when @openpresentation/mcp is installed{
"mcpServers": {
"opf": {
"command": "npx",
"args": [
"-y",
"@openpresentation/mcp"
]
}
}
}Tools
Every tool is read-only. The resources (opf://docs/format-card, opf://schema/presentation#Chart, opf://catalog/layouts/two-column, ...) and prompts are listed in the MCP server reference.
| Tool | What it does |
|---|---|
start_here | Start here: a guided path into OPF |
validate_deck | Validate an OPF deck |
get_schema | Get an OPF JSON Schema |
search_catalog | Search the default catalog |
get_catalog_record | Get a catalog record |
convert | Convert a deck between JSON, YAML and Markdown |
search_docs | Search the OPF documentation |
list_examples | List the example decks |
Validation checks a deck; it does not render it. Rendering and PowerPoint export need the local CLI or the packages.