mcp-instagram-dm

mcp-instagram-dm

MCP server for Instagram Direct Messages. Read inbox, send messages, search conversations, react to messages, manage pending requests, and more. 15 tools with cookie-based authentication.

Category
Visit Server

README

<div align="center">

๐Ÿ“จ MCP Instagram DM

Control your Instagram DMs with AI

Read, send, search, and manage Instagram Direct Messages through natural language with any MCP-compatible AI assistant.

npm version npm downloads GitHub stars

CI License: MIT Node.js TypeScript MCP

<br />

A Model Context Protocol server that bridges Instagram Direct Messages with AI assistants like Claude, Cursor, and any MCP-compatible client.

Cookie-based authentication โ€” no API keys, no OAuth, just works.

<br />

Getting Started ยท Features ยท Configuration ยท Tools Reference ยท Contributing

<br />

๐Ÿ’ก If you find this useful, please consider giving it a โญ โ€” it helps others discover the project!

</div>


โšก Getting Started

Get up and running in under 60 seconds:

1. Add to your MCP config (Claude Desktop, Claude Code, or Cursor):

{
  "mcpServers": {
    "instagram": {
      "command": "npx",
      "args": ["-y", "mcp-instagram-dm"],
      "env": {
        "INSTAGRAM_SESSION_ID": "your_session_id",
        "INSTAGRAM_CSRF_TOKEN": "your_csrf_token",
        "INSTAGRAM_DS_USER_ID": "your_user_id"
      }
    }
  }
}

2. Talk to your AI assistant:

"Read my Instagram DMs"

That's it โ€” you're ready. ๐ŸŽ‰

Need help getting your cookies? See Configuration below.

๐ŸŽฌ What It Looks Like

You:    "Show me my unread Instagram DMs"
Claude: Fetching your inbox...

        ๐Ÿ“ฌ Inbox (3 conversations)

        [UNREAD] john_doe (thread_id: 340282366841710300...)
          Last: [2026-03-29 14:23:01] john_doe: Hey, are you free tonight?

        [UNREAD] [GROUP] project_team (thread_id: 340282366841710301...)
          Last: [2026-03-29 13:45:22] alice: Meeting moved to 3pm

        jane_smith (thread_id: 340282366841710302...)
          Last: [2026-03-29 10:12:45] You: Thanks! See you then

You:    "Reply to john_doe: Yeah, let's meet at 7!"
Claude: โœ… Message sent: "Yeah, let's meet at 7!"

โœจ Features

15 tools across three categories โ€” everything you need to manage your Instagram DMs:

๐Ÿ“ฅ Read & Monitor

Tool Description
instagram_get_inbox List recent DM conversations with unread/group/muted indicators
instagram_get_thread Get messages from a conversation (auto-paginates โ€” fetch 500+ messages at once)
instagram_get_pending List pending DM requests waiting for your approval
instagram_user_info Get any user's profile: bio, followers, posts, verification
instagram_thread_info Thread metadata: participants, group info, mute/archive status

โœ๏ธ Send & Manage

Tool Description
instagram_send_message Send a text message in any thread
instagram_send_link Share a URL with optional caption
instagram_create_thread Start a new DM with one or multiple users
instagram_like_message React to any message with any emoji
instagram_unsend_message Unsend your own messages
instagram_mark_seen Mark a conversation as read
instagram_approve_pending Approve a pending DM request

๐Ÿ” Search & Discover

Tool Description
instagram_search_inbox Search conversations by username or name (scans all pages)
instagram_search_messages Find messages containing specific text within a thread
instagram_search_users Search Instagram users to start new conversations

๐Ÿ“ฆ Installation

npx (recommended โ€” zero install)

npx mcp-instagram-dm

npm global

npm install -g mcp-instagram-dm
mcp-instagram-dm

From source

git clone https://github.com/KynuxDev/mcp-instagram-dm.git
cd mcp-instagram-dm
npm install && npm run build
node dist/index.js

๐Ÿ”ง Configuration

Getting Your Cookies

  1. Open instagram.com in Chrome and log in
  2. Press F12 โ†’ Application tab โ†’ Cookies โ†’ https://www.instagram.com
  3. Copy these three values:
Cookie Name Environment Variable Description
sessionid INSTAGRAM_SESSION_ID Your session token
csrftoken INSTAGRAM_CSRF_TOKEN CSRF protection token
ds_user_id INSTAGRAM_DS_USER_ID Your numeric user ID

๐Ÿ’ก Tip: You can also run node get-cookies.js for a guided walkthrough.

Environment Variables

Variable Required Default Description
INSTAGRAM_SESSION_ID โœ… โ€” Your Instagram session cookie
INSTAGRAM_CSRF_TOKEN โœ… โ€” CSRF token from cookies
INSTAGRAM_DS_USER_ID โœ… โ€” Your numeric user ID
INSTAGRAM_RATE_LIMIT_MS โ€” 300 Delay between paginated API requests (ms)

Client Setup

<details> <summary><b>Claude Desktop</b></summary> <br />

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "instagram": {
      "command": "npx",
      "args": ["-y", "mcp-instagram-dm"],
      "env": {
        "INSTAGRAM_SESSION_ID": "your_session_id",
        "INSTAGRAM_CSRF_TOKEN": "your_csrf_token",
        "INSTAGRAM_DS_USER_ID": "your_user_id"
      }
    }
  }
}

</details>

<details> <summary><b>Claude Code</b></summary> <br />

Add to your project's .mcp.json:

{
  "mcpServers": {
    "instagram": {
      "command": "npx",
      "args": ["-y", "mcp-instagram-dm"],
      "env": {
        "INSTAGRAM_SESSION_ID": "your_session_id",
        "INSTAGRAM_CSRF_TOKEN": "your_csrf_token",
        "INSTAGRAM_DS_USER_ID": "your_user_id"
      }
    }
  }
}

</details>

<details> <summary><b>Cursor</b></summary> <br />

Add to .cursor/mcp.json in your project:

{
  "mcpServers": {
    "instagram": {
      "command": "npx",
      "args": ["-y", "mcp-instagram-dm"],
      "env": {
        "INSTAGRAM_SESSION_ID": "your_session_id",
        "INSTAGRAM_CSRF_TOKEN": "your_csrf_token",
        "INSTAGRAM_DS_USER_ID": "your_user_id"
      }
    }
  }
}

</details>

๐Ÿ’ฌ Usage Examples

Just talk naturally to your AI assistant:

What you say What happens
"Read my unread Instagram DMs" Fetches inbox with unread indicators
"Send 'Hey!' to @username" Finds the thread and sends the message
"Search my DMs for messages about 'meeting'" Scans thread messages for the keyword
"Start a new conversation with @johndoe" Creates a new thread and sends your message
"Show me pending DM requests and approve them" Lists and approves pending requests
"What's @user's profile info?" Fetches full profile details
"Get the last 200 messages with @friend" Auto-paginates to fetch all messages
"React with ๐Ÿ”ฅ to the last message" Sends emoji reaction to any message

๐Ÿ“– Tools Reference

<details> <summary><b>View all 15 tools with parameters</b></summary> <br />

Tool Description Parameters
instagram_get_inbox List DM conversations limit?, cursor?
instagram_get_thread Get thread messages (auto-paginates) thread_id, limit?, cursor?
instagram_get_pending List pending requests limit?, cursor?
instagram_user_info Get user profile user_id
instagram_thread_info Get thread details thread_id
instagram_send_message Send text message thread_id, text
instagram_send_link Share a URL thread_id, url, text?
instagram_create_thread Start new DM recipient_ids[], text
instagram_like_message React with emoji thread_id, item_id, emoji?
instagram_unsend_message Unsend a message thread_id, item_id
instagram_mark_seen Mark as read thread_id, item_id
instagram_approve_pending Approve request thread_id
instagram_search_inbox Search conversations query, max_pages?
instagram_search_messages Search within thread thread_id, query, max_messages?
instagram_search_users Find users query

</details>

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     MCP (stdio)     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   AI Assistant       โ”‚โ—„โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บโ”‚   MCP Server          โ”‚
โ”‚   (Claude, Cursor)   โ”‚                     โ”‚   src/index.ts        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                     โ”‚   15 tools            โ”‚
                                             โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                        โ”‚
                                             โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                             โ”‚   Instagram Client    โ”‚
                                             โ”‚   src/instagram.ts    โ”‚
                                             โ”‚   Cookie auth + HTTP  โ”‚
                                             โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                                        โ”‚
                                             โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                             โ”‚   Instagram Web API   โ”‚
                                             โ”‚   (Private endpoints) โ”‚
                                             โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Design principles:

  • Single dependency โ€” only @modelcontextprotocol/sdk. No axios, no puppeteer, no bloat.
  • TypeScript strict โ€” zero any types, fully typed interfaces in src/types.ts
  • Auto-pagination โ€” request 500 messages and the server handles the rest with rate limiting
  • 14+ message types โ€” text, media, voice, reels, links, clips, GIFs, posts, stories, and more

๐Ÿ”’ Security

  • Session cookies are never logged or stored beyond runtime
  • All credentials are read from environment variables only
  • No data is sent to any third-party service
  • See SECURITY.md for reporting vulnerabilities

โš ๏ธ Disclaimer

This project uses Instagram's unofficial web API, which may change without notice.

  • Personal use only โ€” do not use for spam, mass messaging, or automation that violates Instagram's Terms of Service
  • Your session cookies are sensitive credentials โ€” never share or commit them
  • This project is not affiliated with, endorsed by, or connected to Meta or Instagram
  • Use at your own risk โ€” the authors are not responsible for any account restrictions

๐Ÿค Contributing

Contributions are welcome! Please see CONTRIBUTING.md for development setup and guidelines.

If you'd like to support the project financially, consider sponsoring on GitHub.

๐Ÿ“„ License

MIT โ€” Made with โค๏ธ by Kynux


<div align="center">

If this project helped you, consider giving it a โญ

Report Bug ยท Request Feature ยท Contribute

</div>

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured