Skip to main content
Glama

SaveDock MCP: free video downloader MCP server for AI agents

SaveDock MCP lets AI agents and MCP clients (Claude, Cursor, VS Code, Windsurf and any client with remote MCP support) download videos and audio by calling tools. Give your agent a link from YouTube, Instagram, TikTok, Facebook, X (Twitter) or Pinterest and it can read the video's details, then save it as MP4 video or MP3 audio.

It is the MCP server behind SaveDock, a free online video downloader. No account, no API key, no sign-up.

Quick start: connect to the hosted server

You do not need to install or run anything. Add the URL to your MCP client.

Claude Code:

claude mcp add --transport http savedock https://mcp.savedock.pro/mcp

Any client that reads a JSON config:

{
  "mcpServers": {
    "savedock": { "url": "https://mcp.savedock.pro/mcp" }
  }
}

Exact syntax differs between clients, so check your client's remote MCP documentation. After connecting, just ask: "Download this YouTube video as MP3: https://..."

Free use is limited per IP address (10 downloads per hour). Downloaded files are temporary and are deleted automatically after a few hours.

Related MCP server: TubePull – AI YouTube Downloader

Tools

Tool

What it does

get_video_info(url)

Returns title, uploader, duration and the qualities available. Read-only.

download_video(url, quality="best", audio_only=false, wait_seconds=...)

Starts a download and waits for it. Returns a temporary download_url, or a job id if it is still running. Use audio_only=true for MP3.

get_download_status(job_id, wait_seconds=...)

Checks a running job.

cancel_download(job_id)

Stops a queued or running job.

Resources: videodl://platforms (supported sites and limits) and videodl://quality-options (what quality accepts).

Results include readable text plus structured content. Errors come back with isError: true and a machine-readable code, message, retryable and retry_after, so an agent can decide whether to retry. The server returns a download link; file bytes are never placed into the conversation.

Supported platforms

YouTube, Instagram, TikTok, Facebook, X (Twitter) and Pinterest. Availability depends on what each site allows, and some videos (private, age-restricted or region-locked) cannot be downloaded.

Install and run it yourself

This package is a thin Model Context Protocol adapter over the SaveDock REST API. It has no yt-dlp, no database and no business logic of its own, so it needs an API to talk to (VIDEODL_API_URL).

git clone https://github.com/QamarAftab575/savedock-mcp.git
cd savedock-mcp
pip install .            # or: pip install -r requirements.txt

# Local, one user (stdio):
VIDEODL_API_URL=https://your-api.example.com python -m mcp_server

# Remote, many callers (Streamable HTTP, endpoint /mcp):
VIDEODL_API_URL=https://your-api.example.com \
MCP_ALLOWED_HOSTS=mcp.example.com \
python -m mcp_server --transport streamable-http --host 0.0.0.0 --port 8001

Or with Docker:

docker build -t savedock-mcp .
docker run -p 8001:8001 -e VIDEODL_API_URL=https://your-api.example.com savedock-mcp

Settings

Variable

Meaning

VIDEODL_API_URL

Where /api/v1/ lives (default http://127.0.0.1:8000).

VIDEODL_API_KEY

Optional key for higher limits, used on stdio only and ignored over HTTP.

MCP_TRUST_PROXY

Set true only when a reverse proxy you control sits in front, so per-user limits use the forwarded address.

MCP_HOST, MCP_PORT

Bind address (default 127.0.0.1:8001).

MCP_ALLOWED_HOSTS

Comma list of public host names; turns on DNS-rebinding protection. Set it in production.

MCP_ALLOWED_ORIGINS

Browser origins allowed to call the server.

MCP_WAIT_SECONDS, MCP_MAX_WAIT_SECONDS, MCP_POLL_SECONDS

Wait defaults, cap and poll interval.

Tests

python -m unittest discover -s mcp_server/tests -t .

The tests use a mocked REST service and a real in-memory MCP client.

Responsible use

Only download content you own, that is in the public domain, or that you have permission to save. You are responsible for following the terms of the platforms you use and the copyright law that applies to you.

License

MIT. See LICENSE.

Available Tools

4 tools
cancel_downloadA
DestructiveIdempotent

Stop a queued or running download and discard its partial file. Finished downloads are unaffected.

NameRequiredDescriptionDefault
job_idYesThe id returned by download_video.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds valuable context that partial files are discarded and finished downloads are unaffected, which goes beyond what the annotations state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words; the core action and scope are front-loaded, and the secondary clarification about finished downloads follows naturally.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one required parameter, full schema coverage, and explicit annotations, the description covers the necessary behavior. It does not explain the return value, but no output schema exists and the operation is simple enough that this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the single parameter is fully described in the schema as the id returned by download_video. The description adds no further parameter meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Stop a queued or running download') and explicitly scopes the operation ('discard its partial file'), making clear it is not a status check or a new download. The distinction from siblings like get_download_status and download_video is implicit but readily apparent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it by specifying 'queued or running' downloads, but it does not explicitly say when not to use it or name alternatives such as get_download_status for monitoring. No explicit alternative or exclusion guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

download_videoA

Download a video or audio track and return a temporary download link. Finishes within wait_seconds for most videos; otherwise returns a job id to pass to get_download_status.

NameRequiredDescriptionDefault
urlYesLink to ONE video, reel, short or post (not a playlist or channel). Surrounding text is ignored.
qualityNo'best' (default), a maximum height such as '1080', '720', '480', '360', or an audio format: 'audio:mp3:192', 'audio:m4a', 'audio:opus', 'audio:wav'. get_video_info lists what a video offers.best
audio_onlyNoDownload only the audio (MP3 192k unless quality names an audio format).
wait_secondsNoHow long to wait for the download to finish before returning a job id.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare not-readOnly, openWorld, non-idempotent, non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the result is a temporary (expiring) link and there is an async job fallback governed by wait_seconds. It stops short of stating link TTL, size limits, or whether repeated calls re-download.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, with the primary outcome front-loaded and the async escape hatch second. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must describe returns, which it does: a temporary link or a job id. For a 4-parameter, single-required-URL tool that is close to complete; only link lifetime and storage/expiry details are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters, including quality format strings and the audio_only default, are already documented. The description's mention of wait_seconds largely restates the schema's own wording, adding little new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (download), resource (video or audio track), and the return value (a temporary download link). The follow-up sentence covers the async fallback path, so an agent knows exactly what this produces without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the wait/failover branch clearly: it completes within wait_seconds for most videos, otherwise hand the job id to get_download_status. It does not explicitly direct the agent to get_video_info before choosing a quality, but the schema's quality description does.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_download_statusA
Read-onlyIdempotent

Check a download. When status is "done" the result contains the temporary download_url.

NameRequiredDescriptionDefault
job_idYesThe id returned by download_video.
wait_secondsNoWait up to this long for it to finish (0 = answer immediately).

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is fully covered. The description adds context beyond that: the useful disclosure that the returned download_url is temporary and only present when status is "done", which tells the agent to consume it promptly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero waste; the core check action is front-loaded and the important result caveat follows immediately. Nothing could be removed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining return values, yet it only documents the "done" case. It says nothing about other possible status values, what the result looks like while still running, or what happens if wait_seconds elapses before completion – all material for a polling tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (job_id sourced from download_video, wait_seconds with default 20 and 0-120 bounds) are documented in the schema itself. The description adds no parameter-level detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Check a download" gives a specific verb and resource, and the mention of a terminal "done" status plus download_url makes the polling purpose unambiguous. Sibling differentiation is only implicit (job_id ties it to download_video), but the name and description together leave no doubt about which tool handles status vs. cancel or fetch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a poll-after-download workflow but never states when to call it or how it relates to download_video and cancel_download. There is no explicit guidance on when not to use it or how to sequence it against the siblings, leaving the agent to infer the usage pattern.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_video_infoA
Read-onlyIdempotent

Look up a video's title, duration, uploader and the qualities it can be downloaded in, without downloading it.

NameRequiredDescriptionDefault
urlYesLink to ONE video, reel, short or post (not a playlist or channel). Surrounding text is ignored.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered structurally. The description adds genuine value by enumerating what the response contains and confirming no download side effect occurs. It omits failure behavior for unsupported links or rate limits, keeping it at a 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the resource and the returned fields, with the most important disambiguation ('without downloading it') placed at the end where it lands cleanly. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only, idempotent lookup with rich annotations and no output schema, the description is essentially sufficient and even previews the return fields. It leaves unstated what happens on an invalid or unsupported link, a minor but real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema itself already says 'Link to ONE video, reel, short or post (not a playlist or channel)'. The description adds nothing about the url parameter, so the baseline 3 applies — the schema does all the parameter work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (look up) plus the exact fields returned (title, duration, uploader, available qualities), and it explicitly separates itself from download_video by stating 'without downloading it'. An agent can distinguish this from its three siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause 'without downloading it' implicitly defines the use case as inspection-before-download and rules out the download path, effectively routing toward download_video for the other case. No explicit 'use X instead' sentence or prerequisite mention, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.0
    • First observedcancel_download
    • First observeddownload_video
    • First observedget_download_status
    • First observedget_video_info

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool covers a distinct stage of the video download lifecycle: metadata lookup, download initiation, status polling, and cancellation. There is no overlap between tools, and the download/status pair is explicitly linked by the job id handoff.

Naming Consistency5/5

All names use snake_case with a clear verb_noun or verb_object pattern: get_video_info, download_video, get_download_status, cancel_download. The convention is predictable and easy for an agent to map to actions.

Tool Count5/5

Four tools is well-scoped for a focused video download service, and each tool earns its place by covering a necessary operation. There is no redundant or filler tool.

Completeness4/5

The core lifecycle is covered: inspect, download, check status, and cancel. Minor gaps exist, such as listing past downloads or deleting temporary files, but these are not essential for the stated purpose and agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to extract TikTok video and soundtrack media, metadata, covers, and manifests from public URLs or IDs through verified downloads and schema access via MCP tools.
    4
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Turns TikTok, Instagram, X/Twitter and Facebook post URLs into video download links plus metadata (title, author, duration, thumbnail), so AI agents can fetch social videos in one tool call.
    2
    64 npm
    MIT