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.
publishId em cada chamada MCP para autorizar a operação na conta correta.Fluxo de uso
- Acesse Redes Sociais → Credenciais MCP e crie uma credencial para a plataforma desejada.
- Copie o Publish ID gerado (formato
sc_ins_xxxxx/sc_lin_xxxxx/sc_hey_xxxxx). - Conecte seu cliente MCP ao endpoint:
http://<servidor>:3002/mcp - Passe
publishIdcomo argumento em cada ferramenta.
Ferramentas disponíveis
| Ferramenta | Plataforma | Descrição |
|---|---|---|
instagram_publish_image | Publica imagem no feed | |
instagram_publish_reel | Publica Reel (vídeo) | |
instagram_publish_story | Publica Story | |
instagram_publish_carousel | Publica carrossel de imagens | |
instagram_list_recent_media | Lista posts recentes | |
instagram_get_post_metrics | Métricas de engajamento | |
instagram_list_conversations | Lista conversas DM | |
instagram_send_dm | Envia mensagem direta | |
instagram_get_comments | Lista comentários de um post | |
instagram_reply_comment | Responde a um comentário | |
instagram_delete_comment | Remove comentário | |
instagram_hide_comment | Esconde/mostra comentário | |
instagram_account_info | Info da conta | |
linkedin_publish_post | Publica post de texto | |
linkedin_publish_image_post | Publica post com imagem | |
linkedin_publish_article | Publica artigo longo | |
linkedin_list_posts | Lista posts do autor | |
linkedin_get_post_metrics | Likes, comentários, shares | |
linkedin_get_comments | Comentários de um post | |
linkedin_create_comment | Comenta em um post | |
linkedin_send_message | Envia mensagem direta | |
linkedin_list_conversations | Lista conversas DM | |
heygen_list_avatars | HeyGen | Lista avatares disponíveis |
heygen_list_voices | HeyGen | Lista vozes disponíveis |
heygen_generate_video | HeyGen | Gera vídeo com avatar |
heygen_get_video_status | HeyGen | Status do job de geração |
heygen_list_videos | HeyGen | Lista 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étodo | Endpoint | Descrição |
|---|---|---|
GET | /api/social/credentials | Lista todas as credenciais do tenant (tokens mascarados) |
POST | /api/social/credentials | Cria nova credencial e gera publishId |
GET | /api/social/credentials/:id | Detalhe de uma credencial |
PUT | /api/social/credentials/:id | Atualiza credencial |
DELETE | /api/social/credentials/:id | Remove credencial |
POST | /api/social/credentials/:id/regenerate-token | Gera 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).