abdm-mcp
AB Download Manager MCP Server (abdm-mcp)
MCP server for AB Download Manager. Connects AI coding assistants and autonomous agents (Claude Desktop, OpenAI Codex & ChatGPT, Google Antigravity, Kimi, Cursor, Windsurf, Cline, Zed) to ABDM so they can offload large downloads—model weights, datasets, and archives—with multi-threaded acceleration (up to 32 connections), pause/resume, and queueing instead of choking on single-threaded agent HTTP calls.
Quick Start
Run with uvx (No installation needed)
uvx abdm-mcpNetwork Transports (SSE & HTTP)
# Run with Server-Sent Events (SSE) for remote/containerized agents
uvx abdm-mcp --transport sse --port 8000
# Run with Streamable HTTP
uvx abdm-mcp --transport streamable-http --port 8000Install with pip
pip install abdm-mcp
python -m abdm_mcpAgent Configuration
abdm-mcp complies with the Model Context Protocol standard and works across all major AI coding agents, IDEs, and assistant platforms.
1. Claude Desktop
Add to your claude_desktop_config.json:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"abdm": {
"command": "uvx",
"args": ["abdm-mcp"],
"env": {
"ABDM_MCP_DEFAULT_MODE": "interactive",
"ABDM_API_KEY": "your_api_key_if_configured"
}
}
}
}2. OpenAI Codex & ChatGPT Desktop
Add to ~/.codex/config.toml (global) or .codex/config.toml (project-scoped):
[mcp_servers.abdm]
command = "uvx"
args = ["abdm-mcp"]
env = { "ABDM_MCP_DEFAULT_MODE" = "headless" }Or add via the Codex CLI:
codex mcp add abdm -- uvx abdm-mcp3. Google Antigravity
Add to your workspace or user mcp.json:
{
"mcpServers": {
"abdm": {
"command": "uvx",
"args": ["abdm-mcp"]
}
}
}4. Kimi (Moonshot AI / Kimi CLI)
Add to your Kimi Agent configuration (kimi_mcp.json or agent settings):
{
"mcpServers": {
"abdm": {
"command": "uvx",
"args": ["abdm-mcp"],
"env": {
"ABDM_MCP_DEFAULT_MODE": "headless"
}
}
}
}5. Cursor
Add to your project's .cursor/mcp.json or Cursor Settings > Features > MCP:
{
"mcpServers": {
"abdm": {
"command": "uvx",
"args": ["abdm-mcp"]
}
}
}6. Windsurf (Codeium)
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"abdm": {
"command": "uvx",
"args": ["abdm-mcp"]
}
}
}7. Cline & Roo Code (VS Code)
Open Settings in Cline / Roo Code and add under MCP Servers:
{
"mcpServers": {
"abdm": {
"command": "uvx",
"args": ["abdm-mcp"]
}
}
}8. Zed Editor
Add to ~/.config/zed/settings.json:
{
"context_servers": {
"abdm": {
"command": {
"env": {},
"path": "uvx",
"args": ["abdm-mcp"]
}
}
}
}9. Continue.dev
Add to ~/.continue/config.json:
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "uvx",
"args": ["abdm-mcp"]
}
}
]
}
}10. Goose (Block)
Run the extension add command or add to ~/.config/goose/config.yaml:
goose configure add-extension --name abdm --command uvx --args abdm-mcpTool Surface & Capabilities
All tools return strongly-typed Pydantic schemas and include explicit MCP Tool Annotations:
Tool Name | Parameters | MCP Annotations | Description |
|
|
| Submits a download. Fails fast with |
|
|
| Enqueues up to 50 URLs in a batch with partial success tracking. |
| none |
| Fetches configured download queues from ABDM. |
| none |
| Probes REST reachability, authentication, CLI status, and active capabilities. |
|
|
| Lists current downloads reported by ABDM. |
|
|
| Returns status and metadata for a single download task by ID. |
|
|
| Pauses an active download task. |
|
|
| Resumes a paused download task. |
|
|
| Cancels and removes a download task. File deletion requires policy opt-in and path verification. |
Security & Sandboxing Guardrails
Autonomous agents are powerful, but should not have unrestricted filesystem or network write access. abdm-mcp implements defense-in-depth:
Path Sandboxing: By default, headless downloads are strictly confined to
~/Downloads/ABDM. Path traversal escapes (../) and absolute paths outside allowed roots are rejected.Private-Network URL Guard: Protects against SSRF by rejecting direct requests to
localhost,127.0.0.0/8,::1, RFC1918 LAN subnets (10.0.0.0/8,172.16.0.0/12,192.168.0.0/16), and link-local metadata endpoints (169.254.169.254).Filename Sanitization: Rejects slashes, drive prefixes, control characters, and reserved Windows device names (
CON,PRN,AUX,NUL, etc.).Header Protection: Blocks sensitive headers (
Cookie,Authorization,Proxy-Authorization,Host) by default to prevent credential leakage.Safe Subprocess Execution: The CLI backend strictly uses
asyncio.create_subprocess_exec(nevershell=True) with bounded streaming readers (1MB limit) and hard execution timeouts.
Environment Variables
Variable | Default | Description |
|
| Custom or portable configuration directory path. |
|
| Port of the ABDM local integration server (auto-discovered from |
| None | Optional authentication key configured in ABDM. |
| Auto-detected | Explicit path to |
|
| Default mode: |
|
| Comma-separated list of allowed download directories. |
|
| Set to |
|
| Set to |
|
| Set to |
|
| Maximum URLs accepted in a single |
Development & Testing
# Clone the repository
git clone https://github.com/shivamtawari/ab-download-manager-mcp.git
cd ab-download-manager-mcp
# Install dependencies with uv
uv sync --all-groups
# Run full test suite
uv run pytest tests/
# Run linting
uv run ruff check .License
MIT License. See LICENSE for details.
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/shivamtawari/ab-download-manager-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server