mcp-curl-downloader
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., "@mcp-curl-downloaderDownload https://example.com/file.pdf to ~/Downloads"
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.
mcp-curl-downloader
MCP server for downloading files via HTTP/HTTPS — like curl but integrated with AI assistants (Claude Desktop, VS Code, Cursor, etc.).
Quick Start
npx -y mcp-curl-downloaderNo installation needed. The server starts on stdio and speaks the Model Context Protocol (MCP).
Related MCP server: MCP File Downloader
Claude Desktop Configuration
Add to your claude_desktop_config.json:
{
"mcpServers": {
"curl-downloader": {
"command": "npx",
"args": ["-y", "mcp-curl-downloader"]
}
}
}Config file location:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Tool: download_file
Downloads a file from a URL to any local directory or file path.
Parameters
Parameter | Type | Required | Default | Description |
|
| yes | — | File URL (http/https only) |
|
| yes | — | Destination directory or full file path |
|
| no | auto-detected | Custom filename (only when |
|
| no |
| HTTP headers as key-value pairs |
|
| no |
| Overwrite existing file |
Examples
Download to a directory (filename auto-detected from URL):
{
"url": "https://example.com/report.pdf",
"dest_path": "/home/user/downloads"
}Download with custom filename:
{
"url": "https://example.com/data.csv",
"dest_path": "/tmp",
"filename": "my_data.csv"
}Download with auth headers:
{
"url": "https://api.example.com/export",
"dest_path": "./output.json",
"headers": { "Authorization": "Bearer token123" }
}Overwrite existing file:
{
"url": "https://example.com/latest.zip",
"dest_path": "/home/user/archive.zip",
"overwrite": true
}Response
Success:
{
"success": true,
"file_path": "/home/user/downloads/report.pdf",
"file_size": 1048576,
"content_type": "application/pdf",
"message": "Successfully downloaded: /home/user/downloads/report.pdf (1.00 MB)"
}Failure:
{
"success": false,
"error": "File already exists: \"/home/user/downloads/report.pdf\". Set overwrite=true to replace.",
"url": "https://example.com/report.pdf",
"dest_path": "/home/user/downloads"
}Security
Protocol whitelist: Only
http:andhttps:are allowedURL validation: Malformed URLs are rejected
Path traversal protection: Filenames are sanitized (
../, Windows-illegal characters, control characters removed)File size limit: 500 MB default (configurable via
CONFIG.MAX_FILE_SIZE)Overwrite protection: Existing files are not overwritten unless
overwrite: trueTimeout: 5 minutes per download (configurable via
CONFIG.TIMEOUT_MS)
Development
# Install dependencies
npm install
# Build
npm run build
# Watch mode
npm run dev
# Test with MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.jsRequirements
Node.js >= 18 (uses built-in
fetchandstream/promises)
License
MIT
Available Tools
1 tooldownload_fileA
Download a file from a URL to a local directory or file path.
Features:
Supports HTTP and HTTPS protocols
Streams large files efficiently (no memory pressure)
Auto-detects filename from URL or Content-Disposition header
Creates parent directories automatically
Configurable timeout (300s) and size limit (500MB)
Safe filename sanitization (removes dangerous characters)
Examples:
Download to directory: { "url": "https://example.com/file.pdf", "dest_path": "/home/user/downloads" }
Download with custom name: { "url": "https://example.com/data.csv", "dest_path": "/tmp", "filename": "my_data.csv" }
With auth headers: { "url": "https://api.example.com/export", "dest_path": "./output.json", "headers": { "Authorization": "Bearer token123" } }
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL of the file to download (http/https only) | |
| headers | No | Optional HTTP headers as key-value pairs (e.g., {'Authorization': 'Bearer token'}) | |
| filename | No | Optional custom filename. Only used when dest_path is a directory. Unsafe characters will be sanitized automatically. | |
| dest_path | Yes | Destination directory path or full file path. If a directory is specified, the filename will be auto-detected from the URL. | |
| overwrite | No | Whether to overwrite the file if it already exists. Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does this well, disclosing streaming behavior (no memory pressure), auto-filename detection, parent directory creation, configurable timeout/size limits, and safe filename sanitization. It also covers overwrite semantics. This is rich, useful behavioral context that goes beyond what the schema conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with feature bullets and three concrete examples. Every bullet adds distinct value and the examples illustrate real usage patterns with different parameter combinations. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex with nested headers object, dest_path ambiguity (directory vs full file path), and filename/path resolution logic. The description thoroughly explains the dest_path semantics (directory vs file, auto-detection), filename behavior, and header usage. Schema coverage is 100% and the description complements rather than repeats it. No output schema exists, but the description adds enough context about the tool's behavior to make the agent confident about invocation and expected semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaningful value by clarifying dest_path's dual behavior (directory vs full file path), showing how filename interacts with directory dest_path, and demonstrating headers usage with a real Authorization example. The distinction between directory and file dest_path behavior is the key semantic insight that the schema hint at but the description makes explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Download a file from a URL to a local directory or file path.' This clearly states the action and the input/output resources. The feature list distinguishes this from a generic fetch/curl-style operation by highlighting streaming, auto-naming, directory creation, and sanitization. No sibling tools exist to differentiate from, but the purpose is unambiguous and well-scoped.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool through examples covering three common scenarios (simple download, custom destination name, authenticated requests). While it doesn't explicitly state when NOT to use it or name alternatives (no siblings exist), the examples and features make intended usage patterns apparent. The overwrite behavior and timeout/size limits give practical operational guidance that helps an agent reason about constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
There is only one tool, so there is zero ambiguity between tools. The tool has a single, clearly defined purpose: downloading files from a URL.
With only one tool, there is no pattern to evaluate for consistency. The name 'download_file' uses a reasonable verb_noun convention, but a single tool doesn't demonstrate any naming system.
A single tool feels thin for a downloader server. The downloader domain could reasonably include tools like list_directory, delete_file, or check_file_status to provide a more complete surface, though a minimalist download-only server is defensible.
The tool covers download functionality well, but represents a dead-end surface. There is no way to check whether a download succeeded (no status/history), no way to remove downloaded files, or resolve/validate URLs before downloading. Agents hit a hard wall after invoking download_file.
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 Connectors
Persistent file storage for AI agents via MCP and curl. Upload, download, and version files.
File uploads for AI agents. Upload, list, and manage files. No signup required.
Read a URL as clean markdown, screenshot a website, url to PDF. Web access for agents, no signup.
Reliable web fetching for AI agents with retry, circuit breaker, caching, and anti-bot bypass
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to download images from URLs and perform basic image optimization tasks.22017Apache 2.0
- AlicenseBqualityDmaintenanceEnables Claude Desktop to download files from web URLs with automatic browser fallback for JavaScript-heavy sites. Supports smart redirect handling, custom file naming, and cross-platform compatibility.1174MIT
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI to upload local files to RustFS storage service and download files from HTTP/HTTPS URLs to local paths. Built with FastMCP and RustFS SDK for seamless file operations through natural language.
- AlicenseBqualityFmaintenanceA Model Context Protocol (MCP) server that enables AI assistants to download files from URLs to the local filesystem.23MIT
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/mutoukenji/mcp-curl-downloader'
If you have feedback or need assistance with the MCP directory API, please join our Discord server