Universal LinkedIn MCP Server

Servidor MCP Universal LinkedIn para edição de perfil, postagens ricas (mídia, enquetes), threads de mensagens, crescimento de rede e análises com automação de navegador stealth e proteções rigorosas de conta.

Documentação

Universal LinkedIn MCP Server

Model Context Protocol Python 3.10+ Tools: 29 CI License: MIT

Um servidor Model Context Protocol (MCP) de nível de produção que conecta seu assistente de IA (Claude, Grok, Cursor, Antigravity) ao LinkedIn com automação de navegador furtiva semelhante à humana, salvaguardas matemáticas de limites de conta e zero restrições de API oficial.


💡 Por que Isso Existe: O Problema e a Solução

❌ O Problema

  1. O Muro da API Fechada: As APIs oficiais de desenvolvedores do LinkedIn são bloqueadas por programas de parceria empresarial (LinkedIn Marketing Developer Platform / LinkedIn Talent Solutions). Desenvolvedores independentes, freelancers e criadores de agentes de IA não conseguem obter acesso de escrita para publicar posts, enviar convites de conexão ou atualizar perfis programaticamente.
  2. A Armadilha de Banimento Anti-Bot: Ferramentas de automação padrão (Puppeteer, Selenium, binários Chromium puros) disparam os pontos de verificação de detecção de bot do LinkedIn em minutos. Elas transmitem navigator.webdriver = true, não possuem gerenciamento persistente de cookies, digitam em velocidades robóticas e falham quando apresentadas a 2FA ou CAPTCHAs, resultando em restrições imediatas de conta.
  3. O Perigo de Segurança e Injeção de Prompt em LLMs: Dar acesso ao navegador a um LLM autônomo é perigoso. Sem salvaguardas rígidas, injeções de prompt podem enganar uma IA para editar contas não intencionais, raspar alvos não autorizados ou enviar spam pela sua rede profissional.
  4. Fragmentação de IA Desktop vs. Nuvem: Ferramentas de IA desktop (Claude Desktop, Cursor) comunicam-se via stdio local, enquanto IAs de nuvem baseadas na web (como Grok.com) rodam em servidores remotos e não conseguem acessar seu navegador ou sessão local sem tunelamento seguro e suporte a CORS.

✅ A Solução

  1. Plataforma Completa com 29 Ferramentas Sem Chaves de API: Fornece à sua IA capacidades humanas completas—edição de perfil, posts ricos (com imagens/PDFs), enquetes interativas, histórico de caixa de entrada, gerenciamento de conexões, análises e briefings de inteligência executiva.
  2. Mecanismo Furtivo Nativo do Google Chrome: Usa a instalação real e nativa do Google Chrome do seu computador em vez de binários Chromium genéricos. Remove marcadores de automação (navigator.webdriver), introduz variação de atraso de digitação humana e executa movimentos naturais de mouse em curva de Bézier.
  3. Gerenciamento de Sessão Sem Senha e Compatível com 2FA: Nunca solicita ou armazena sua senha do LinkedIn em texto puro. Você faz login interativamente uma vez pelo seu navegador real, resolve qualquer desafio de 2FA, e o estado da sessão criptografada é salvo localmente em ~/.linkedin_mcp. A telemetria integrada de keep-alive estende automaticamente a janela de atividade deslizante de 30 dias do LinkedIn.
  4. Limites Matemáticos de Conta: As ferramentas de mutação de perfil (update_my_headline, update_my_about, add_experience, etc.) não aceitam um parâmetro de perfil alvo. Elas são codificadas para /in/me. É matematicamente impossível para uma IA modificar um perfil externo.
  5. Arquitetura Universal Multi-Transporte: Roda localmente via stdio usando uvx sem clonagem, ou remotamente via streamable-http / sse com suporte completo a CORS e um script de túnel Cloudflare com 1 clique para Grok.com.

📋 Pré-requisitos

Antes de configurar, certifique-se de que seu computador tenha:

  1. Google Chrome: Instalado e funcionando normalmente.
  2. Python 3.10 ou superior: python.org/downloads
  3. uv (Executor Rápido de Pacotes Python):
    • Windows (PowerShell):
      powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
      
    • macOS / Linux:
      curl -LsSf https://astral.sh/uv/install.sh | sh
      

⚡ Passo 1: Autenticação Interativa Única

Você só precisa fazer login uma vez. O servidor salva o estado da sua sessão em ~/.linkedin_mcp para que seus assistentes de IA permaneçam autenticados entre reinicializações.

Abra seu terminal e execute:

uvx --from git+https://github.com/ChimbuezeDavid/linkedin-mcp python -c "import asyncio; from linkedin_mcp.tools.auth import linkedin_start_login; asyncio.run(linkedin_start_login())"

O que acontece:

  1. Uma janela real do Google Chrome será aberta automaticamente.
  2. Insira suas credenciais do LinkedIn e complete a 2FA / verificação se solicitado.
  3. Quando seu feed inicial do LinkedIn carregar, a ferramenta verifica automaticamente sua identidade, salva seus cookies criptografados e fecha o navegador.
  4. Seu terminal exibirá: Active session verified for <Your Name>.

🔌 Passo 2: Conecte ao Seu Assistente de IA

Escolha sua configuração abaixo com base em se você está usando um Cliente de IA Desktop (Claude, Cursor, Antigravity) ou uma IA Web na Nuvem (Grok.com).


Opção A: Clientes de IA Desktop (Sem Clonagem via uvx)

Você não precisa baixar ou clonar este repositório. Seu cliente de IA o executará diretamente usando uvx.

1. Claude Desktop

Adicione este trecho ao seu claude_desktop_config.json:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "linkedin": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/ChimbuezeDavid/linkedin-mcp",
        "linkedin-mcp"
      ]
    }
  }
}

2. Antigravity

Abra suas configurações MCP do Antigravity (mcp_config.json ou Configurações > MCP):

{
  "mcpServers": {
    "linkedin": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/ChimbuezeDavid/linkedin-mcp",
        "linkedin-mcp"
      ]
    }
  }
}

3. Cursor e Windsurf

Adicione ao .cursor/mcp.json ou às configurações globais do Cursor:

{
  "mcpServers": {
    "linkedin": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/ChimbuezeDavid/linkedin-mcp",
        "linkedin-mcp"
      ]
    }
  }
}

4. Claude Code CLI

Execute diretamente do seu terminal:

claude mcp add linkedin uvx --from git+https://github.com/ChimbuezeDavid/linkedin-mcp linkedin-mcp

Opção B: IA Baseada na Web na Nuvem (Grok.com)

Assistentes de IA baseados na nuvem (como grok.com/connectors) não conseguem se conectar a localhost. Eles precisam de um túnel público e criptografado com suporte a CORS e HTTP Streamable.

Incluímos um script de inicialização pré-configurado com 1 clique que inicia o servidor MCP em modo HTTP Streamable na porta 8765 e lança um túnel Cloudflare.

Passo 1: Execute o Script do Conector Grok

Clone o repositório e execute o script:

git clone https://github.com/ChimbuezeDavid/linkedin-mcp.git
cd linkedin-mcp
  • No Windows (PowerShell):
    powershell -ExecutionPolicy Bypass -File .\run_for_grok.ps1
    
  • No macOS / Linux:
    # Terminal 1: Launch MCP server in Streamable HTTP mode
    uv run linkedin-mcp --transport streamable-http --port 8765
    
    # Terminal 2: Expose via Cloudflare Tunnel
    cloudflared tunnel --url http://127.0.0.1:8765
    

Passo 2: Configure o Grok.com

  1. Copie a URL pública do túnel exibida no seu terminal (ex.: https://example-subdomain.trycloudflare.com).
  2. Vá para grok.com/connectors no seu navegador.
  3. Clique em Adicionar Servidor MCP Personalizado:
    • Nome: LinkedIn MCP
    • URL: https://example-subdomain.trycloudflare.com/mcp (⚠️ Importante: você deve anexar /mcp ao final da URL)
  4. Clique em Salvar e comece a conversar com o Grok!

[!TIP] Por que /mcp em vez de /sse? Túneis rápidos do Cloudflare não suportam Server-Sent Events (SSE) persistentes devido ao buffer de proxy, mas funcionam perfeitamente com HTTP Streamable (/mcp). O servidor inclui middleware CORS integrado para garantir comunicação perfeita com grok.com.


Opção C: Configuração de Desenvolvimento Local

Se você quiser contribuir ou modificar o código localmente:

git clone https://github.com/ChimbuezeDavid/linkedin-mcp.git
cd linkedin-mcp
uv sync

Para configurar seu cliente de IA para apontar para seu código local:

{
  "mcpServers": {
    "linkedin": {
      "command": "uv",
      "args": [
        "--directory",
        "<ABSOLUTE_PATH_TO_LINKEDIN_MCP>",
        "run",
        "linkedin-mcp"
      ]
    }
  }
}

🛠️ Ferramentas MCP Disponíveis (29 Ferramentas)

Todas as ferramentas operam estritamente dentro do limite da conta autenticada e aplicam @require_auth.

CategoriaNome da FerramentaArgumentos PrincipaisDescrição
Autenticação e Keep-Alivecheck_login_status(nenhum)Inspeciona a validade da sessão, identidade da conta ativa e idade da janela deslizante.
start_logintimeout_secondsAbre uma janela interativa do Chrome para login com 1 clique e 2FA.
logout(nenhum)Limpa tokens de sessão armazenados, cookies locais e dados de perfil em cache.
refresh_session(nenhum)Executa um heartbeat silencioso para estender a janela deslizante de sessão de 30 dias.
Auto-Perfilget_my_profile(nenhum)Recupera os detalhes do seu perfil autenticado (nome, título, bio, experiência).
(Bloqueado para /in/me)update_my_headlineheadlineAtualiza seu título sob seu nome.
update_my_aboutsummaryAtualiza seu texto de resumo Sobre / bio.
add_educationschool, degree, field_of_study, start_year, end_year, ...Adiciona uma credencial acadêmica ao seu perfil.
add_experiencetitle, company, employment_type, location, description, ...Adiciona um emprego ou função à sua seção de Experiência.
add_skillskill_nameAdiciona uma habilidade à sua seção de Habilidades (com auto-seleção de sugestões).
add_projecttitle, description, url, start_year, end_yearAdiciona um projeto à sua seção de Projetos.
update_job_preferencesjob_titles, location_types, locations, employment_typesConfigura preferências de carreira "Aberto a oportunidades".
update_my_servicesservices_to_add, services_to_remove, descriptionAtualiza serviços e ofertas de clientes no seu perfil.
Navegação e Pesquisasearch_peoplekeywords, location, current_company, limitPesquisa profissionais no LinkedIn com selos de grau de conexão (1º/2º/3º).
view_profileprofile_urlLê os detalhes públicos/de rede de qualquer membro em modo somente leitura.
Feed, Posts e Enquetesget_feedlimitLê posts recentes do seu feed inicial pessoal.
create_posttext, media_path (opcional)Publica um post de autoria da sua conta, opcionalmente anexando imagem/PDF.
create_pollquestion, options, durationPublica uma enquete interativa no seu feed (2-4 opções, duração personalizada).
comment_on_postpost_url, comment_textComenta em um post como seu perfil autenticado.
Análises e Insightsget_post_analyticslimitRecupera impressões, reações e comentários dos seus posts recentes.
get_profile_views(nenhum)Recupera contagens privadas de visualizações de perfil e dados demográficos dos visitantes.
Mensagens Diretaslist_conversationslimitLista threads recentes de mensagens diretas na sua caixa de entrada.
get_conversation_messagesrecipient_name, limitLê o histórico completo de mensagens e respostas de uma thread específica.
send_messagerecipient_profile_url, message_textEnvia uma mensagem direta da sua conta.
Crescimento de Redesend_connection_requestprofile_url, custom_noteEnvia um convite de conexão com uma nota personalizada opcional.
get_pending_invitations(nenhum)Lista convites de conexão recebidos pela sua conta.
manage_invitationsender_name, actionAceita ou ignora um convite de conexão pendente.
Habilidades de Agenteget_network_briefinglimitGera um resumo executivo diário: caixa de entrada, convites, análises e tendências do feed.
analyze_profile_strength(nenhum)Audita a completude em 6 seções e fornece uma pontuação acionável e dicas.

🧪 Testes Automatizados e Verificação

O repositório inclui uma suíte abrangente de testes unitários que verifica restrições de limites, invariantes de segurança, validação de parâmetros e cálculo de saúde da sessão:

uv run python -m unittest discover tests

Saída esperada:

Ran 12 tests in 0.015s

OK

🔒 Invariantes de Segurança e Privacidade

  • Exposição Zero de Senha em Texto Puro: O servidor nunca solicita, lê ou armazena sua senha do LinkedIn.
  • Somente Armazenamento Local: Todo o estado da sessão, cookies e caches de identidade são salvos estritamente na sua máquina local em ~/.linkedin_mcp. Nenhuma telemetria externa ou servidores em nuvem são usados.
  • Impossibilidade Matemática de Personificação: As ferramentas de edição de auto-perfil são codificadas para navegar até /in/me/. Não há parâmetro target_profile_url, impedindo LLMs com injeção de prompt de alterar perfis de outros membros.

📄 Licença

Licença MIT. Consulte LICENSE para detalhes. Criado com ❤️ por Chimbueze (David) Okoroji.