mcp-instagram-dm
Lee, envía, busca y gestiona mensajes directos de Instagram a través de asistentes de IA mediante MCP. 15 herramientas, autenticación basada en cookies, dependencia única.
Documentación
📨 MCP Instagram DM
Controla tus DMs de Instagram con IA
Lee, envía, busca y gestiona mensajes directos de Instagram mediante lenguaje natural con cualquier asistente de IA compatible con MCP.
Un servidor de Model Context Protocol que conecta los mensajes directos de Instagram con asistentes de IA como Claude, Cursor y cualquier cliente compatible con MCP.
Autenticación basada en cookies: sin claves API, sin OAuth, simplemente funciona.
Primeros pasos · Características · Configuración · Referencia de herramientas · Contribuciones
💡 Si te resulta útil, considera darle una ⭐: ¡ayuda a que otros descubran el proyecto!
⚡ Primeros pasos
Ponte en marcha en menos de 60 segundos:
1. Añádelo a tu configuración de MCP (Claude Desktop, Claude Code o 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. Habla con tu asistente de IA:
"Lee mis DMs de Instagram"
Eso es todo: estás listo. 🎉
¿Necesitas ayuda para obtener tus cookies? Consulta Configuración más abajo.
🎬 Cómo se ve
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!"
✨ Características
15 herramientas en tres categorías: todo lo que necesitas para gestionar tus DMs de Instagram:
📥 Leer y supervisar
| Herramienta | Descripción |
|---|---|
instagram_get_inbox | Lista las conversaciones de DM recientes con indicadores de no leídos/grupo/silenciados |
instagram_get_thread | Obtén mensajes de una conversación (auto-paginación: recupera más de 500 mensajes de una vez) |
instagram_get_pending | Lista las solicitudes de DM pendientes que esperan tu aprobación |
instagram_user_info | Obtén el perfil de cualquier usuario: biografía, seguidores, publicaciones, verificación |
instagram_thread_info | Metadatos del hilo: participantes, información del grupo, estado de silencio/archivo |
✏️ Enviar y gestionar
| Herramienta | Descripción |
|---|---|
instagram_send_message | Envía un mensaje de texto en cualquier hilo |
instagram_send_link | Comparte una URL con pie opcional |
instagram_create_thread | Inicia un nuevo DM con uno o varios usuarios |
instagram_like_message | Reacciona a cualquier mensaje con cualquier emoji |
instagram_unsend_message | Elimina tus propios mensajes |
instagram_mark_seen | Marca una conversación como leída |
instagram_approve_pending | Aprueba una solicitud de DM pendiente |
🔍 Buscar y descubrir
| Herramienta | Descripción |
|---|---|
instagram_search_inbox | Busca conversaciones por nombre de usuario o nombre (escanea todas las páginas) |
instagram_search_messages | Encuentra mensajes que contengan texto específico dentro de un hilo |
instagram_search_users | Busca usuarios de Instagram para iniciar nuevas conversaciones |
📦 Instalación
npx (recomendado: instalación cero)
npx mcp-instagram-dm
npm global
npm install -g mcp-instagram-dm
mcp-instagram-dm
Desde el código fuente
git clone https://github.com/KynuxDev/mcp-instagram-dm.git
cd mcp-instagram-dm
npm install && npm run build
node dist/index.js
🔧 Configuración
Obtener tus cookies
- Abre instagram.com en Chrome e inicia sesión
- Pulsa
F12→ pestaña Application → Cookies →https://www.instagram.com - Copia estos tres valores:
| Nombre de la cookie | Variable de entorno | Descripción |
|---|---|---|
sessionid | INSTAGRAM_SESSION_ID | Tu token de sesión |
csrftoken | INSTAGRAM_CSRF_TOKEN | Token de protección CSRF |
ds_user_id | INSTAGRAM_DS_USER_ID | Tu ID de usuario numérico |
💡 Consejo: También puedes ejecutar
node get-cookies.jspara una guía paso a paso.
Variables de entorno
| Variable | Requerida | Predeterminado | Descripción |
|---|---|---|---|
INSTAGRAM_SESSION_ID | ✅ | — | Tu cookie de sesión de Instagram |
INSTAGRAM_CSRF_TOKEN | ✅ | — | Token CSRF de las cookies |
INSTAGRAM_DS_USER_ID | ✅ | — | Tu ID de usuario numérico |
INSTAGRAM_RATE_LIMIT_MS | — | 300 | Retraso entre solicitudes de API paginadas (ms) |
Configuración del cliente
Claude Desktop
Edita ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %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"
}
}
}
}
Claude Code
Añade a .mcp.json de tu proyecto:
{
"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"
}
}
}
}
Cursor
Añade a .cursor/mcp.json en tu proyecto:
{
"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"
}
}
}
}
💬 Ejemplos de uso
Simplemente habla de forma natural con tu asistente de IA:
| Lo que dices | Lo que ocurre |
|---|---|
| "Lee mis DMs de Instagram no leídos" | Obtiene la bandeja de entrada con indicadores de no leídos |
| "Envía '¡Hola!' a @username" | Encuentra el hilo y envía el mensaje |
| "Busca en mis DMs mensajes sobre 'reunión'" | Escanea los mensajes del hilo en busca de la palabra clave |
| "Inicia una nueva conversación con @johndoe" | Crea un nuevo hilo y envía tu mensaje |
| "Muéstrame las solicitudes de DM pendientes y apruébalas" | Lista y aprueba las solicitudes pendientes |
| "¿Cuál es la información del perfil de @user?" | Obtiene todos los detalles del perfil |
| "Obtén los últimos 200 mensajes con @friend" | Auto-pagina para obtener todos los mensajes |
| "Reacciona con 🔥 al último mensaje" | Envía una reacción con emoji a cualquier mensaje |
📖 Referencia de herramientas
Ver las 15 herramientas con parámetros
| Herramienta | Descripción | Parámetros |
|---|---|---|
instagram_get_inbox | Lista conversaciones de DM | limit?, cursor? |
instagram_get_thread | Obtiene mensajes del hilo (auto-paginación) | thread_id, limit?, cursor? |
instagram_get_pending | Lista solicitudes pendientes | limit?, cursor? |
instagram_user_info | Obtiene perfil de usuario | user_id |
instagram_thread_info | Obtiene detalles del hilo | thread_id |
instagram_send_message | Envía mensaje de texto | thread_id, text |
instagram_send_link | Comparte una URL | thread_id, url, text? |
instagram_create_thread | Inicia nuevo DM | recipient_ids[], text |
instagram_like_message | Reacciona con emoji | thread_id, item_id, emoji? |
instagram_unsend_message | Elimina un mensaje | thread_id, item_id |
instagram_mark_seen | Marca como leído | thread_id, item_id |
instagram_approve_pending | Aprueba solicitud | thread_id |
instagram_search_inbox | Busca conversaciones | query, max_pages? |
instagram_search_messages | Busca dentro del hilo | thread_id, query, max_messages? |
instagram_search_users | Encuentra usuarios | query |
🏗️ Arquitectura
┌─────────────────────┐ 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) │
└──────────────────────┘
Principios de diseño:
- Dependencia única: solo
@modelcontextprotocol/sdk. Sin axios, sin puppeteer, sin inflado. - TypeScript estricto: cero tipos
any, interfaces totalmente tipadas ensrc/types.ts - Auto-paginación: solicita 500 mensajes y el servidor se encarga del resto con limitación de velocidad
- Más de 14 tipos de mensajes: texto, multimedia, voz, reels, enlaces, clips, GIFs, publicaciones, historias y más
🔒 Seguridad
- Las cookies de sesión nunca se registran ni se almacenan más allá del tiempo de ejecución
- Todas las credenciales se leen únicamente de variables de entorno
- No se envían datos a ningún servicio de terceros
- Consulta SECURITY.md para informar vulnerabilidades
⚠️ Aviso legal
Este proyecto utiliza la API web no oficial de Instagram, que puede cambiar sin previo aviso.
- Solo para uso personal: no lo uses para spam, mensajes masivos o automatización que viole los Términos de servicio de Instagram
- Tus cookies de sesión son credenciales sensibles: nunca las compartas ni las subas a un repositorio
- Este proyecto no está afiliado, respaldado ni conectado con Meta o Instagram
- Úsalo bajo tu propio riesgo: los autores no son responsables de ninguna restricción de cuenta
🤝 Contribuciones
¡Las contribuciones son bienvenidas! Consulta CONTRIBUTING.md para la configuración de desarrollo y las pautas.
Si deseas apoyar el proyecto económicamente, considera patrocinar en GitHub.
📄 Licencia
Si este proyecto te ayudó, considera darle una ⭐