creativai-mcp
MCP (Model Context Protocol) server for the CreativAI Video Intelligence Platform.
Connect any MCP-compatible AI assistant (Claude, Cursor, VS Code Copilot, etc.) directly to your CreativAI video library — search, index, extract knowledge, manage collections, run live streams, import from YouTube, and more — all through natural language.
Installation
pip install creativai-mcp
Quick Start
export CREATIVAI_API_KEY=YOUR_API_KEY
creativai-mcp
Or put api_key=YOUR_API_KEY in ~/.creativai/config. Don't pass the key as
--api-key: other users of the same machine can read command-line arguments
from the process list, so that flag is deprecated.
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"creativai": {
"command": "creativai-mcp",
"env": { "CREATIVAI_API_KEY": "YOUR_API_KEY" }
}
}
}
VS Code / GitHub Copilot
Add to your VS Code settings.json:
{
"mcp": {
"servers": {
"creativai": {
"type": "stdio",
"command": "creativai-mcp",
"env": { "CREATIVAI_API_KEY": "YOUR_API_KEY" }
}
}
}
}
Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"creativai": {
"command": "creativai-mcp",
"env": { "CREATIVAI_API_KEY": "YOUR_API_KEY" }
}
}
}
Hosted by CreativAI (no install)
Web agents — claude.ai custom connectors, Replit Agent, the Claude API's MCP
connector — and any client that speaks MCP over streamable HTTP can use the
server CreativAI runs, at https://ws.creativai-apis.com/api/v2/mcp. Send your
own API key on every request as X-API-Key: YOUR_API_KEY (or
Authorization: Bearer YOUR_API_KEY). The hosted server follows the
hosting rules below: no delete_* tools and no blocking helpers.
Available Tools
Collections
| Tool | Description |
|---|---|
list_collections |
List all video collections in your account |
create_collection |
Create a new video collection (video_only or multimodal) |
get_collection |
Get full details for a single collection |
update_collection |
Rename a collection |
delete_collection |
⚠️ Permanently delete a collection and all its data |
Media
| Tool | Description |
|---|---|
list_media |
List all media files in a collection with preprocessing status |
get_upload_url |
Get a presigned S3 upload URL for a single file |
get_upload_urls |
Get presigned S3 upload URLs for multiple files at once |
upload_from_url |
Import a video from an external URL or S3 URI (async) |
get_transfer_status |
Poll the status of a URL-to-collection transfer job |
delete_media |
⚠️ Permanently remove specific media files from a collection |
Search
| Tool | Description |
|---|---|
search_collection |
Semantic search over an indexed collection — vision, audio, or hybrid |
Indexing
| Tool | Description |
|---|---|
start_indexing |
Start an async indexing job to make a collection searchable |
get_indexing_status |
Poll the status of a running indexing job |
estimate_indexing_cost |
Estimate credit cost before starting indexing |
cancel_indexing |
Cancel a running indexing job |
index_and_wait |
Start indexing and block until completion (convenience tool) |
Agentic Chat
| Tool | Description |
|---|---|
ask_collection |
Ask a natural-language question about a collection — one-shot |
create_chat_session |
Create a multi-turn chat session for a collection |
send_chat_message |
Send a follow-up message to an existing chat session |
get_chat_history |
Get the full message history of a chat session |
list_chat_sessions |
List chat sessions, optionally filtered by collection |
delete_chat_session |
Delete a chat session |
Data Plates
| Tool | Description |
|---|---|
list_data_plates |
List all data plates in a collection |
get_data_plate |
Get a data plate with its paginated segments |
create_data_plate_from_collection |
Create a data plate from all indexed segments (async) |
get_data_plate_job |
Poll the status of a data plate creation job |
delete_data_plate |
⚠️ Permanently delete a data plate and its extracted data |
Knowledge Extraction
| Tool | Description |
|---|---|
query_knowledge_plate |
Ask a natural-language question against a knowledge plate |
add_extraction_columns |
Add AI extraction questions as columns to a knowledge plate |
list_extraction_columns |
List all extracted columns in a knowledge plate |
get_knowledge_extraction_job |
Poll the status of a knowledge extraction job |
get_plate_charts |
Get auto-generated charts and visualizations for a plate |
Live Stream
| Tool | Description |
|---|---|
create_live_stream_session |
Create a live stream session for real-time video analysis |
list_live_stream_sessions |
List live stream sessions, optionally filtered by collection |
get_live_stream_session |
Get full details for a live stream session |
stop_live_stream_session |
Stop an active live stream session |
add_live_stream_questions |
Add real-time analysis questions to a running session |
get_live_stream_status |
Check if a live stream session is ready (workers + MediaMTX) |
Online Search (Web Video Import)
| Tool | Description |
|---|---|
start_online_search |
Start a web search job to find publicly available videos |
get_online_search_status |
Poll the status of an online search job |
list_online_search_candidates |
List candidate videos found by an online search |
confirm_online_search |
Confirm all candidates and start importing + indexing |
search_and_import |
Blocking convenience tool: search web and return candidates |
YouTube
| Tool | Description |
|---|---|
start_youtube_search |
Start a YouTube search — refines query into optimized search terms |
get_youtube_search_status |
Poll the status of a YouTube search job |
list_youtube_candidates |
List candidate YouTube videos found for a search job |
confirm_youtube_search |
Confirm all YouTube candidates and trigger import + indexing |
confirm_selected_youtube_videos |
Confirm only specific YouTube videos for import |
index_youtube_links |
Index YouTube links you already have — no search, no review step |
Organizations & Projects
| Tool | Description |
|---|---|
list_organizations |
List all organizations you are a member of |
get_organization |
Get details for a specific organization |
list_projects |
List all projects in an organization |
get_project |
Get a project and its collections |
Tasks
| Tool | Description |
|---|---|
list_tasks |
List annotation/review tasks in a collection |
get_task |
Get detailed information about a specific task |
my_tasks |
List all tasks assigned to you across all collections |
update_task_status |
Update the status of a task |
add_task_comment |
Add a comment to a task |
Account & Users
| Tool | Description |
|---|---|
get_account_info |
Get your account info (credits, plan, uploaded hours) |
get_credits |
Get your current credit balance and usage stats |
get_current_user |
Get the current authenticated user's ID and email |
Transports
stdio (default — for desktop AI clients). The server uses one key, from
CREATIVAI_API_KEY or ~/.creativai/config (or the deprecated --api-key):
CREATIVAI_API_KEY=YOUR_API_KEY creativai-mcp --transport stdio
Streamable HTTP (for hosting — claude.ai custom connectors, Replit Agent, the Claude API MCP connector, other web agents):
creativai-mcp --transport streamable-http --host 0.0.0.0 --port 8090
The MCP endpoint is http://<host>:8090/mcp. SSE (--transport sse, endpoint
/sse) is also available for older clients and follows the same rules.
Hosting rules
- Every request brings its caller's own key, as
X-API-Key: <key>orAuthorization: Bearer <key>, and runs against that caller's account. Requests without a key get401. The server never uses a key of its own:--api-keyandCREATIVAI_API_KEYare ignored on the HTTP transports. - Not available when hosted:
delete_collection,delete_media,delete_data_plate,delete_chat_session(irreversible — delete from the website) and the blocking helpersindex_and_waitandsearch_and_import(they can hold a request for minutes). Agents pollstart_indexing→get_indexing_statusandstart_online_search→get_online_search_status→list_online_search_candidatesinstead. - Stateless: run as many replicas as you like behind a load balancer; no sticky sessions needed.
- Bind to
0.0.0.0(or the pod IP). On127.0.0.1the server accepts onlyHost: localhostrequests (DNS-rebinding protection), which breaks behind a reverse proxy. - Serve it over HTTPS at a public URL, terminating TLS at the load balancer. Web agents connect from their own cloud, not from the user's machine.
GET /healthzreturns200 okwithout a key, for load-balancer health checks.- Point it at a non-production API with
--base-urlorCREATIVAI_BASE_URL.
Requirements
- Python 3.10+
- A CreativAI API key — get one at creativ-ai.com
License
Proprietary — © CreativAI
Metadata
Release files for creativai-mcp 0.2.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| creativai_mcp-0.2.5.tar.gz | 32.2 kB | Without provenance | Details for creativai_mcp-0.2.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| creativai_mcp-0.2.5-py3-none-any.whl | Python 3 | none | any | Details for creativai_mcp-0.2.5-py3-none-any.whl |
Total release size: 63.7 kB
Release files / creativai_mcp-0.2.5.tar.gz
| Download URL | creativai_mcp-0.2.5.tar.gz |
|---|---|
| Size | 32.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d70f45a7e017aea3d299ce35ef8908a7ecfca5dab50edda4a5f4080e8875bd9b
|
|
BLAKE2b-256 checksum How to use checksums |
e0bc72a03f82ff4dae25a91cf2f01360f79624dc389c6afaa621a29281912d3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / creativai_mcp-0.2.5-py3-none-any.whl
| Download URL | creativai_mcp-0.2.5-py3-none-any.whl |
|---|---|
| Size | 31.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
23c19279ee7d1b0ca5602cf3bdc9fa97671a4aa2c81f9ae2bc18aeb600fe64ba
|
|
BLAKE2b-256 checksum How to use checksums |
d851c9591cf5c2161de38c1c46c55040903d75c6c0ca12922303782a33344ba3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for creativai-mcp 0.2.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.