Search documentation
Search documentation pages and implementation topics.
Summary
The VideoVector MCP docs show how AI clients can browse indexes, run extraction engines, search media evidence, inspect workflow resources, and validate available tools.
Published package and environment names
Use these package and environment identifiers when configuring MCP clients:
- package:
@vectormethods/videovector-mcp-server - command:
videovector-mcp - server name:
videovector - environment variables:
VIDEOVECTOR_*
Transport choices
- Use
stdiofor local desktop clients such as Claude Desktop and Cursor. - Use
httpwhen the MCP server must run as a network-addressable service.
Pages in this section
- Claude Desktop setup
- Cursor setup
- Custom and HTTP transport setup
- Tools, helper endpoints, and playground
Public helper endpoints
The API also exposes MCP helper routes:
GET /api/v2/mcp/statusGET /api/v2/mcp/configGET /api/v2/mcp/toolsPOST /api/v2/mcp/playground
Use them to inspect capabilities, generate config, and validate tools before deploying the MCP server to users.
MCP / claude-desktop
Claude Desktop setup
Configure the VideoVector MCP server for Claude Desktop using the published package and environment names.
Install or run with npx
Claude Desktop can launch the server with npx, so a global install is optional.
{
"mcpServers": {
"videovector": {
"command": "npx",
"args": ["@vectormethods/videovector-mcp-server"],
"env": {
"VIDEOVECTOR_API_KEY": "sk_live_..."
}
}
}
}
Config path
The helper controller returns this default config path for macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
The setup instructions embedded in the controller also document the Windows equivalent.
Verification
After saving the config and restarting Claude Desktop, verify the connection by asking Claude which VideoVector tools are available.
Generated config endpoint
Use the helper endpoint when you want a platform-specific config payload:
curl "/api/v2/mcp/config?platform=claude-desktop" \
-H "Authorization: Bearer <verified-jwt>"
If you omit api_key_id, the server will reuse a suitable key or create a new one with read and search scopes.
MCP / cursor
Cursor setup
Configure the VideoVector MCP server for Cursor using the published package and environment names.
Cursor configuration
{
"mcpServers": {
"videovector": {
"command": "npx",
"args": ["@vectormethods/videovector-mcp-server"],
"env": {
"VIDEOVECTOR_API_KEY": "sk_live_..."
}
}
}
}
Config path
The helper endpoint returns:
~/.cursor/mcp.json
Verification flow
- Save or merge the config.
- Restart Cursor.
- Open the MCP panel and verify that the
videovectorserver is connected.
Generated config endpoint
curl "/api/v2/mcp/config?platform=cursor" \
-H "Authorization: Bearer <verified-jwt>"
Use api_key_id=<key_id> when you want to pin the config to an existing API key instead of letting the helper choose or create one.
MCP / custom-http
Custom clients and HTTP transport
Configure custom MCP clients for VideoVector and deploy the MCP server in stdio or HTTP mode with the published environment variables.
Custom stdio configuration
The generic helper response uses this shape:
{
"server": {
"name": "videovector",
"command": "npx",
"args": ["@vectormethods/videovector-mcp-server"],
"env": {
"VIDEOVECTOR_API_KEY": "sk_live_..."
}
}
}
Stdio mode
stdio is the default transport mode.
npm install -g @vectormethods/videovector-mcp-server
VIDEOVECTOR_API_KEY=sk_live_... videovector-mcp
Environment variables:
VIDEOVECTOR_API_KEYVIDEOVECTOR_BASE_URLVIDEOVECTOR_TIMEOUTVIDEOVECTOR_MAX_RETRIES
HTTP mode
Set MCP_TRANSPORT_MODE=http to expose the server over Streamable HTTP transport.
MCP_TRANSPORT_MODE=http \
VIDEOVECTOR_BASE_URL=https://api.vectormethods.com/api/v2 \
node dist/index.js
HTTP mode adds:
PORTMCP_HTTP_HOSTMCP_HTTP_ALLOWED_HOSTSMCP_HTTP_ALLOWED_ORIGINSMCP_HTTP_ENABLE_JSON_RESPONSEMCP_OAUTH_ENABLED(defaultfalse)MCP_OAUTH_METADATA_ENABLED(defaultfalse)MCP_OAUTH_ISSUERMCP_OAUTH_JWKS_URLMCP_OAUTH_RESOURCEMCP_OAUTH_CLOCK_SKEW_SECONDS(default60)
The Streamable HTTP transport is stateless. Every POST /mcp creates one
request-scoped server and transport, returns no MCP session ID, and closes the
context after the response or client abort.
HTTP endpoints
The server exposes:
GET /healthPOST /mcpGET /mcpDELETE /mcp
Per-request auth uses exactly one credential:
Authorization: Bearer sk_*X-API-Key: sk_*Authorization: Bearer <OAuth access token>when hosted OAuth is enabled
Combining X-API-Key and Authorization is rejected. API keys retain their
configured product scopes. A valid hosted WorkOS OAuth grant instead represents
the signed-in Firebase account with full tenant-level access, including
tenant-admin operations; it does not grant platform-admin, Firebase-only,
API-key-management, or internal-service access.
Hosted tool security schemes intentionally advertise an empty OAuth scope array because custom API-key scopes do not apply to account OAuth. Access tokens are verified locally against the pinned issuer, resource audience, and JWKS, then the same bearer token is forwarded to the API. The MCP service does not call UserInfo or per-request introspection.
Deploy token verification with MCP_OAUTH_ENABLED=true first. Keep
MCP_OAUTH_METADATA_ENABLED=false until the complete linking flow has passed
staging, then enable metadata last. The protected-resource document is served
at /.well-known/oauth-protected-resource/mcp, with
/.well-known/oauth-protected-resource as a compatibility alias. The WorkOS
API key used to complete Firebase account linking is server-only and is never a
Node MCP or browser environment variable.
When to choose HTTP
Use HTTP transport when the MCP server:
- runs remotely instead of inside a desktop client
- needs origin or host allowlists
- needs readiness probes
- must work across multiple stateless service instances
The custom helper endpoint returns the current MCP package base URL default:
https://api.vectormethods.com/api/v2.
MCP / tools-and-playground
Tools, helper endpoints, and playground
Inspect VideoVector MCP tool categories, use helper endpoints for config and tool discovery, and test tool execution through the MCP playground.
Helper endpoints
| Method | Path | Purpose |
|---|---|---|
GET | /api/v2/mcp/status | Inspect package name, install command, tool count, and supported platforms |
GET | /api/v2/mcp/config | Generate platform-specific config |
GET | /api/v2/mcp/tools | Return tool definitions and category groupings |
POST | /api/v2/mcp/playground | Execute a tool directly for testing |
Tool categories
The tool definition file groups public tools into categories such as:
- Search
- Discovery
- Video and segment inspection
- Extraction executions
- Extraction engine management
- Cloud connectors
- Import jobs
- Index management
- Video management
- Exports
- Webhooks
Representative workflows include:
- searching an index with
search_videos,search_videos_by_image, ormultimodal_search - building extraction engines with
create_promptandtest_prompt_schema - executing and monitoring extraction runs with
process_media,get_prompt_run_status, andget_prompt_run_results - operating imports, exports, connectors, and webhooks without leaving the MCP client
Status response
GET /api/v2/mcp/status returns fields such as:
server_nameserver_versionpackage_namenpm_install_commanddocumentation_urltools_countsupported_platforms
Tool discovery response
GET /api/v2/mcp/tools returns:
total_counttoolscategories
Each tool includes a public input schema that mirrors the MCP SDK Tool definition shape.
Playground execution
The playground endpoint accepts:
{
"tool_name": "search_videos",
"arguments": {
"index_id": "idx_archive",
"query": "reporter outside a station entrance",
"top_k": 5
}
}
The response includes:
tool_namesuccessresulterrorexecution_time_ms
The controller also enforces explicit scope rules. Read-only tools require read-level capability, and mutating tools require write.
Structured playground payloads
For several tool families, the controller wraps results in structuredContent plus text content so clients can render both machine-readable and human-readable output cleanly.
Use the playground to validate argument shapes and output structure before you hand the server to an agent or a production client.
Generation, execution, and matches
For fast on-demand testing, invoke the find skill with a goal and up to 100
attached videos. Its find tool handles native attachments, authorized local
stdio paths, or an inline multi-file picker. The skill follows the import job
and Playground execution, then presents Matches and All extracted results.
Each new command uploads again and creates a fresh prompt and execution;
transport retries resume the same invocation. Use the advanced tools below
for deliberate reuse of saved prompts and uploaded media.
Find includes a segment transcription field, keeps advanced transcription and
image embeddings off, and uses content-aware extraction. All supplied videos remain one Playground run. Host command namespaces vary; Claude Code exposes
/videovector:find, while OpenAI hosts show the installed skill in their
command picker. Hosted tools declare OpenAI native file inputs and share an
MCP Apps picker when the host cannot forward a video.
Use define_prompt to turn a goal into extraction schemas. When the goal calls
for finding, filtering, or shortlisting matches, the same generation also adds
an optional selection filter. The saved prompt carries that filter into
process_media; extraction-only requests remain unfiltered.
Video and audio support content_aware (the default) and fixed segmentation.
Save settings through create_prompt or update_prompt under execution_config.
process_media and estimate_prompt_run accept the same settings as top-level
overrides; omitted or null overrides inherit the engine configuration.
Fixed mode requires the corresponding segment duration in seconds from 1 to 300.
Generated instructions express supported intent qualitatively, such as concise social clips or useful context around a target moment. Content-aware video and audio use chronological coverage and 10-second to 15-minute prompt guidance, without enforcing those durations on the model's output.
process_media returns immediately. Poll get_prompt_run_status, then call
get_prompt_run_results with the returned run ID. Results include separate
filtered and unfiltered pages by default, so matches and the underlying
extraction stay available together. Use result_level: "segment" (the default)
or "video", and optionally narrow to video_id.
Each page has its own pagination.next_cursor. Follow it with view: "filtered" and filtered_cursor, or view: "unfiltered" and
unfiltered_cursor. Pages default to 10 rows and allow at most 50. Selection
status distinguishes pending processing, no configured filter, failed
selection, and ready results including zero matches. Result reads do not
repeat generation or processing.
The simple profile includes generation, processing, status, and results. The
former execute_prompt MCP tool has been replaced by process_media. Omitted
execution overrides use the saved engine settings in both indexed media and
Playground. The hosted transport remains stateless Streamable HTTP with
OAuth for OpenAI clients.
