appsgolem-mcp
Provides tools for cutting clips from YouTube videos, including support for multiple output modes (video, audio, short, GIF, frames), batch cutting and stitching, and status polling.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@appsgolem-mcpCreate a 10-second clip starting at 3:20 from this YouTube URL."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
appsgolem-mcp (Node / TypeScript)
An MCP server for the AppsGolem YouTube
cutter API. It lets an AI agent (Claude Desktop, Claude Code, Cursor, …) cut
clips from YouTube videos — in any format the web cutter supports — and get a
direct download URL back. The REST logic lives in a small, dependency-light
client (src/client.ts); src/server.ts is the thin MCP tool layer over it.
Requirements
Node.js >= 18 (uses the global
fetch).An AppsGolem API key (
ag_live_…) — create one in your dashboard athttps://appsgolem.com/api-billing/. Credits are prepaid; buy a pack or a subscription there.
Related MCP server: ytmcp
Install / connect (no manual install)
npx fetches and runs the server on demand — nothing to install globally.
Claude Desktop / Cursor — add to the client's MCP config (e.g.
claude_desktop_config.json):
{
"mcpServers": {
"appsgolem": {
"command": "npx",
"args": ["-y", "appsgolem-mcp"],
"env": { "APPSGOLEM_API_KEY": "ag_live_…" }
}
}
}Claude Code — one command:
claude mcp add appsgolem -e APPSGOLEM_API_KEY=ag_live_… -- npx -y appsgolem-mcpThe server speaks MCP over stdio (the transport those clients use). A
missing APPSGOLEM_API_KEY is not fatal at startup — the server still starts
and advertises its tools; each call then returns a clear config_error telling
you to set the key.
Configuration
Env var | Required | Default | Notes |
| yes | — | Your |
| no |
| Override for self-host / dev. |
Pricing
1 produced clip = 1 credit. 2160p (4K) = 4 credits per clip — except
audio_only, which stays 1. A source longer than 2 h adds +1 once
per job, but only when its duration is known (the surcharge is skipped if the
probe can't determine it). A batch/stitch of N clips costs N per-clip.
Failed cuts are never billed.
Tools
The server exposes three tools. A call that passes MCP input-schema
validation returns a structured result — the API's own JSON on success, or
{ "error": … } on any handler/API failure — and never raises a protocol-level
error, so an agent always gets a usable object. (Invalid tool arguments are
rejected by the MCP SDK before the handler runs, as a text-only isError
result.)
1. cut_youtube_video
Cut a clip (or a batch of clips) from a YouTube video. By default it waits
until the clip is produced and returns its status (including a download_url
once a download token is ready); set wait: false to submit and return
immediately with the current job (its state is normally queued after dispatch).
Parameters
Name | Type | Default | Notes |
| string | — | Required. YouTube watch / share / |
| string | — | Clip start: |
| string | — | Clip end, same formats (≤ 300 h). Omit when using |
| string |
|
|
| string |
|
|
| string | — | The |
| string | — | Lossy-audio bitrate |
| boolean |
| Stream-copy (≈10× faster, keyframe-aligned); |
| number |
| Playback speed |
| integer |
|
|
| boolean |
|
|
| boolean |
|
|
| array | — | An array of 1–10 |
| boolean |
| With 2+ |
| string | — | A stable key (≤ 200 chars) so a retried request reuses the same job (sent as the |
| boolean |
| Poll until ready, up to the |
| integer |
| Polling deadline in seconds (default 300). It bounds the polling only — the initial submission and one in-flight status request (each up to a 30 s request timeout) can extend total wall-clock. |
Returns (wait: true, default) — the produced job status. download_url is
present once a download token is available; if it isn't yet, poll again:
{
"id": "e48db1a2-1c3d-4e5f-8a9b-0c1d2e3f4a5b",
"state": "produced",
"credits_reserved": 1,
"created_at": "2026-08-22T12:00:00+00:00",
"download_url": "https://appsgolem.com/v1/download/…/clip.mp4"
}Returns (wait: false) — the job immediately, with its current state
(normally queued after dispatch) and no download_url yet; poll
get_cut_status with the id (or fetch poll_url):
{
"id": "e48db1a2-1c3d-4e5f-8a9b-0c1d2e3f4a5b",
"state": "queued",
"credits_reserved": 1,
"poll_url": "/v1/cuts/e48db1a2-1c3d-4e5f-8a9b-0c1d2e3f4a5b"
}If the wait times out before the clip is ready, the result carries
"still_processing": true and the job id — poll get_cut_status with that
id. If the job reaches a terminal failure, the result is
{ "error": "cut_failed", "state": "failed" | "refunded", "id": … } (and no
credit is charged).
2. get_cut_status
Check a cut job by its id. Use it to poll a job started with
cut_youtube_video(wait=false) or one that timed out.
Name | Type | Notes |
| string | Required. The job id (a UUID) returned by |
Returns — the job's state; once produced/delivered it also carries a
download_url when a download token is available (otherwise poll again):
{ "id": "e48db1a2-…", "state": "queued", "credits_reserved": 1, "created_at": "…" }States progress accepted → queued → produced → delivered, or
failed → refunded on error.
3. get_account_balance
Return the API account's spendable credit balance and current hourly cap. No parameters.
Returns
{ "balance": 412, "hourly_cap": 60 }Modes
| Output | Notable options |
| Video file, no watermark — normally MP4; |
|
| mp3 / m4a / wav / flac |
|
| Video + MP3 together, as a zip ( |
|
| Video with no audio track — normally MP4; |
|
| Portrait 9:16 — AI smart-crop when applicable, else a letterbox-blur fallback whose exact aspect depends on the source (Shorts / Reels / TikTok) |
|
| Animated GIF (≤ 5 min; no multi-clip) |
|
| JPG stills |
|
Example prompts
Because the agent picks the parameters from your request, you drive it in plain language:
"Cut 0:30 to 1:15 from https://youtu.be/dQw4w9WgXcQ in 1080p." →
cut_youtube_video(url, start="0:30", end="1:15")"Grab the audio of that video from 2:00 to 5:00 as an mp3." →
mode="audio_only", audio_format="mp3""Make a vertical short of the 10:00–10:45 highlight." →
mode="short", start="10:00", end="10:45""Turn 0:05–0:12 into a GIF." →
mode="gif""Extract a contact sheet of frames every 5 seconds from 1:00 to 2:00." →
mode="frames", interval_ms=5000, sheet=true"Stitch 0:10–0:20 and 1:00–1:10 into one clip." →
clips=[{start:"0:10",end:"0:20"},{start:"1:00",end:"1:10"}], stitch=true"Do a fast, stream-copy cut of 0:00–0:30." →
fast=true"How many API credits do I have left?" →
get_account_balance()
Result & error shapes
Every result from a handler is a plain object (MCP argument-validation
failures are the exception — see the Tools note above). On failure the object has an error code
(the tool call still succeeds):
| When |
|
|
| The key was rejected (401). |
|
|
| No such job for this account (404). |
| The job reached |
| Connection/transport failure or request timeout. |
| The configured API base/path couldn't be built into a URL. |
| A ≥400 response whose JSON body isn't an |
| A success response whose body isn't a JSON object (array/scalar/null), or — with |
API-level errors (e.g. validation 400, rate-limit 429) are returned as the
API's own error body plus a status field; a 429 also includes retry_after
(seconds) when the server sends Retry-After, so an agent can back off.
A relative download_url (the API returns a path) is resolved to a full URL
against the configured API base only when it stays on that origin;
already-absolute URLs and off-origin references are left unchanged.
Develop
npm install
npm run build # tsc -> dist/
npm test # builds, then runs node --test (no network)
npm start # run the stdio server locally (key needed for calls, not startup)Publishing
npm publish (from this directory) makes npx appsgolem-mcp work for everyone.
The prepare script builds dist/ automatically on install/publish.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to access YouTube video data including information retrieval, captions/transcripts, AI-powered summaries, screenshots, comments, and video search through the VidCap API.419MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to fetch YouTube video transcripts with precise timestamps, multi-language support, and time-range filtering.31MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to fetch transcripts, metadata, and download videos/audio from YouTube without API keys.27MIT
- AlicenseAqualityDmaintenanceEnables AI tools to access YouTube content, including transcript extraction, video/channel info, and search.420MIT
Related MCP Connectors
Create AI-powered short-form video clips from YouTube videos. Supports webhook callbacks.
AI clips from long videos: analyze, clip, render and publish via the CutPro API.
YouTube transcripts, search, channels, playlists and bulk transcript jobs for AI agents. 14 tools.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/apancyborg/appsgolem-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server