Skip to main content

Local stdio MCP server over the Frame.io v4 API (Adobe)

Project description

frameio-mcp

A local stdio MCP server over the Frame.io v4 API, built with FastMCP on top of the official frameio Python SDK. It lets an MCP client (Claude Desktop, Claude Code, etc.) browse workspaces/projects/folders, upload footage, leave timestamped review comments, and create share links.

Most people don't need this README. To use it in Claude Code, install the plugin from the marketplace (see the repo root README) and run the frameio-setup skill. This document covers running the server standalone (without the plugin) for development, and the full tool list. Dev uv commands below assume you're in this directory (plugins/frameio-mcp/).

How auth works

Frame.io uses Adobe IMS OAuth. This server uses an OAuth Single-Page App (SPA) credential — a public client (no secret) with PKCE — and stores the resulting tokens in ~/.frameio-mcp/tokens.json (mode 0600). Access tokens auto-refresh via the refresh token granted by the offline_access scope, so you log in rarely.

One-time setup in the Adobe Developer Console

  1. In your Frame.io project, add an OAuth Single Page App credential.
  2. Scopes: openid, profile, email, offline_access, additional_info.roles.
  3. Redirect URI: https://localhost:8723/callback (must match exactly).
  4. Copy the credential's Client ID.

Install & log in

uv sync                                  # install deps
uv run frameio-mcp login --client-id <YOUR_SPA_CLIENT_ID>

A browser opens for Adobe sign-in. Because Adobe requires HTTPS even on localhost, the temporary callback server uses a self-signed cert — your browser will warn "connection is not private." Click Advanced → Proceed to localhost. That's expected and only happens at login.

Check state anytime:

uv run frameio-mcp status
uv run frameio-mcp logout   # remove tokens

Run the server

uv run frameio-mcp serve     # stdio MCP server

Claude Desktop / Claude Code config

Add to your MCP client config (e.g. Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "frame.io": {
      "command": "uv",
      "args": ["run", "--directory", "/absolute/path/to/frameio-mcp/plugins/frameio-mcp", "frameio-mcp", "serve"]
    }
  }
}

The Client ID is read from ~/.frameio-mcp/config.json (saved by login) or the FRAMEIO_CLIENT_ID env var, so the server needs no extra arguments.

Tools

Hierarchy: account → workspace → project → folder → files. account_id is optional when you have a single account (it's resolved automatically).

74 tools covering essentially the full SDK surface, by area:

Area Tools
Identity whoami
Accounts / workspaces list_accounts, list_workspaces, show_workspace, create_workspace, update_workspace, delete_workspace
Projects list_projects, show_project, create_project, update_project, delete_project
Folders list_folder, list_project_contents, show_folder, create_folder, rename_folder, move_folder, copy_folder, delete_folder
Files list_files, show_file, get_file_status, rename_file, move_file, copy_file, delete_file
Transfer upload_file, remote_upload, import_file, download_file
Version stacks list_version_stacks, show_version_stack, list_versions, create_version_stack, move_version_stack, copy_version_stack
Comments list_comments, show_comment, create_comment (timecode/frame), update_comment (edit/resolve), delete_comment, add_comment_attachment, delete_comment_attachment
Shares list_shares, show_share, create_share, update_share, delete_share, add_share_asset, remove_share_asset, list_share_reviewers, add_share_reviewers, remove_share_reviewers
Metadata list_metadata_fields, create_metadata_field, update_metadata_field, delete_metadata_field, get_file_metadata, set_file_metadata
Discovery search (lexical or nlp)
Webhooks list_webhooks, show_webhook, create_webhook, update_webhook, delete_webhook
Permissions list_account_users, list_workspace_users, set_workspace_user_role, remove_workspace_user, list_project_users, set_project_user_role, remove_project_user
Audit list_audit_logs

Tools are organized into tools_core, tools_assets, tools_review, tools_metadata, tools_search, and tools_admin modules, all registered on one server.

Notes

  • Uploads use Frame.io's chunked presigned-URL flow; large videos are split automatically. After upload, Frame.io may still be transcoding — poll get_file_status for processed renditions.
  • Downloads default to the original rendition; pass rendition for high_quality, efficient, thumbnail, etc.
  • Custom metadata has two layers: account-level field definitions (create_metadata_field, polymorphic — text/number/select/date/rating/etc.) and per-file values (set_file_metadata, bulk across many files). For select/select_multi, the value is a list of the option UUIDs (from list_metadata_fields), not the display names.
  • Version stacks group revisions of a clip (v1, v2, …) via create_version_stack from existing file IDs.
  • Deletes (delete_file, delete_folder, delete_project, etc.) are permanent.
  • list_audit_logs depends on the account plan — Frame.io may return a server error if audit logging isn't enabled for the account.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

frameio_mcp-0.1.0.tar.gz (78.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

frameio_mcp-0.1.0-py3-none-any.whl (29.7 kB view details)

Uploaded Python 3

File details

Details for the file frameio_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: frameio_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 78.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.8

File hashes

Hashes for frameio_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6f92599a6cedfe1ab2ee6ae4af134eee319b57442891629dbce29ea0c2175f5e
MD5 10a9c35d4845f10aea008f6203e113da
BLAKE2b-256 71d85a0d33daef54ccf7fee989bdc4d6d58fd32d856232037dbaafde761bc116

See more details on using hashes here.

File details

Details for the file frameio_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for frameio_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7721c1220e1182458f3e36cfdf8424b429179684d201baf5d3e0e10973b29c52
MD5 da77cc3f6e4fd5fa0c77c02e6eca3420
BLAKE2b-256 e4b875eb267a3ee9a392adea15a18120e8afcd18d265f4bd96ada30526c01e88

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page