Skip to main content
Glama

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 --quiet

CLI 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 --verbose

Default: http://127.0.0.1:8000

Usage instructions for LLMs / agents

mcp-instagram skill

Prints 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

MCP_INSTAGRAM_OUTPUT_DIR

~/Downloads/instagram

Directory where downloads are saved

MCP_INSTAGRAM_COOKIES_FILE

(empty)

Path to a Netscape-format cookies.txt file

MCP_INSTAGRAM_HTTP_HOST

127.0.0.1

Host for HTTP mode

MCP_INSTAGRAM_HTTP_PORT

8000

Port for HTTP mode

MCP_INSTAGRAM_DEBUG

false

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_video

Download a video, reel, or IGTV. Returns local path and metadata.

download_audio

Download audio only as MP3. Returns local path and metadata.

download_carousel

Download all items in a carousel/sidecar post, or a single image post. Returns list of paths.

get_metadata

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'
A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    A
    maintenance
    An 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 host
    8
    19
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An 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.
    3
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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