AgentStack
MCP verified MIT Self-run

Video Extract Agents

mcp-cibis-video-extract-agents · by cibis

AI-powered video extraction platform - CrewAI agents, MCP/SSE tools, Claude (Anthropic), AWS Bedrock, Angular, Node.js, Python, FFmpeg, Azure Container Apps

No reviews yet
0 installs
1 views
0.0% view→install

Install

$ agentstack add mcp-cibis-video-extract-agents

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Video Extract Agents? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

This project is a complete redesign of the original Video Extract tool.

Original implementation: https://github.com/cibis/video_extract


Video Extract Agents

A prompt-driven video extraction platform. Upload a video, describe what you want in plain English, and AI agents extract and compile the relevant segments into a highlight reel.

> Example: "Extract all kitesurfing jumps from this video and compile them into a highlight reel."


Why This Exists

This project exists because of two problems.

The first: I'm mildly obsessed with agentic AI, the idea that you give a system a goal in plain English and a crew of AI agents figures out how to get there. The second: I have hours of kitesurfing footage and zero patience for scrubbing through it frame by frame.

The obvious solution was to build an enterprise-grade, cloud-native, multi-agent video extraction platform.

So here we are: a full Azure microservices stack, CrewAI orchestration, MCP tool servers, and FFmpeg keyframe pipelines, all so I can type "find the jumps" and go back to the beach.


Table of Contents

  • [Overview](#overview)
  • [How It Works](#how-it-works)
  • [Tech Stack](#tech-stack)
  • [Quick Start (Local Dev)](#quick-start-local-dev)
  • [Running Tests](#running-tests)
  • [Documentation](#documentation)
  • [External Agents](#external-agents)
  • [Repository Structure](#repository-structure)

Overview

The platform combines agentic AI orchestration (CrewAI + Claude), MCP tool servers over SSE transport, and a cloud-native Azure microservices architecture to enable natural-language-driven video processing at scale.

Home — session active with completed job history and chat

Session History — completed and failed jobs with output files

Key capabilities:

  • Upload videos up to 10 GB directly to Azure Blob Storage
  • Describe what to extract in natural language via a chat interface
  • AI agents (planner → analysis → processing) orchestrate the full pipeline
  • FFmpeg keyframe pre-processing dramatically reduces AI token costs
  • Output videos delivered via signed CDN URLs and email notification
  • All processing services auto-scale to zero when idle (KEDA on Azure Container Apps)

How It Works

Upload video (Angular → Blob Storage via SAS token)
    ↓
Pre-processing worker (FFmpeg keyframe extraction → PostgreSQL index)
    ↓
User submits prompt (LibreChat iframe → API Gateway → Agent Orchestrator)
    ↓
CrewAI crew: Planner → Analysis Agent (MCP tools) → Processing Agent (MCP tools)
    ↓
Output video written to Blob Storage
    ↓
Signed download URL delivered via SSE stream + email notification

All steps are asynchronous and fault-tolerant via Azure Service Bus queues.


External Agents

The platform's MCP tools can be used directly from Claude Desktop or the LibreChat official image via an MCP bridge (port 8300) that translates standard MCP JSON-RPC to the platform's SSE tool protocol.

Claude Desktop:

# Start MCP bridge
bash external-agents/claude-desktop/scripts/start-mcp-bridge.sh

# Install config (Windows PowerShell)
.\external-agents\claude-desktop\scripts\install.ps1
# Restart Claude Desktop — Tools icon should show 19 tools

| Session started — upload link provided | Job complete — extraction summary and download link | |---|---| | | |

LibreChat (official image):

cp external-agents/librechat/.env.example external-agents/librechat/.env
# Set ANTHROPIC_API_KEY and generate random secrets (see docs/getting-started.md §13.2)
cd external-agents/librechat && docker compose up -d
# Open http://localhost:3081

| Agent running MCP tool calls (ingest → detect → clip) | Extraction complete — final output URL | |---|---| | | |

See [docs/getting-started.md § External agents](docs/getting-started.md#13-external-agents-librechat-official--claude-desktop) for the full walkthrough.


Tech Stack

| Layer | Technology | |---|---| | Frontend | Angular 19 + LibreChat (forked, iframe embed) | | API / BFF | Node.js + Express (TypeScript) | | AI Orchestration | Python + CrewAI + FastAPI | | LLM | Any LiteLLM-compatible model (Anthropic Claude, OpenAI, AWS Bedrock, and more) | | Tool Protocol | MCP over SSE transport | | Container Platform | Azure Container Apps + KEDA | | Infrastructure as Code | Terraform | | Storage | Azure Blob Storage | | Database | PostgreSQL 15 (ACA container, Azure Files backed) | | Messaging | Azure Service Bus | | Auth | Azure Entra External ID (magic link / JWT) | | Local Dev Emulation | Docker Compose + Azurite | | CI/CD | GitLab CI (mirrored to GitHub) |


Quick Start (Local Dev)

Requires Docker Desktop (≥ 4.30) with WSL 2. See [docs/getting-started.md](docs/getting-started.md) for full prerequisites and Azure setup.

1. Copy environment files:

cp backend/api-gateway/.env.example              backend/api-gateway/.env
cp backend/agent-orchestrator/.env.example       backend/agent-orchestrator/.env
cp backend/preprocessing-worker/.env.example     backend/preprocessing-worker/.env
cp mcp-servers/mcp-server-analysis/.env.example  mcp-servers/mcp-server-analysis/.env
cp mcp-servers/mcp-server-processing/.env.example mcp-servers/mcp-server-processing/.env
cp frontend/librechat/.env.example               frontend/librechat/.env

Edit backend/agent-orchestrator/.env and set ANTHROPIC_API_KEY.

2. Start the stack:

cd infrastructure/docker-compose
docker compose up --build

3. Create Service Bus queues (once, after stack is up):

export SERVICE_BUS_CONNECTION_STRING="Endpoint=sb://localhost;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SAS_KEY_VALUE;UseDevelopmentEmulator=true;"
python scripts/create_service_bus_queues.py

4. Verify services:

curl http://localhost:8000/health   # API Gateway
curl http://localhost:8001/health   # Agent Orchestrator
curl http://localhost:8100/tools    # MCP Analysis tools
curl http://localhost:8200/tools    # MCP Processing tools

Services run on:

| Service | Port | |---|---| | Angular Shell | http://localhost:4200 | | LibreChat | http://localhost:3080 | | API Gateway | http://localhost:8000 | | Agent Orchestrator | http://localhost:8001 | | MCP Analysis | http://localhost:8100 | | MCP Processing | http://localhost:8200 | | Azurite (Blob) | http://localhost:10000 | | PostgreSQL | localhost:5433 |


Running Tests

E2E tests (fully containerised)

scripts/run-e2e-local.sh
# With frontier vision tools:
ANTHROPIC_API_KEY=sk-... scripts/run-e2e-local.sh

Documentation

| Document | Description | |---|---| | [docs/architecture.md](docs/architecture.md) | System design, data flows, service responsibilities, component details, deployment diagrams | | [docs/getting-started.md](docs/getting-started.md) | Full setup guide — prerequisites, GitLab/GitHub/Azure configuration, local dev bootstrap, CI/CD variables, secrets reference, troubleshooting | | [docs/local-development.md](docs/local-development.md) | Day-to-day local development — starting the stack, running services and tests, common tasks | | [docs/e2e-tests.md](docs/e2e-tests.md) | End-to-end pipeline tests | | [docs/azure-production-deployment.md](docs/azure-production-deployment.md) | Azure production deployment reference — services, roles, inter-service communication, scaling, CI/CD | | [docs/azure-credentials.md](docs/azure-credentials.md) | Azure credentials setup — every credential the platform needs, how to create and configure each | | [docs/terraform.md](docs/terraform.md) | Terraform layout, modules, environments, and how the pieces connect | | [docs/ai-containers-deep-dive.md](docs/ai-containers-deep-dive.md) | Deep dive into each AI container — inputs, outputs, and position in the job processing sequence | | [docs/gitlab-pipeline.md](docs/gitlab-pipeline.md) | CI/CD pipeline — every stage and job, environment lifecycle, and SDLC workflow | | [docs/instant-compilation-errors.md](docs/instant-compilation-errors.md) | Getting immediate type and syntax error feedback during local development without Docker rebuilds | | [docs/local-containers-report.md](docs/local-containers-report.md) | Local container architecture report | | [external-agents/claude-desktop/README.md](external-agents/claude-desktop/README.md) | Claude Desktop MCP integration | | [external-agents/librechat/README.md](external-agents/librechat/README.md) | LibreChat official image MCP integration |


Repository Structure

backend/
  api-gateway/            Node.js + Express (TypeScript) — auth, SAS tokens, SSE, chat proxy
  agent-orchestrator/     Python + CrewAI (FastAPI) — planner/analyst/processor agents
  preprocessing-worker/   Python — FFmpeg keyframe extraction

mcp-servers/
  mcp-server-analysis/    Port 8100 — ingest_video, extract_frames, detect_motion, detect_motion_sports,
                          detect_objects, detect_objects_vision, analyze_scene, transcribe_audio,
                          estimate_height_above_surface, read_asset, query_asset, write_query_asset,
                          write_segments_asset
  mcp-server-processing/  Port 8200 — split_video, extract_clip, extract_clips_bulk, merge_clips,
                          transform_video, write_asset, query_asset, write_query_asset

frontend/
  angular-shell/          Angular 19 — upload UI, job dashboard, LibreChat iframe host
  librechat/              Forked LibreChat — custom endpoint, branding, job status postMessage bridge

external-agents/
  mcp-bridge/             Standard MCP server (port 8300) — SSE + stdio transports
  claude-desktop/         Claude Desktop config + install scripts
  librechat/              LibreChat official image stack
  agent-instructions/     System prompt for external agents

infrastructure/
  docker-compose/         Full local dev stack
  terraform/
    modules/              aca, storage, database (reusable modules)
    envs/                 dev, test (ephemeral per CI pipeline)

tests/
  e2e/                    End-to-end tests (ephemeral Azure + local Docker Compose)

scripts/
  init_db.py                    Create all database tables
  init_storage.py               Create Blob Storage containers
  create_service_bus_queues.py  Create all Service Bus queues
  run-e2e-local.sh              Run E2E tests locally (fully containerised)
  bootstrap-dev.sh              First-time local dev setup
  smoke-test.sh                 Quick smoke test against running stack
  teardown.sh                   Stop and clean up local stack
  repair_job_output.py          Repair job output records in PostgreSQL
  collect_test_logs.py          Collect logs from CI test run
  check_e2e_threshold.py        Assert E2E test pass rate meets threshold

docs/
  architecture.md         System architecture reference
  getting-started.md      Full setup and deployment guide

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.