mcpField
L
lumiclip

lumiclip

Local
github.com/lumiclipMedia & Design0Updated 22w ago

About lumiclip

lumiclip is an MCP server that turns YouTube videos into short clips for AI assistants. It identifies highlights, reframes clips for vertical video, adds subtitles, and provides download links.

Key features

  1. 01Generate clips from YouTube URLs
  2. 02Select video segments by start and end time
  3. 03Reframe clips to vertical 9:16
  4. 04Add subtitles and rank clips by score
  5. 05Track projects and clip status

Use cases

  1. 01Create short clips from long YouTube videos
  2. 02Process only a chosen section of a video
  3. 03Send completed clips to a webhook workflow

MCP support

The MCP server exposes tools to start clip generation, check project progress, list projects, retrieve clip details, and view usage. It supports stdio and remote Streamable HTTP connections.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"lumiclip-lumiclip": {
"command": "npx",
"args": [
"-y",
"@lumiclip/mcp-server"
],
"env": {
"LUMICLIP_API_KEY": "<LUMICLIP_API_KEY>"
}
}
}
}
Run commandnpx -y @lumiclip/mcp-server
Environment variables to set
LUMICLIP_API_KEYSecretYour Lumiclip API key from app.lumiclip.ai/developers

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@lumiclip/mcp-server3.0.0

Tools

5

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
urlstringYesFull YouTube video URL (e.g. https://www.youtube.com/watch?v=...)
end_timenumberNoEnd time in seconds to clip only a segment of the video. Omit to process the full video.
start_timenumberNoStart time in seconds to clip only a segment of the video. Omit to process the full video.
callback_urlstringNoWebhook URL to receive a POST when processing finishes. The payload includes an array of clips sorted by score, each with a download_url.

Details

From the project README

@lumiclip/mcp-server

Turn long 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 Lumiclip MCP server

Quick Start

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

Setup

Claude Desktop / Cursor

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

{
  "mcpServers": {
    "lumiclip": {
      "command": "npx",
      "args": ["@lumiclip/mcp-server"],
      "env": {
        "LUMICLIP_API_KEY": "sk_live_..."
      }
    }
  }
}
Cursor Directory

Install in Cursor

Smithery
npx @smithery/cli mcp add lumiclip/lumiclip
Remote (Streamable HTTP)

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

  • Endpoint: https://mcp.lumiclip.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: pending → processing → completed (or completed_no_clips / failed)

Processing steps: queued → DOWNLOADING_VIDEO → EXTRACTING_AUDIO → TRANSCRIBING → DETECTING_HIGHLIGHTS → CUTTING_CLIPS → EXPORTING_CLIPS → done

Clips: pending → exporting → completed (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.lumiclip.ai/exports/premium/.../clip-32538b9c-....mp4",
      "quality": "1080p",
      "thumbnail_url": "https://cdn.lumiclip.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.lumiclip.ai/...",
  "video_url_720p": "https://cdn.lumiclip.ai/...",
  "video_url_1080p": "https://cdn.lumiclip.ai/...",
  "thumbnail_url": "https://cdn.lumiclip.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.lumiclip.ai/exports/premium/.../clip-32538b9c-....mp4",
      "thumbnail_url": "https://cdn.lumiclip.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-Lumiclip-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.lumiclip.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.lumiclip.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.lumiclip.ai — All endpoints require Authorization: Bearer sk_live_...

Environment Variables

VariableRequiredDefault
LUMICLIP_API_KEYYes—
LUMICLIP_API_URLNohttps://api.lumiclip.ai

Links

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.