Model Context Protocol · LinkedIn Posts API — perfil pessoal
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.
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.
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.
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.
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.
15 tools agrupadas por função — da conexão à publicação, da imagem ao histórico. Tudo abaixo já está implementado e no ar.
author_urn usado em todo post.confirm=false (padrão) se comporta como uma prévia.https:// e registra a imagem no LinkedIn numa chamada só.Do rascunho ao post: preview_post_text → create_text_post com confirm=true → list_my_posts pra conferir o histórico — com client_request_id garantindo que um retry nunca duplica.
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.
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.
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.
# URL do connector https://mcp-linkedin-pi.vercel.app/api/mcp
linkedin_token_status e get_connected_profile — eles mostram o membro conectado e quantos dias restam do token.Pedidos reais que o servidor resolve de ponta a ponta — nada publica sem confirm=true.
# 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
"Publica"
# → create_text_post com confirm=true"Lista meus últimos posts publicados
por este MCP"
# → list_my_posts (fonte de verdade própria)Ficou alguma dúvida? Escreva para bruno@b2tech.io.
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.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.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.linkedin_token_status mostra quantos dias restam.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.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