protoface-mcp
MCP server for Protoface media generation: discover models, submit async generation runs, and collect outputs — from Codex, Claude Code, Cursor, or any MCP client. 17 tools over the Protoface API; realtime sessions/avatars and website embeds are intentionally out of scope.
Install
Requires uv and a Protoface API key (create one).
Codex — add to ~/.codex/config.toml:
[mcp_servers.protoface]
command = "uvx"
args = ["protoface-mcp"]
env_vars = ["PROTOFACE_API_KEY"]
with PROTOFACE_API_KEY=sk_live_... exported in your shell.
Claude Code — add to .mcp.json (project) or
~/.claude.json (personal):
{
"mcpServers": {
"protoface": {
"command": "uvx",
"args": ["protoface-mcp"],
"env": { "PROTOFACE_API_KEY": "sk_live_..." }
}
}
}
Then ask your agent to generate something:
Using Protoface, generate a 5-second video of a lighthouse at dusk.
The companion skill (skills/protoface-media/SKILL.md in this repo,
published to the docs site) teaches agents the workflow: read the model's
input schema first, check quota, submit, poll, collect outputs.
Tools
| Group | Tools |
|---|---|
| Runs | submit_run, get_run_status, get_run, cancel_run, list_runs, list_run_events |
| Models | list_models, get_model (input contracts live here) |
| Assets | upload_asset, list_assets, get_asset, download_asset, delete_asset |
| Spend & health | get_usage_summary, list_billing_plans, get_quota_limits, get_status |
Run statuses: queued → running → completed / failed / canceled.
Poll the cheap get_run_status, not get_run. Pass an idempotency_key
to submit_run when retrying so a duplicate never double-spends.
Set PROTOFACE_BASE_URL to point at staging instead of
https://api.protoface.com.
Development
uv run pytest packages/mcp # drift + tool tests
tests/test_tool_coverage.py enforces spec parity: every media-generation
operationId in apispec/openapi.json must have a tool. The wheel bundles
the workspace SDK (protoface/...) so installs have no private
dependencies — the protoface PyPI name belongs to an unrelated package,
so it must never appear in dependencies.
Release: push a protoface-mcp-vX.Y.Z tag matching
packages/mcp/pyproject.toml (see .github/workflows/publish-mcp.yml).
Release files for protoface-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| protoface_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / protoface_mcp-0.1.0-py3-none-any.whl
| Download URL | protoface_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 29.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7621327dc7f9297b442f003c7832e957b39f0406fefc5af51d8f08bf7ec7e5a8
|
|
BLAKE2b-256 checksum How to use checksums |
76a143bd8a96c61a2a87214b674dae50aa55bd5343f7cc2a1cc21b74b805735c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|