MCP LINKEDIN B2 TECH

Model Context Protocol · LinkedIn Posts API — perfil pessoal

Publique no LinkedIn
direto pelo Claude.

Um servidor MCP que liga o Claude ao seu perfil pessoal do LinkedIn — componha posts de texto, imagem única ou carrossel de até 20 imagens, veja a prévia exata antes de publicar e mande com confirm=true. Idempotência e teto diário evitam duplicidade. Login nativo do LinkedIn, sem senha guardada aqui. Status: LIVE.

15 tools · perfil pessoal · confirm gate · multi-tenant

LinkedIn Posts API — perfil pessoal Nada publica sem confirm=true Idempotência anti-duplicata Teto diário + circuit breaker 429 OAuth 2.1 + PKCE Tokens AES-256-GCM Multi-tenant na Vercel LinkedIn Posts API — perfil pessoal Nada publica sem confirm=true Idempotência anti-duplicata Teto diário + circuit breaker 429 OAuth 2.1 + PKCE Tokens AES-256-GCM Multi-tenant na Vercel
O que é

Seu perfil, operado em linguagem natural

O MCP LINKEDIN B2 TECH é um servidor Model Context Protocol que dá ao Claude acesso real ao seu perfil pessoal do LinkedIn — não um chatbot que finge que postou, mas chamadas tipadas na LinkedIn Posts API.

Conexão real

Claude fala com o seu perfil pessoal

Compõe hashtags, menções e legendas; publica texto, uma imagem ou um carrossel de 2 a 20 imagens direto na Posts API do LinkedIn, com visibilidade PUBLIC ou CONNECTIONS. Sempre em urn:li:person — o perfil pessoal do membro que autorizou, nunca uma Company Page.

Prévia antes de publicar

Você vê o texto exato antes do LinkedIn ver

preview_post_text compõe e escapa o little text format do LinkedIn sem gastar uma chamada de API. Todo create_* nasce com confirm=false — publicar e apagar exigem confirm=true explícito, sempre.

Status

LIVE em produção

Deploy multi-tenant em mcp-linkedin-pi.vercel.app — OAuth 2.1 Authorization Server embutido com o consentimento nativo do LinkedIn, tokens cifrados em Supabase, estado efêmero no Upstash.

O que ele já faz

O catálogo completo de ferramentas

15 tools agrupadas por função — da conexão à publicação, da imagem ao histórico. Tudo abaixo já está implementado e no ar.

Conexão & perfil

4 tools
  • linkedin_token_statusValida a credencial junto ao LinkedIn e mostra quantos dias restam do token de 60 dias.
  • get_connected_profileO membro por trás da credencial, incluindo o author_urn usado em todo post.
  • linkedin_loginNo modo hospedado, só reporta se você está conectado — o login acontece no handshake OAuth do próprio connector.
  • linkedin_submit_callbackNo modo hospedado é um no-op; existe para o modo local (stdio) de desenvolvimento.

Publicação

6 · confirm=true
  • preview_post_textCompõe e valida sem publicar — zero chamadas ao LinkedIn.
  • create_text_postPublica texto. confirm=false (padrão) se comporta como uma prévia.
  • create_image_postPublica uma imagem com legenda.
  • create_multi_image_postPublica um carrossel de 2 a 20 imagens.
  • update_post_commentarySubstitui o texto de um post publicado (mídia e tipo não mudam).
  • delete_postApaga um post pra sempre. Confirm-gated, irreversível.

Mídia

2 tools
  • upload_image_from_urlCaminho principal: o servidor baixa uma URL pública https:// e registra a imagem no LinkedIn numa chamada só.
  • upload_imageO mesmo, a partir de base64 — só para imagens pequenas ou geradas.

Histórico & limites

3 tools
  • get_postLê um post pelo URN. Pode devolver 403 no tier self-serve do LinkedIn — ACL da própria LinkedIn, não é falha daqui.
  • list_my_postsO histórico de publicação do próprio servidor — URN, status e um trecho do texto. O caminho de leitura confiável.
  • linkedin_usageA contagem de hoje contra o teto diário, e se o circuit breaker de 429 está aberto.

Do rascunho ao post: preview_post_textcreate_text_post com confirm=truelist_my_posts pra conferir o histórico — com client_request_id garantindo que um retry nunca duplica.

Modelo de segurança das publicações

O Claude não publica no seu nome sozinho

Um post é permanente e público — por isso cada write passa por barreiras explícitas antes de sair do rascunho.

Nada publica sem confirm=true

create_text_post, create_image_post, create_multi_image_post e delete_post nascem com confirm=false — sem ele, é sempre uma prévia, nunca uma publicação.

Só o perfil pessoal

Todo post sai assinado como urn:li:person. Publicar numa Company Page pediria escopo w_organization_social e está fora do escopo — impossível acontecer sem querer.

Idempotência com client_request_id

Uma linha é gravada antes do LinkedIn ser chamado; repetir a mesma chave replica o URN salvo em vez de duplicar o post, ou devolve needs_verification quando o resultado é genuinamente incerto.

Teto diário + circuit breaker de 429

Um contador por membro (padrão 50/dia) recusa publicações acima do limite antes de chamar o LinkedIn; um 429 abre um breaker de ~24h — nunca tentamos de novo automaticamente.

Tenant nunca é argumento

Em modo hospedado, o tenant vem só da credencial MCP, derivada do seu login OpenID Connect. Tokens do LinkedIn cifrados com AES-256-GCM; refresh tokens guardados só como hash.

Boundary de mídia contra SSRF

Uploads por URL exigem https, rejeitam redirect e endereços internos/reservados, fixam o IP validado e conferem os magic bytes da imagem em vez de confiar no Content-Type.

Como conectar

Em pé em poucos minutos

Servidor hospedado e multi-tenant, zero setup: adicione o connector, autorize com sua conta LinkedIn e o Claude já compõe e publica pra você — sempre com prévia antes.

Zero setup

Hospedado — mcp-linkedin-pi.vercel.app

Adicione o connector no Claude e autorize com sua conta LinkedIn. Nada para instalar; o login roda inteiro na tela de consentimento nativa do LinkedIn.

  1. Adicione o connector. No claude.ai → Customize → Connectors → + → Add custom connector, cole a URL abaixo. Em contas Team/Enterprise, um Owner adiciona em Organization settings → Connectors.
    # URL do connector
    https://mcp-linkedin-pi.vercel.app/api/mcp
  2. Autorize na tela do LinkedIn. Clique em Connect — você é redirecionado para o consentimento nativo do LinkedIn (OAuth 2.1 com PKCE). Faça login com a conta que vai publicar e aprove.
  3. Confirme. Peça ao Claude para rodar linkedin_token_status e get_connected_profile — eles mostram o membro conectado e quantos dias restam do token.
Primeiros passos

O que pedir ao Claude

Pedidos reais que o servidor resolve de ponta a ponta — nada publica sem confirm=true.

  1. Prévia.
    # você, no chat:
    "Prepara um post no LinkedIn contando
     que lancei o MCP LinkedIn, com a
     hashtag #buildinpublic"
    # → preview_post_text, zero chamadas ao LinkedIn
  2. Publique.
    "Publica"
    # → create_text_post com confirm=true
  3. Confira.
    "Lista meus últimos posts publicados
     por este MCP"
    # → list_my_posts (fonte de verdade própria)

Perguntas frequentes

Ficou alguma dúvida? Escreva para bruno@b2tech.io.

Quanto custa?
O MCP LinkedIn é um benefício exclusivo para alunos do treinamento Claude Code Architect — o acesso ao connector hospedado é liberado pra quem já é aluno. Ainda não é aluno? Conheça o treinamento em claude-code.b2tech.io.
É seguro? O Claude pode publicar sem eu revisar?
Não. Todo create_text_post, create_image_post e create_multi_image_post nasce com confirm=false por padrão — sem confirm=true, a chamada se comporta como uma prévia e nada é publicado. preview_post_text mostra o texto exato antes de qualquer chamada ao LinkedIn, e delete_post também exige confirm=true explícito.
Ele publica na página da empresa ou no meu perfil pessoal?
Só no seu perfil pessoal. Todo post é assinado como urn:li:person — o membro que autorizou o login. Publicar numa Company Page exigiria outro escopo (w_organization_social) e outro caminho de aprovação; está fora do escopo deste servidor.
Preciso instalar alguma coisa?
Não. O connector hospedado e multi-tenant fica em mcp-linkedin-pi.vercel.app — basta adicioná-lo no claude.ai e fazer login com sua conta LinkedIn; a autenticação roda inteira no fluxo OAuth 2.1 nativo do LinkedIn, com PKCE.
O login expira?
Sim, mas raramente exige ação sua. O LinkedIn emite um token de 60 dias sem refresh programático — a cada dois meses, mais ou menos, você reconecta o connector. Com sua sessão ativa e o mesmo escopo, o LinkedIn normalmente pula a tela de consentimento e a reconexão vira um clique só. linkedin_token_status mostra quantos dias restam.
Onde ficam meus tokens?
O token do LinkedIn é cifrado com AES-256-GCM num projeto Supabase. O tenant vem do seu identificador OpenID Connect e nunca é argumento de nenhuma tool. Cada chamada do MCP client usa um JWT ES256 de curto prazo (8h) assinado pelo servidor — uma credencial separada do token de 60 dias do LinkedIn.
Existe um limite de quantos posts eu posso publicar por dia?
Sim — um teto diário por membro (padrão 50 publicações) recusa qualquer publicação acima do limite antes mesmo de chamar o LinkedIn. Se o LinkedIn devolver um 429, um circuit breaker fecha por cerca de 24h — nesse caso nunca tentamos de novo automaticamente, porque o cooldown do LinkedIn é uma janela fixa, não um throttle gradual.
Como evito publicar em duplicidade se minha automação falhar e tentar de novo?
Passe client_request_id (por exemplo, daily-2026-08-22) em qualquer create. Uma linha é gravada antes do LinkedIn ser chamado, então repetir a mesma chave devolve o post já publicado em vez de duplicar — ou reporta needs_verification quando o resultado de uma tentativa anterior é genuinamente desconhecido, em vez de tentar de novo às cegas.
Comece agora

Pare de copiar e colar no LinkedIn.
Peça ao Claude pra compor, revisar e publicar.

Texto, imagem única ou carrossel — sempre com prévia antes, confirm=true pra publicar ou apagar, idempotência contra duplicidade e um teto diário que te protege de qualquer automação descontrolada.

15 tools · login LinkedIn nativo · multi-tenant na Vercel