By PresentFast Team · Last updated 2026-05-21

Clients · Codex

Codex

OpenAI's terminal coding agent reads MCP servers from ~/.codex/config.toml. PresentFast slots in with a stdio launch line.

Status
Stable
Transport
stdio
Config
TOML
Auth
Device flow
01

How do I install the PresentFast MCP server?

bash
npm install -g @presentfast/mcp-server
02

How do I add it to ~/.codex/config.toml?

Codex uses TOML rather than JSON. Append the following section (or create the file if it doesn't exist):

toml
[mcp_servers.presentfast]
command = "presentfast-mcp"

[mcp_servers.presentfast.env]
PF_API_URL = "https://presentfast.com"

Start (or restart) Codex. Inside the session, run /mcp to confirm presentfast is listed as connected.

03

How do I publish my first deck from Codex?

From within Codex:

Try this prompt
Use PresentFast to sign me in and then publish ./slides.md.

The first call triggers the device-flow login. After browser-side consent completes, Codex's next tool call mints tokens and stores them under ~/.config/presentfast/credentials.json.

Heads up
Codex may pass file_path as a relative path. The MCP server requires absolute paths so it can read the file reliably — ask Codex to "expand to an absolute path" if uploads fail with ENOENT.
04

Slide-break conventions

PresentFast splits one Markdown file into multiple slides using any of three conventions. They can be mixed in the same document.

1. Horizontal rule

A line containing only --- marks a slide boundary. This is the default and matches most slide tools (e.g. Marp, reveal.md).

md
# Slide 1

Some content.

---

# Slide 2

More content.

2. Page-break comment

An HTML comment <!-- pagebreak --> on its own line is also a slide boundary. Useful when --- would conflict with frontmatter or inline horizontal rules. Always on, no query param needed.

md
# Cover

```text
visible ---
inside fenced code is ignored
```

<!-- pagebreak -->

# Next slide

3. H2 per slide (opt-in)

Pass ?theme=h2-slides on the upload URL (the AI tool does this for you when it detects an H2-heavy document) and every ## heading starts a new slide. Useful when you have an outline-style doc you didn't author for slides.

Note
All three conventions are code-fence aware: a ---, <!-- pagebreak -->, or ## inside a fenced code block is left intact.
05

Pinning a specific version

Use npx -y @presentfast/mcp-server@<version> in your client config to pin a specific release of @presentfast/mcp-server. This avoids surprise behavior changes after future releases.

json
{
  "command": "npx",
  "args": ["-y", "@presentfast/mcp-server@1.0.0"]
}

Without a version, npx uses the latest published. To audit what's currently installed globally, run npm ls -g @presentfast/mcp-server.