mcp-instagram
Provides tools for downloading Instagram videos, reels, audio, and carousels, as well as fetching post metadata.
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-instagramDownload the Instagram reel from https://www.instagram.com/reel/ABC/"
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-instagram
Overview
MCP server for downloading Instagram content (videos, reels, audio, single images, carousels) using yt-dlp, with an instaloader + httpx fallback for image-only posts that yt-dlp refuses. Supports both stdio and HTTP streamable transports, selectable via a CLI argument.
Tech Stack: Python 3.13, FastMCP 2.x, yt-dlp, Typer, Pydantic, OpenTelemetry, Ruff, mypy
Related MCP server: MCP YouTube Downloader
Installation
uv tool install .After installation, the mcp-instagram binary is available system-wide.
Usage
stdio mode (for Claude Desktop, pi)
mcp-instagram stdio
mcp-instagram stdio --verbose
mcp-instagram stdio --quietCLI download
mcp-instagram dl 'https://www.instagram.com/reel/<code>/' # video (transcoded to H.264 if VP9)
mcp-instagram dl 'https://www.instagram.com/p/<code>/' # single image or carousel
mcp-instagram dl --audio 'https://www.instagram.com/reel/<code>/'
mcp-instagram dl -o /tmp/out --force 'https://...' 'https://...'Routing is automatic: get_metadata decides video vs image, image posts go through
instaloader + httpx. Image extensions come from the HTTP Content-Type, since Instagram CDN
URLs often keep a .heic path while serving JPEG bytes. Existing files are skipped unless
--force.
HTTP streamable mode
mcp-instagram http
mcp-instagram http --verboseDefault: http://127.0.0.1:8000
Usage instructions for LLMs / agents
mcp-instagram skillPrints the CLI usage guide (command, options, examples) to stdout. Point an agent at this command instead of embedding the docs in a prompt: on demand, near-zero tokens.
Configuration
All settings are loaded from environment variables (prefix MCP_INSTAGRAM_) or a .env file.
Variable | Default | Description |
|
| Directory where downloads are saved |
| (empty) | Path to a Netscape-format cookies.txt file |
|
| Host for HTTP mode |
|
| Port for HTTP mode |
|
| Enable debug mode |
Copy .env.example to .env and edit as needed. Unrelated keys in .env (for example
INSTAGRAM_USERNAME used by scripts/list-saved.py) are ignored, not rejected.
Claude Desktop / pi MCP config (stdio)
Add to your claude_desktop_config.json or pi MCP config:
{
"mcpServers": {
"mcp-instagram": {
"command": "mcp-instagram",
"args": ["stdio"]
}
}
}Cookies setup
Instagram limits access to public content and blocks most authenticated content without cookies.
To provide cookies, log into Instagram in your browser, export your cookies as a Netscape-format
cookies.txt file (e.g., using the "Get cookies.txt LOCALLY" Chrome extension), save it anywhere
on disk, then set MCP_INSTAGRAM_COOKIES_FILE=/path/to/cookies.txt in your .env or environment.
The file is passed directly to yt-dlp's cookiefile option.
Tools
Tool | Description |
| Download a video, reel, or IGTV. Returns local path and metadata. |
| Download audio only as MP3. Returns local path and metadata. |
| Download all items in a carousel/sidecar post, or a single image post. Returns list of paths. |
| Fetch post metadata without downloading (title, duration, counts, etc.). |
Development
make sync # Install dependencies
make check # Full quality gate (lint, format, typecheck, security, tests)
make test # Run tests only
make run ARGS='stdio --help'This server cannot be installed
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
- AlicenseAqualityAmaintenanceAn MCP server (stdio + HTTP/SSE) that fetches video transcripts/subtitles via yt-dlp, with pagination for large responses. Supports YouTube, Twitter/X, Instagram, TikTok, Twitch, Vimeo, Facebook, Bilibili, VK, Dailymotion. Whisper fallback — transcribes audio when subtitles are unavailable (local or OpenAI API). Works with Cursor and other MCP host819MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for downloading videos and audio from YouTube and hundreds of other sites using yt-dlp.MIT
- FlicenseAqualityDmaintenanceMCP server wrapping yt-dlp for downloading videos and audio from URLs, providing tools to check dependencies, retrieve video metadata, and perform downloads.4
- AlicenseAqualityAmaintenanceAn MCP server that extracts rich metadata (title, description, duration, chapters, subtitles, statistics, etc.) from media URLs across thousands of sites using yt-dlp, and also provides transcript fetching and search capabilities.3MIT
Related MCP Connectors
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
Download YouTube, TikTok, Vimeo, SoundCloud and 6 more platforms from any MCP AI chatbot.
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/smorand/mcp-instagram'
If you have feedback or need assistance with the MCP directory API, please join our Discord server