Pre-1.0: the API is not stable yet and may change from version to version. Pin the exact version in your Cargo.toml and check the changelog before upgrading.

MCP server

oxframe has two MCP servers. oxframe mcp runs on your machine and lets an agent check, inspect and render the video it is writing. https://mcp.oxframe.dev/mcp is hosted, needs no install and serves the documentation to agents that cannot run commands.

Local: oxframe mcpHosted: mcp.oxframe.dev
TransportstdioStreamable HTTP, https://mcp.oxframe.dev/mcp
InstallThe oxframe CLI, Rust, ffmpegNothing
Sign-inNoneNone
ToolsCheck, storyboard, frames, inspector, render, docsDocs search, pages, components, examples
Good forClaude Code, Codex, Cursor, VS Code: agents that edit filesChatGPT, Claude.ai, web IDEs: agents that only read
MCP Registryio.github.oxygenframe/oxframe—

The local server, from scratch

1. Install the oxframe command (Linux and macOS; Windows and other ways are in Install and first project):

curl -fsSL https://github.com/oxygenframe/oxframe-cli/releases/latest/download/install.sh | sh
# or: brew install oxygenframe/tap/oxframe
# or: cargo install oxframe-cli
oxframe doctor   # Rust, ffmpeg and a C linker in place?

2. Create a project. The server works on the project in the directory it starts in.

oxframe init my-video && cd my-video

3. Add the server to your client, from inside that directory.

Claude Code

claude mcp add oxframe -- oxframe mcp
# or, shared with everyone who clones the project (writes .mcp.json):
claude mcp add --scope project oxframe -- oxframe mcp

The oxframe plugin adds the same server together with the skills: /plugin marketplace add oxygenframe/oxframe-sdk, then /plugin install oxframe@oxframe.

Codex

codex mcp add oxframe -- oxframe mcp

Or in ~/.codex/config.toml:

[mcp_servers.oxframe]
command = "oxframe"
args = ["mcp"]

Cursor

.cursor/mcp.json in the project, then open the project folder in Cursor:

{
  "mcpServers": {
    "oxframe": { "command": "oxframe", "args": ["mcp"] }
  }
}

VS Code (GitHub Copilot)

.vscode/mcp.json in the project:

{
  "servers": {
    "oxframe": { "type": "stdio", "command": "oxframe", "args": ["mcp"] }
  }
}

Any other client

The command is oxframe with the argument mcp, started in the project directory. Messages are newline-delimited JSON-RPC on stdin and stdout; a Content-Length frame is accepted too. Logs go to stderr.

Tools of the local server

checkCompiles the project and runs the visual check. Returns report.json (each issue with a rule, a time range, the node and file:line), the storyboard path and hints for common compile errors. frames also writes every sampled frame; against compares with an earlier check and writes diff images.
storyboardThe same check, answered with the storyboard path and a short summary.
render_frameOne frame as a PNG: at in seconds, optional scene and size (default 960×540).
inspectThe scene tree at one time: kind, name, bounds, text and file:line of each node.
render_graphThe render passes at one time, in order, with the shader of each effect pass.
list_componentsThe explainer components (TitleCard, BulletList, CodeExplainer, FlowDiagram and the rest) with a one-line example each.
docs_searchSearches the docs of the CLI's own version.
renderBuilds in release mode and renders the video: scene, aspect (16:9, 9:16, 1:1 or all), format, size, cpu/gpu.

Everything runs on your machine; the local server sends nothing anywhere. A typical turn: the agent edits src/main.rs, calls check, opens the storyboard and the close-ups of each issue, fixes them and checks again until the report is clean, then calls render. Check rules lists what the check looks for.

The hosted docs server

https://mcp.oxframe.dev/mcp speaks Streamable HTTP, needs no sign-in and only reads. It follows the current docs on every site deploy.

docs_searchSearches the current docs and returns the best sections with their page URLs.
get_pageThe whole text of one docs page as Markdown, by URL or path.
list_componentsThe explainer components and a one-line example of each.
get_exampleThe Rust source of an example from the gallery, by name.
# Claude Code
claude mcp add --transport http oxframe-docs https://mcp.oxframe.dev/mcp
# Codex
codex mcp add oxframe-docs --url https://mcp.oxframe.dev/mcp
# Cursor, .cursor/mcp.json
{ "mcpServers": { "oxframe-docs": { "url": "https://mcp.oxframe.dev/mcp" } } }
# VS Code, .vscode/mcp.json
{ "servers": { "oxframe-docs": { "type": "http", "url": "https://mcp.oxframe.dev/mcp" } } }

In ChatGPT and Claude.ai, add it as a custom connector with the URL https://mcp.oxframe.dev/mcp and no authentication. It keeps nothing about you or your project; requests are logged by Cloudflare like any other (Privacy).

Try it by hand

Both servers answer a plain request, which is handy to see that a setup works:

# local, in a project directory
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' \
  '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | oxframe mcp

# hosted
curl -s https://mcp.oxframe.dev/mcp -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

When a tool fails

  • "no Cargo.toml here or above": the client started the server outside the project. Open the project folder in the editor, or start the client from it.
  • The client cannot find oxframe: GUI apps may not see your shell's PATH. Use the full path from which oxframe as the command.
  • A compile error: check returns the compiler text and hints; the agent fixes the code and calls it again. More in Troubleshooting.

How the instructions in each project and the skills fit with the server: Working with AI agents.

Edit this page on GitHub