Skip to main content
Glama
dmitryglhf
by dmitryglhf
README.md
# MCP URL Downloader

A Model Context Protocol (MCP) server that enables AI assistants to download files from URLs to the local filesystem.

<a href="https://glama.ai/mcp/servers/@dmitryglhf/url-download-mcp">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/@dmitryglhf/url-download-mcp/badge" alt="mcp-ping MCP server" />
</a>


## Features

- Download single or multiple files from URLs with concurrent support
- File size validation (configurable, default 500MB)
- Unique filename generation to prevent overwrites
- Security

## Installation

```bash
# Using uvx (recommended)
uvx mcp-url-downloader

# Using pip
pip install mcp-url-downloader

# From source
git clone https://github.com/dmitryglhf/mcp-url-downloader.git
cd mcp-url-downloader
uv sync
```

## Configuration

### Claude Desktop

To integrate server with Claude, add the following to your `claude_desktop_config.json` file:

```json
{
  "mcpServers": {
    "url-downloader": {
      "command": "uvx",
      "args": ["mcp-url-downloader"]
    }
  }
}
```
## Tools

### `download_single_file`
Download a single file from a URL with optional custom filename.

**Parameters:**
- `url` (string, required): URL of the file to download
  - Must be a valid HTTP/HTTPS URL
  - Maximum length: 2048 characters
- `output_dir` (string, optional): Directory to save the file
  - Default: `~/Downloads/mcp-downloads/`
  - Must be a valid writable directory path
- `filename` (string, optional): Custom filename for the saved file
  - If not provided, extracted from URL
  - Will be sanitized automatically
  - Extension will be preserved or detected
- `timeout` (number, optional): Download timeout in seconds
  - Default: `60`
  - Range: `1-300`
- `max_size_mb` (number, optional): Maximum file size in MB
  - Default: `500`
  - Range: `1-5000`

### `download_files`
Download multiple files from URLs concurrently.

**Parameters:**
- `urls` (array of strings, required): List of URLs to download
  - Each URL must be valid HTTP/HTTPS
  - Maximum: 100 URLs per request
  - Each URL max length: 2048 characters
- `output_dir` (string, optional): Directory to save all files
  - Default: `~/Downloads/mcp-downloads/`
  - All files will be saved to this directory
- `timeout` (number, optional): Download timeout in seconds per file
  - Default: `60`
  - Range: `1-300`
- `max_size_mb` (number, optional): Maximum file size in MB per file
  - Default: `500`
  - Range: `1-5000`


### Rate Limits

- Maximum 100 URLs per `download_files` request
- Maximum concurrent downloads: 10 (configurable up to 50)
- URL length limited to 2048 characters
- Timeout range: 1-300 seconds
- File size range: 1-5000 MB


## Development

```bash
# Run tests
uv run pytest
```

TDQS

B3.1/5.0

Scored across 2 tools

Disambiguation3/5

The two tools have overlapping purposes—both download files from URLs—but their descriptions help differentiate them: one handles multiple files, the other a single file with optional custom naming. However, the core functionality is similar, which could lead to confusion about when to use each.

Naming Consistency5/5

The tool names follow a consistent verb_noun pattern with snake_case throughout: 'download_files' and 'download_single_file'. Both start with 'download' and clearly describe their scope, making the naming predictable and easy to understand.

Tool Count3/5

With only 2 tools, the server feels thin for a URL download domain, as it lacks operations like checking download status, handling errors, or managing downloads. While the tools cover basic downloading, the count is borderline for providing a complete surface.

Completeness2/5

The tool set is significantly incomplete for a URL download server. It lacks essential operations such as validating URLs, pausing/resuming downloads, handling authentication, or providing progress updates. This will likely cause agent failures in more complex scenarios.

Maintenance

ActivityInactive
ResponsivenessUnresponsive