Back to Browse

Crabcut MCP Server

Developer ToolsModerate6.8MCP RegistryLocal
Free

Server data from the Official MCP Registry

Turn YouTube videos into short-form clips from any AI assistant

About

Turn YouTube videos into short-form clips from any AI assistant

Security Report

6.8
Moderate6.8Moderate Risk

Valid MCP server (4 strong, 4 medium validity signals). 4 known CVEs in dependencies (0 critical, 3 high severity) Package registry verified. Imported from the Official MCP Registry.

5 files analyzed · 5 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

Your Crabcut API key from app.crabcut.ai/developersRequired

Environment variable: CRABCUT_API_KEY

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-realcrabcut-crabcut": {
      "env": {
        "CRABCUT_API_KEY": "your-crabcut-api-key-here"
      },
      "args": [
        "-y",
        "@crabcut/mcp-server"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

@crabcut/mcp-server

Turn YouTube videos into short clips — from Claude, Cursor, or any AI assistant that supports MCP.

Give it a YouTube link. It finds the best moments, reframes for vertical video (9:16), adds subtitles, and returns download-ready clips.

smithery badge CrabCut MCP server

Quick Start

  1. Get an API key at app.crabcut.ai/developers
  2. Run:
CRABCUT_API_KEY=sk_live_... npx @crabcut/mcp-server

Setup

Claude Desktop / Cursor

Add to your config file — claude_desktop_config.json for Claude, .cursor/mcp.json for Cursor:

{
  "mcpServers": {
    "crabcut": {
      "command": "npx",
      "args": ["@crabcut/mcp-server"],
      "env": {
        "CRABCUT_API_KEY": "sk_live_..."
      }
    }
  }
}

Cursor Directory

Install in Cursor

Smithery

npx @smithery/cli mcp add crabcut/crabcut-mcp-server

Remote (Streamable HTTP)

For n8n, custom integrations, or any client that supports remote MCP:

  • Endpoint: https://mcp.crabcut.ai/mcp
  • Auth: Authorization: Bearer sk_live_...
  • Transport: Streamable HTTP (POST)

Tools

ToolWhat it does
generate_clipsStart clip generation from a YouTube URL. Returns a project_id right away.
get_project_statusCheck progress and get clips when ready. Clips are sorted by score (best first).
list_projectsList your projects with status and clip counts.
get_clipGet full details for a single clip.
check_usageSee your plan, remaining credits, and usage.

How It Works

  1. Call generate_clips with a YouTube URL
  2. Get back a project_id immediately
  3. Poll get_project_status every 10–15 seconds (or pass a callback_url for webhook)
  4. When done, clips are sorted by score (best first), each with a download_url

Statuses

Project: pendingprocessingcompleted (or completed_no_clips / failed)

Processing steps: queuedDOWNLOADING_VIDEOEXTRACTING_AUDIOTRANSCRIBINGDETECTING_HIGHLIGHTSCUTTING_CLIPSEXPORTING_CLIPSdone

Clips: pendingexportingcompleted (or failed). The download_url is available when clip_status is completed.

API Reference

generate_clips

Start clip generation from a YouTube video.

FieldTypeRequiredDescription
urlstringYesFull YouTube video URL
start_timenumberNoStart time in seconds (to process only a segment)
end_timenumberNoEnd time in seconds (to process only a segment)
callback_urlstringNoWebhook URL to receive results when done
{
  "project_id": "43dbe622-8ac6-4579-9625-0ad7f0f9db0b",
  "status": "processing",
  "poll_url": "/api/v1/projects/43dbe622-8ac6-4579-9625-0ad7f0f9db0b",
  "estimated_minutes": 5,
  "message": "Processing started. Poll with get_project_status every 10-15 seconds until status is 'completed'."
}

get_project_status

Check progress and get clips.

FieldTypeRequiredDescription
project_idstringYesThe project ID from generate_clips
{
  "id": "43dbe622-...",
  "name": "Video Title",
  "status": "completed",
  "step": "done",
  "error": null,
  "expected_clips": 9,
  "duration": 639,
  "created_at": "2026-03-15T02:21:46.226Z",
  "clips": [
    {
      "id": "32538b9c-...",
      "title": "One Dating Theory Leads to Chaos",
      "duration": 41.83,
      "score": 90,
      "reason": "Sharp universal joke that hooks instantly with strong reactions.",
      "clip_status": "completed",
      "download_url": "https://cdn.crabcut.ai/exports/premium/.../clip-32538b9c-....mp4",
      "quality": "1080p",
      "thumbnail_url": "https://cdn.crabcut.ai/exports/premium/.../clip-32538b9c-...-thumb.jpg",
      "created_at": "2026-03-15T02:29:10.954Z",
      "updated_at": "2026-03-15T02:30:43.907Z"
    }
  ]
}

Clips are sorted by score (highest first).

list_projects

FieldTypeRequiredDescription
limitnumberNoMax projects to return. Default 20, max 100.
statusstringNoFilter: pending, processing, completed, completed_no_clips, failed
{
  "projects": [
    {
      "id": "43dbe622-...",
      "name": "Video Title",
      "status": "completed",
      "step": "done",
      "expected_clips": 9,
      "clips_count": 8,
      "duration": 639,
      "created_at": "2026-03-15T02:21:46.226Z"
    }
  ],
  "total": 1,
  "limit": 20,
  "offset": 0
}

get_clip

FieldTypeRequiredDescription
clip_idstringYesThe clip ID from a project's clips array
{
  "id": "32538b9c-...",
  "project_id": "43dbe622-...",
  "title": "One Dating Theory Leads to Chaos",
  "duration": 41.83,
  "score": 90,
  "reason": "Sharp universal joke that hooks instantly.",
  "export_status": "completed",
  "export_quality": "1080p",
  "is_exported": true,
  "video_url": "https://cdn.crabcut.ai/...",
  "video_url_720p": "https://cdn.crabcut.ai/...",
  "video_url_1080p": "https://cdn.crabcut.ai/...",
  "thumbnail_url": "https://cdn.crabcut.ai/...",
  "created_at": "2026-03-15T02:29:10.954Z",
  "updated_at": "2026-03-15T02:30:43.907Z"
}

check_usage

No input required.

{
  "plan": "pro",
  "credits_remaining": 450,
  "credits_total": 500,
  "period_start": "2026-03-01T00:00:00.000Z",
  "period_end": "2026-04-01T00:00:00.000Z"
}

Errors

HTTP StatusErrorWhat to do
400Invalid YouTube URLCheck the URL format
401UnauthorizedCheck your API key
402Insufficient creditsBuy more credits or use a shorter video
429Rate limit exceededWait and try again
500Internal server errorTry again later

Webhooks

Pass a callback_url when calling generate_clips to receive a POST when all clips are ready.

Completed:

{
  "event": "project.completed",
  "project_id": "43dbe622-...",
  "status": "completed",
  "source_url": "https://www.youtube.com/watch?v=H51iLa1leOU",
  "clips": [
    {
      "id": "32538b9c-...",
      "title": "One Dating Theory Leads to Chaos",
      "duration": 41.83,
      "score": 90,
      "download_url": "https://cdn.crabcut.ai/exports/premium/.../clip-32538b9c-....mp4",
      "thumbnail_url": "https://cdn.crabcut.ai/exports/premium/.../clip-32538b9c-...-thumb.jpg",
      "quality": "1080p"
    }
  ]
}

Failed:

{
  "event": "project.failed",
  "project_id": "43dbe622-...",
  "status": "failed",
  "error": "YouTube video is unavailable",
  "clips": []
}

Clips are sorted by score (highest first). We retry up to 3 times if your server doesn't respond.

Signature verification (optional): Each callback includes an X-Crabcut-Signature header. Compute HMAC-SHA256 of the request body using SHA-256(your_api_key) as the signing key. Compare with the header value (sha256=<hex>).

Using with n8n

Option A — Webhook (recommended):

  1. Create a workflow with a Webhook trigger node. Copy its URL.
  2. Add an HTTP Request node: POST https://api.crabcut.ai/api/v1/clips/generate with Header Auth (Authorization: Bearer sk_live_...) and body:
    {
      "url": "https://www.youtube.com/watch?v=...",
      "callback_url": "https://your-n8n.com/webhook/abc123"
    }
    
  3. When clips are ready, the Webhook node receives the payload.
  4. Best clip: {{ $json.clips[0].download_url }}

Option B — Polling loop:

  1. POST to generate clips (same as above, without callback_url).
  2. Wait 15 seconds → GET https://api.crabcut.ai/api/v1/projects/{{ $json.project_id }}IF status is not completed, loop back to Wait.

REST API

For direct HTTP calls without MCP:

MethodEndpointDescription
POST/api/v1/clips/generateStart clip generation
GET/api/v1/projects/:idGet project status and clips
GET/api/v1/projectsList projects
GET/api/v1/clips/:idGet single clip details
GET/api/v1/account/usageCheck credits and plan

Base URL: https://api.crabcut.ai — All endpoints require Authorization: Bearer sk_live_...

Environment Variables

VariableRequiredDefault
CRABCUT_API_KEYYes
CRABCUT_API_URLNohttps://api.crabcut.ai

Links

License

MIT

Reviews

No reviews yet

Be the first to review this server!

Crabcut MCP Server - Turn YouTube videos into short-form clips from any AI | MCP Marketplace