Como funciona

O MCP Social é um servidor MCP dedicado (porta 3002) que expõe ferramentas para operar Instagram, LinkedIn e HeyGen. Cada credencial tem um Publish ID único que serve como token de autenticação por chamada.

Publish ID: token exclusivo por conta social. Inclua-o como argumento publishId em cada chamada MCP para autorizar a operação na conta correta.

Fluxo de uso

  1. Acesse Redes Sociais → Credenciais MCP e crie uma credencial para a plataforma desejada.
  2. Copie o Publish ID gerado (formato sc_ins_xxxxx / sc_lin_xxxxx / sc_hey_xxxxx).
  3. Conecte seu cliente MCP ao endpoint: http://<servidor>:3002/mcp
  4. Passe publishId como argumento em cada ferramenta.

Ferramentas disponíveis

FerramentaPlataformaDescrição
instagram_publish_imageInstagramPublica imagem no feed
instagram_publish_reelInstagramPublica Reel (vídeo)
instagram_publish_storyInstagramPublica Story
instagram_publish_carouselInstagramPublica carrossel de imagens
instagram_list_recent_mediaInstagramLista posts recentes
instagram_get_post_metricsInstagramMétricas de engajamento
instagram_list_conversationsInstagramLista conversas DM
instagram_send_dmInstagramEnvia mensagem direta
instagram_get_commentsInstagramLista comentários de um post
instagram_reply_commentInstagramResponde a um comentário
instagram_delete_commentInstagramRemove comentário
instagram_hide_commentInstagramEsconde/mostra comentário
instagram_account_infoInstagramInfo da conta
linkedin_publish_postLinkedInPublica post de texto
linkedin_publish_image_postLinkedInPublica post com imagem
linkedin_publish_articleLinkedInPublica artigo longo
linkedin_list_postsLinkedInLista posts do autor
linkedin_get_post_metricsLinkedInLikes, comentários, shares
linkedin_get_commentsLinkedInComentários de um post
linkedin_create_commentLinkedInComenta em um post
linkedin_send_messageLinkedInEnvia mensagem direta
linkedin_list_conversationsLinkedInLista conversas DM
heygen_list_avatarsHeyGenLista avatares disponíveis
heygen_list_voicesHeyGenLista vozes disponíveis
heygen_generate_videoHeyGenGera vídeo com avatar
heygen_get_video_statusHeyGenStatus do job de geração
heygen_list_videosHeyGenLista vídeos gerados

Instagram Business API

Todas as ferramentas usam a Meta Graph API v21.0. Você precisa de um token de acesso de uma conta Instagram Business com as permissões: instagram_basic, instagram_content_publish, instagram_manage_comments, instagram_manage_messages.

instagram_publish_image

{
  "publishId": "sc_ins_xxxxxxxxxxxx",
  "imageUrl": "https://example.com/foto.jpg",
  "caption": "Legenda do post #hashtag"
}

instagram_publish_reel

{
  "publishId": "sc_ins_xxxxxxxxxxxx",
  "videoUrl": "https://example.com/video.mp4",
  "caption": "Legenda do Reel"
}

instagram_publish_carousel

{
  "publishId": "sc_ins_xxxxxxxxxxxx",
  "items": [
    { "type": "IMAGE", "url": "https://example.com/img1.jpg" },
    { "type": "IMAGE", "url": "https://example.com/img2.jpg" }
  ],
  "caption": "Carrossel de fotos"
}

instagram_get_post_metrics

{
  "publishId": "sc_ins_xxxxxxxxxxxx",
  "mediaId": "17846368219941196"
}

Retorna: likes_count, comments_count, reach, impressions, saved.

instagram_reply_comment

{
  "publishId": "sc_ins_xxxxxxxxxxxx",
  "commentId": "17858893269000001",
  "message": "Obrigado pelo comentário!"
}

LinkedIn API

Usa LinkedIn API v2. O token de acesso precisa dos escopos: w_member_social, r_liteprofile, r_emailaddress. Para mensagens: w_messages.

O campo Account ID na credencial deve conter o Author URN: urn:li:person:xxxxxxxxxx.

linkedin_publish_post

{
  "publishId": "sc_lin_xxxxxxxxxxxx",
  "text": "Conteúdo do post no LinkedIn",
  "visibility": "PUBLIC"
}

linkedin_publish_image_post

{
  "publishId": "sc_lin_xxxxxxxxxxxx",
  "text": "Post com imagem",
  "imageUrl": "https://example.com/imagem.jpg",
  "title": "Título da imagem (opcional)"
}

linkedin_publish_article

{
  "publishId": "sc_lin_xxxxxxxxxxxx",
  "title": "Título do Artigo",
  "text": "Conteúdo completo do artigo em texto...",
  "description": "Descrição resumida"
}

linkedin_create_comment

{
  "publishId": "sc_lin_xxxxxxxxxxxx",
  "postId": "urn:li:share:7123456789012345678",
  "text": "Ótimo conteúdo!"
}

linkedin_send_message

{
  "publishId": "sc_lin_xxxxxxxxxxxx",
  "recipientUrn": "urn:li:person:yyyyyyyyyy",
  "text": "Olá! Gostaria de conectar."
}

HeyGen API

Integração com HeyGen API v2. O Access Token é a API Key do HeyGen (obtida em app.heygen.com/settings/api).

heygen_list_avatars

{
  "publishId": "sc_hey_xxxxxxxxxxxx"
}

Retorna lista de avatares com avatar_id, avatar_name, preview_image_url.

heygen_list_voices

{
  "publishId": "sc_hey_xxxxxxxxxxxx",
  "language": "pt"
}

heygen_generate_video

{
  "publishId": "sc_hey_xxxxxxxxxxxx",
  "avatarId": "Angela-inblackskirt-20220820",
  "voiceId": "2d5b0e6cf36f460aa7fc47e3eee4ba54",
  "text": "Olá! Este é um vídeo gerado com inteligência artificial.",
  "title": "Meu Vídeo IA"
}

heygen_get_video_status

{
  "publishId": "sc_hey_xxxxxxxxxxxx",
  "videoId": "abc123def456"
}

Possíveis status: pending, processing, completed, failed. Quando completed, o campo video_url contém o link para download.

REST API — Credenciais

Todas as rotas requerem autenticação via Authorization: Bearer <jwt> ou X-API-Key.

MétodoEndpointDescrição
GET/api/social/credentialsLista todas as credenciais do tenant (tokens mascarados)
POST/api/social/credentialsCria nova credencial e gera publishId
GET/api/social/credentials/:idDetalhe de uma credencial
PUT/api/social/credentials/:idAtualiza credencial
DELETE/api/social/credentials/:idRemove credencial
POST/api/social/credentials/:id/regenerate-tokenGera novo publishId (invalida o anterior)

Exemplo — Criar credencial Instagram

POST /api/social/credentials
Authorization: Bearer <token>
Content-Type: application/json

{
  "platform": "instagram",
  "label": "Conta Empresa Principal",
  "accessToken": "EAAxxxxxxxxxxxxxxxx",
  "accountId": "17841400000000001",
  "accountName": "@empresa",
  "metaAppId": "1234567890",
  "metaAppSecret": "abcdef123456"
}

Resposta de criação

{
  "ok": true,
  "data": {
    "id": 1,
    "publishId": "sc_ins_b0da91d359e39e1e414b57de45a576e3",
    "platform": "instagram",
    "label": "Conta Empresa Principal"
  }
}

MCP Social Server

Servidor MCP rodando em http://<servidor>:3002/mcp (acessível internamente).

Endpoint de saúde: GET http://<servidor>:3002/health

A variável de ambiente MCP_SOCIAL_PORT permite alterar a porta (padrão: 3002).