{
  "markdown": "# Reka Vision MCP Server\n\nmcp-name: ai.reka/mcp\n\nMCP server that lets AI agents upload, index, search, and analyze videos through the Reka Vision API. Agents can search across videos using natural language, ask questions about video content with visual analysis, detect objects in specific time ranges with text prompts, and read processed data like transcripts, captions, and scenes.\n\n## Quick Start\n\n```bash\n# Run the published local stdio server with your Reka API key\nREKA_VISION_API_KEY=\"your-api-key\" uvx reka-mcp\n```\n\nFor MCP clients that need explicit command configuration:\n\n```json\n{\n  \"command\": \"uvx\",\n  \"args\": [\"reka-mcp\"],\n  \"env\": {\n    \"REKA_VISION_API_KEY\": \"your-api-key-here\"\n  }\n}\n```\n\nFor local development:\n\n```bash\nuv sync\nuv run pre-commit install\nREKA_VISION_API_KEY=\"test-key\" uv run reka-mcp\n```\n\nThe default mode is local stdio. In local mode, `REKA_VISION_API_KEY` is read once\nfrom the process environment and used for all requests.\n\n## Hosted Mode\n\nHosted mode runs the same MCP tools over Streamable HTTP. It does not use a\nprocess-wide Reka API key. Instead, each MCP HTTP request must include the user's\nkey in `X-Reka-API-Key`; the server forwards that value to the Reka Vision API as\n`x-api-key` for that request only.\n\nProduction-style hosted startup:\n\n```bash\nREKA_MCP_MODE=hosted \\\nREKA_MCP_HTTP_HOST=0.0.0.0 \\\nPORT=8080 \\\nuv run reka-mcp\n```\n\nEndpoints:\n\n- MCP Streamable HTTP: `http://<host>:<port>/mcp`\n- Health check: `http://<host>:<port>/health`\n\nHosted clients must send:\n\n```http\nX-Reka-API-Key: your-api-key\n```\n\n`REKA_MCP_AUTH_TOKEN` is optional MCP transport auth. When set, HTTP clients must\nalso send `Authorization: Bearer <token>`.\n\n`index_video` works the same in both modes: it polls the feature DAG until all\nrequested features are ready (or times out). After `upload_video`, poll\n`get_video` until the video status is `uploaded`, then call `index_video`.\n\n### Run Hosted Mode Locally\n\nHosted mode enables DNS rebinding protection. Its default allowed hosts and\norigins are production/staging domains, so override them for localhost testing:\n\n```bash\nREKA_MCP_MODE=hosted \\\nREKA_MCP_TRANSPORT=http \\\nREKA_MCP_HTTP_HOST=0.0.0.0 \\\nREKA_MCP_HTTP_PORT=8080 \\\nPORT=8080 \\\nREKA_MCP_HTTP_PATH=/mcp \\\nREKA_MCP_ALLOWED_HOSTS=\"localhost:*,127.0.0.1:*\" \\\nREKA_MCP_ALLOWED_ORIGINS=\"http://localhost:*,http://127.0.0.1:*\" \\\nuv run reka-mcp\n```\n\nThen connect to `http://localhost:8080/mcp` and configure your MCP client or\ninspector to send `X-Reka-API-Key`. Check the server with:\n\n```bash\ncurl -H \"Host: localhost:8080\" http://localhost:8080/health\n```\n\n## Connect to Hosted MCP (mcp.reka.ai)\n\nNo installation required — connect directly to the hosted server with your\n[Reka API key](https://platform.reka.ai).\n\n### Claude Desktop\n\nClaude Desktop does not speak Streamable HTTP directly, so use the\n[`mcp-remote`](https://www.npmjs.com/package/mcp-remote) bridge. Add to\n`~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"reka-mcp\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://mcp.reka.ai/mcp\",\n        \"--header\",\n        \"X-Reka-API-Key:${REKA_VISION_API_KEY}\"\n      ],\n      \"env\": {\n        \"REKA_VISION_API_KEY\": \"your-api-key-here\"\n      }\n    }\n  }\n}\n```\n\nRequires Node.js installed locally. Restart Claude Desktop after editing the\nconfig.\n\n### Claude Code\n\n```bash\nclaude mcp add --transport http reka-mcp https://mcp.reka.ai/mcp \\\n  --header \"X-Reka-API-Key: your-api-key-here\"\n```\n\n### Cursor\n\nAdd to `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"reka-mcp\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://mcp.reka.ai/mcp\",\n      \"headers\": {\n        \"X-Reka-API-Key\": \"your-api-key-here\"\n      }\n    }\n  }\n}\n```\n\n## Claude Desktop Setup (Local)\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"reka-mcp\": {\n      \"command\": \"uvx\",\n      \"args\": [\"reka-mcp\"],\n      \"env\": {\n        \"REKA_VISION_API_KEY\": \"your-api-key-here\"\n      }\n    }\n  }\n}\n```\n\n## Cursor Setup (Local)\n\nAdd to `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"reka-mcp\": {\n      \"command\": \"uvx\",\n      \"args\": [\"reka-mcp\"],\n      \"env\": {\n        \"REKA_VISION_API_KEY\": \"your-api-key-here\"\n      }\n    }\n  }\n}\n```\n\n## Claude Code Setup (Local)\n\n```bash\nclaude mcp add reka-mcp -e REKA_VISION_API_KEY=your-api-key-here -- uvx reka-mcp\n```\n\n## Updating\n\nTo update to the latest version, clear the cached package and restart your client:\n\n```bash\nuv cache clean reka-mcp\n```\n\nTo check which version you're running:\n\n```bash\nuvx reka-mcp --version\n```\n\n## Available Tools\n\n| Tool | Description |\n|------|-------------|\n| `upload_video` | Upload a video from a URL |\n| `list_videos` | List videos in your account or a group |\n| `get_video` | Get video details, metadata, and feature status |\n| `update_video` | Update a video's name, title, description, or group |\n| `delete_video` | Permanently delete a video and all indexed data |\n| `create_group` | Create a new video group |\n| `list_groups` | List all video groups |\n| `delete_group` | Delete a video group |\n| `index_video` | Index a video for search/QA/analysis. Waits until all requested features are ready (2-10 min). |\n| `search_videos` | Semantic search across indexed videos |\n| `ask_video` | Ask questions about video content with visual analysis |\n| `get_transcript` | Get transcript as text, segments, or words |\n| `get_captions` | Get AI-generated visual descriptions |\n| `get_scenes` | Get detected scene boundaries |\n| `get_feature_catalog` | List available features and dependencies |\n| `summarize_video` | Compact overview of video content and status |\n\n## Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `REKA_MCP_MODE` | `local` | Runtime mode: `local` or `hosted` |\n| `REKA_VISION_API_KEY` | *(required in local mode)* | API key from https://platform.reka.ai. Not used as the primary auth source in hosted mode. |\n| `REKA_VISION_API_URL` | `https://vision-agent.api.reka.ai` | API base URL |\n| `REKA_MCP_INDEX_TIMEOUT` | `600` | Max seconds to wait for indexing |\n| `REKA_MCP_POLL_INTERVAL` | `5` | Seconds between index status polls |\n| `REKA_MCP_TRANSPORT` | `stdio` in local, `http` in hosted | Transport: `stdio` or `http` |\n| `REKA_MCP_HTTP_HOST` | `127.0.0.1` in local, `0.0.0.0` in hosted | Host for HTTP transport |\n| `REKA_MCP_HTTP_PORT` | `8080` | Port for HTTP transport. In hosted mode, `PORT` takes precedence when set. |\n| `REKA_MCP_HTTP_PATH` | `/mcp` | Streamable HTTP endpoint path |\n| `REKA_MCP_ALLOWED_HOSTS` | `mcp.reka.ai,staging.mcp.reka.ai` in hosted | Comma-separated allowed HTTP Host values for DNS rebinding protection |\n| `REKA_MCP_ALLOWED_ORIGINS` | `https://mcp.reka.ai,https://staging.mcp.reka.ai` in hosted | Comma-separated allowed Origin values |\n| `REKA_MCP_AUTH_TOKEN` | *(none)* | Optional bearer token for HTTP transport auth. Clients must send `Authorization: Bearer <token>` when set. |\n\n## Release Checks\n\n```bash\ncd /path/to/reka-mcp\nuv build\nuv run twine check dist/*\n# Publish only after explicit approval:\nuv run twine upload dist/*\n```\n\n## Example Workflows\n\n### Search and Visual Q&A\n\n```\nAgent: search_videos(query=\"revenue chart\")\n→ [{video_id: \"v1\", start: 30.0, end: 35.0, score: 0.95}]\n\nAgent: ask_video(question=\"What numbers are on the chart?\",\n                 video_id=\"v1\", start=30.0, end=35.0)\n→ {answer: \"Q3 revenue of $4.2M, up 32%...\", conversation_id: \"c1\"}\n\nAgent: ask_video(question=\"What's the percentage change?\",\n                 conversation_id=\"c1\")\n→ {answer: \"Revenue increased by 32% quarter-over-quarter...\"}\n```\n\n### Cross-Video Comparison\n\n```\nAgent: search_videos(query=\"quarterly revenue\")\n→ [{video_id: \"v1\", start: 30.0, ...}, {video_id: \"v2\", start: 120.0, ...}]\n\nAgent: ask_video(question=\"How do the revenue figures compare?\",\n                 videos=[\n                   {video_id: \"v1\", start: 30.0, end: 35.0},\n                   {video_id: \"v2\", start: 120.0, end: 125.0}\n                 ])\n→ {answer: \"Video 1 shows Q3 at $4.2M while Video 2 shows Q4 at $5.1M...\"}\n```\n\n### Video Summary and Transcript Extraction\n\n```\nAgent: summarize_video(video_id=\"v1\")\n→ {name: \"Lecture 3\", duration_seconds: 3600, features: {...},\n   scene_count: 42, transcript_preview: \"Welcome to today's lecture...\"}\n\nAgent: get_transcript(video_id=\"v1\", format=\"segments\", start=0, end=60)\n→ {data: [{start: 0.0, end: 5.2, text: \"Welcome...\"}, ...],\n   total_count: 12, truncated: false}\n```\n",
  "bytes": 8590,
  "sha": "57dbc94c2bfbbbfda6e861f3f60372704d5364d31581083e91a0bff2c0cdb6a4",
  "repo_slug": "reka-ai/reka-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_ai_reka_mcp_c3dbb2ff/readme"
}