instagram-mcp-server

instagram-mcp-server

MCP server for automatic Instagram publishing — single image, carousel and Reels — via the official Instagram Graph API.

Category
Visit Server

README

instagram-mcp-server

Servidor MCP para publicação automática no Instagram — imagem única, carrossel e Reels — via Instagram Graph API oficial. Projetado para ser operado por um agente (Claude) e rodar no Coolify.

O conteúdo (imagem/vídeo/legenda) é gerado por IA no momento da operação: o agente gera a mídia, hospeda com instagram_upload_media e publica com a tool correspondente. Cada tool executa o fluxo completo da Graph API (cria container → aguarda processamento → publica) em uma única chamada.

Tools expostas

Tool Função
instagram_upload_media Hospeda mídia (base64) e devolve URL pública temporária
instagram_publish_image Publica 1 imagem no feed
instagram_publish_carousel Publica carrossel (2–10 itens, imagem/vídeo)
instagram_publish_reel Publica um Reel (vídeo)
instagram_get_account Dados da conta conectada
instagram_publishing_limit Cota de publicações nas últimas 24h (~50/dia)
instagram_refresh_token Renova o long-lived token (~60 dias)

Pré-requisitos na Meta (fazer uma vez)

Este servidor usa por padrão a Instagram API with Instagram Login (token IGAA…, endpoint graph.instagram.com) — a rota moderna que dispensa Página do Facebook.

  1. Conta Instagram Business ou Creator.
  2. Em developers.facebook.com: criar um App, adicionar o produto Instagram e configurar Instagram Login (Business).
  3. Solicitar as permissões instagram_business_content_publish e instagram_business_basic. Para uso em produção, passar pela App Review da Meta.
  4. Gerar um long-lived access token (IGAA…) e anotar o Instagram User ID (via GET https://graph.instagram.com/v21.0/me?fields=user_id,username).

Guarde IG_USER_ID e IG_ACCESS_TOKEN.

Rota alternativa (Facebook Login): se preferir o token EAA… via Página do Facebook, defina IG_API_BASE=https://graph.facebook.com/v21.0 e siga o fluxo fb_exchange_token para o token.


Deploy no Coolify

  1. Aponte o Coolify para este repositório (build por Dockerfile ou docker-compose).
  2. Defina um domínio público para o serviço (ex.: insta-mcp.duarteapps.cloud) — o Coolify já emite o TLS via Cloudflare.
  3. Configure as variáveis de ambiente (ver .env.example):
    • IG_USER_ID, IG_ACCESS_TOKEN
    • PUBLIC_BASE_URL = o domínio público acima (a Graph API baixa a mídia daqui)
    • MCP_AUTH_TOKEN = um token aleatório forte
    • (opcional) FB_APP_ID, FB_APP_SECRET para renovar o token
  4. Garanta que a porta 3000 está exposta e o healthcheck aponta para /health.

O endpoint MCP fica em https://insta-mcp.duarteapps.cloud/mcp.


Conectar como MCP no Claude

Adicione um conector MCP HTTP:

  • URL: https://insta-mcp.duarteapps.cloud/mcp
  • Header: Authorization: Bearer <MCP_AUTH_TOKEN>

Teste rápido:

curl -X POST https://insta-mcp.duarteapps.cloud/mcp \
  -H "Authorization: Bearer $MCP_AUTH_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Fluxo típico operado pelo agente

  1. instagram_get_account → confirma que a conta/token estão OK.
  2. (IA gera a imagem/vídeo) → instagram_upload_media → recebe a url.
  3. instagram_publish_image / _carousel / _reel com a url + caption.
  4. instagram_publishing_limit → confere a cota antes de lotes.

Requisitos de mídia (resumo)

  • Imagem: JPG/PNG, 4:5 a 1.91:1, até 8 MB.
  • Reel: MP4/MOV H.264, 3 s a 15 min, até ~1 GB, 9:16 recomendado.
  • Carrossel: 2 a 10 itens.

Limitações da API (por design da Meta)

  • Stories têm suporte limitado na Content Publishing API.
  • Curtir, seguir, comentar e enviar DM automatizados são proibidos pelos Termos — não implementados aqui de propósito.
  • ~50 publicações por conta a cada 24 h.

Desenvolvimento local

npm install
npm run build
MCP_AUTH_TOKEN=dev PUBLIC_BASE_URL=http://localhost:3000 \
IG_USER_ID=... IG_ACCESS_TOKEN=... npm start

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
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

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