LinkedIn MCP

Extraia perfis e empresas do LinkedIn, obtenha empregos recomendados e realize pesquisas de vagas.

Documentação

Servidor MCP para LinkedIn

PyPI CI Status Release License

Um servidor MCP que conecta assistentes de IA como Claude ao LinkedIn através da sua própria sessão de navegador com login. Consulte perfis e empresas, envie mensagens, gerencie sua caixa de entrada ou pesquise empregos. Todas as ações do navegador são executadas localmente na sua máquina.

Este é um projeto open-source independente, não afiliado, autorizado, endossado ou patrocinado pelo LinkedIn ou pela Microsoft. LinkedIn é uma marca registrada da LinkedIn Corporation e é usado aqui apenas para identificar o serviço com o qual este software interage.


Patrocinador do LinkedIn MCP
Cadenza, hosted LinkedIn MCP for your AI assistant

Prefere não executar um servidor? Cadenza é o servidor MCP do LinkedIn hospedado para seus agentes, na web, desktop e mobile. Defina seus próprios limites para ações no LinkedIn e use seu Sales Navigator, Recruiter e InMail.

Use o código FOUNDING20 para 20% de desconto no seu primeiro ano Experimente o Cadenza →


Unipile, one API for every LinkedIn feature

Este servidor MCP é apoiado pelo Unipile. Unipile é a opção de nuvem totalmente gerenciada para desenvolvedores: uma API do LinkedIn hospedada para Classic, Sales Navigator e Recruiter que cuida de autenticação, sessões e infraestrutura para você.

Experimente o Unipile grátis por 7 dias →


Métodos de Instalação - Servidor MCP do LinkedIn

uvx Install MCP Bundle Codex Plugin Docker

FerramentaDescrição
get_person_profileLê seções do perfil, como experiência, educação, habilidades, projetos e publicações.
get_my_profileLê seu próprio perfil usando as mesmas seções selecionáveis.
connect_with_personEnvia ou aceita uma solicitação de conexão, com uma nota opcional.
get_sidebar_profilesEncontra links de perfis recomendados na barra lateral de uma pessoa.
get_inboxLista conversas de mensagens recentes da sua caixa de entrada do LinkedIn.
get_conversationLê uma conversa por nome de usuário ou ID de thread.
search_conversationsPesquisa mensagens por palavra-chave em suas conversas.
send_messageEnvia após confirmação. Direcionar um perfil pode iniciar um DM separado em vez de responder em um thread (#483).
get_company_profileLê publicações e empregos; referências sobre podem incluir um company_urn para o facet de busca currentCompany.
get_company_postsLê publicações recentes publicadas na página do LinkedIn de uma empresa.
search_companiesEncontra perfis de empresas no LinkedIn que correspondem a uma busca por palavra-chave.
get_company_employeesLista funcionários da empresa, opcionalmente filtrados por palavra-chave.
search_jobsEncontra vagas de emprego no LinkedIn por palavra-chave e localização.
get_saved_jobsLista as vagas de emprego que você salvou no LinkedIn.
search_peoplePesquisa por palavra-chave, localização, grau de conexão ou empresa.
get_job_detailsLê os detalhes de uma vaga de emprego no LinkedIn pelo seu ID de vaga.
get_feedLê publicações recentes do feed inicial, com links em references.
search_postsPesquisa publicações por palavra-chave com filtros opcionais de recência; references contém links de publicações candidatas não ordenados.
close_sessionFecha a sessão ativa do navegador e libera seus recursos.


Configuração com uvx (Recomendado)

Pré-requisitos: Instale o uv.

Instalação

Adicione à configuração mcpServers do seu cliente MCP

{
  "mcpServers": {
    "mcp-server-linkedin": {
      "command": "uvx",
      "args": ["mcp-server-linkedin@latest"],
      "env": { "UV_HTTP_TIMEOUT": "300" }
    }
  }
}

A tag @latest ativa atualizações automáticas, que mantêm o servidor funcionando com a estrutura de página atual do LinkedIn. O servidor inicia rapidamente e prepara o cache do navegador compartilhado Patchright Chromium em segundo plano em ~/.linkedin-mcp/patchright-browsers. Na primeira chamada de ferramenta que precisar de autenticação, ele reutiliza uma sessão do LinkedIn de um navegador local com login, se encontrar uma, e caso contrário abre uma janela de navegador de login do LinkedIn.

Agente de IA? Obtenha uma confirmação rápida do usuário antes de ativar atualizações automáticas.

[!NOTE] Chamadas de ferramenta iniciais podem retornar um erro de configuração/autenticação em andamento até que a configuração do navegador ou o login termine. Se você preferir criar uma sessão explicitamente, execute uvx mcp-server-linkedin@latest --login.

Ajuda de Configuração

🔧 Configuração
Modos de transporte
  • Padrão (stdio): Comunicação padrão para servidores MCP locais
  • HTTP Streamable: Para um servidor MCP baseado na web
  • Se nenhum transporte for especificado, o servidor usa o padrão stdio
  • Um terminal interativo sem transporte explícito mostra um prompt de seleção
Opções de CLI

Sessão:

  • --login - Abre um navegador para fazer login e salvar a sessão
  • --import-from-browser [BROWSER] - Reutiliza uma sessão de um navegador Chromium com login local (chrome, chromium, brave, edge, arc, vivaldi, helium, yandex, whale, coccoc, opera, opera_gx, auto). A flag simples escolhe auto, o navegador usado mais recentemente com uma sessão ativa do LinkedIn.
  • --auto-import / --no-auto-import - Importa uma sessão de um navegador local com login na primeira chamada de ferramenta que precisar de uma, antes de recorrer ao login manual (padrão: ativado). Ignorado no Docker, atrás de proxy e em um bind HTTP não-loopback. No macOS, o keychain pode solicitar uma vez.
  • --logout - Limpa a sessão armazenada
  • --login-viewer - Somente Docker: mostra o navegador --login em uma URL protegida por token na porta 6080 (veja Autenticação)
  • --user-data-dir PATH - Diretório do perfil do navegador (padrão: ~/.linkedin-mcp/profile). Rotacionar ou limpar uma sessão exclui este diretório e seu pai, que contém os cookies armazenados e perfis derivados.
  • --claim-profile-root - Assume um diretório de perfil que o servidor não reivindicará por conta própria, como um cujo pai já contém outros arquivos. Necessário uma vez por diretório.

Transporte:

  • --transport {stdio,streamable-http} - Força o modo de transporte (padrão: stdio)
  • --host HOST / --port PORT / --path PATH - Endereço do servidor HTTP (padrões: 127.0.0.1, 8000, /mcp)

Timeouts:

  • --timeout MS - Timeout para uma única operação de página (padrão: 5000)
  • --tool-timeout SECONDS - Timeout para uma chamada de ferramenta inteira (padrão: 180). Aumente para raspagens pesadas, redes lentas ou navegador com inicialização a frio.
  • --login-timeout SECONDS - Quanto tempo o navegador de login espera você terminar de entrar (padrão: 1800; 0 = sem limite). --login-viewer encerra a sessão após 30 minutos de qualquer forma.
  • --login-inline-wait SECONDS - Quanto tempo uma chamada de ferramenta espera um login terminar antes de dizer ao modelo para tentar novamente (padrão: 25, máx. 45; 0 = retornar imediatamente)

Navegador compartilhado:

  • --browser-wait SECONDS - Quanto tempo esperar outro processo de servidor entregar o navegador compartilhado (padrão: 25, máx. 45; 0 = reportar ocupado imediatamente). Só importa com vários clientes MCP rodando ao mesmo tempo.
  • --browser-min-hold SECONDS - Tempo mínimo que este processo mantém o navegador compartilhado antes de entregá-lo (padrão: 20). Limitado a 3 segundos abaixo de --browser-wait, então aumente esse junto. Maior significa menos reinicializações do navegador, mas esperas mais longas para outros clientes.
  • --browser-idle-timeout SECONDS - Fecha um navegador ocioso e libera o perfil após esse tempo sem uma chamada de ferramenta (padrão: 600; 0 = mantém aberto)

Navegador:

  • --no-headless - Mostra a janela do navegador (útil para depuração)
  • --chrome-path PATH - Caminho para um executável Chrome/Chromium
  • --proxy-server URL - Roteia o tráfego do navegador por um proxy, como scheme://host:port. Configure antes de --login; veja Usando um proxy.

Outros:

  • --log-level {DEBUG,INFO,WARNING,ERROR} - Nível de registro (padrão: WARNING)
Importe uma sessão do seu navegador do dia a dia

Se você já está conectado ao LinkedIn no Chrome, Chromium, Brave, Edge, Arc, Vivaldi, Helium, Yandex, Naver Whale, Cốc Cốc, Opera ou Opera GX, você pode pular a etapa manual de --login e reutilizar essa sessão:

# Auto-pick the most recently used browser with a live LinkedIn session
uvx mcp-server-linkedin@latest --import-from-browser
# Or target a specific browser
uvx mcp-server-linkedin@latest --import-from-browser brave

Isso lê os cookies do LinkedIn do navegador, valida-os contra seu feed e os salva em ~/.linkedin-mcp/profile/, o mesmo lugar onde --login grava. Notas:

  • Com vários navegadores conectados, a sessão ativa do LinkedIn usada mais recentemente é tentada primeiro. Se o LinkedIn a rejeitar (revogada ou desconectada remotamente), a próxima mais recente é tentada automaticamente; a primeira que o servidor aceitar é importada. Não há prompt para escolher. Passe um nome de navegador para direcionar um especificamente.
  • No macOS, o keychain do sistema pode solicitar permissão para acessar o Safe Storage do navegador. Feche o navegador de origem primeiro para a leitura mais confiável.
  • Cookies protegidos pela criptografia vinculada ao aplicativo do Chrome 127+ (v20) não podem ser descriptografados sem elevação do SO; nesse caso, use --login em vez disso.
  • Cookies importados correspondem ao conjunto em disco de um login real. O servidor local os lê de volta integralmente do perfil salvo; a ponte Docker reduz ao mesmo subconjunto mínimo de autenticação que usa para uma sessão normal.
Modo HTTP e depuração

Exemplos básicos de uso:

# Run with debug logging
uvx mcp-server-linkedin@latest --log-level DEBUG

Exemplo de modo HTTP (para clientes MCP baseados na web):

uvx mcp-server-linkedin@latest --transport streamable-http --host 127.0.0.1 --port 8080 --path /mcp

Os logs do servidor em tempo de execução são emitidos pelo FastMCP/Uvicorn.

As chamadas de ferramenta são serializadas para proteger a sessão compartilhada do navegador do LinkedIn, tanto dentro de um único processo de servidor quanto entre processos separados. Se você executar vários clientes MCP ao mesmo tempo, cada um inicia seu próprio processo de servidor, e apenas um deles usa o navegador por vez; os outros esperam brevemente e assumem assim que ele termina uma chamada. Um cliente que espera demais recebe uma mensagem de "navegador ocupado" e pode simplesmente tentar novamente. Use --log-level DEBUG para ver os logs de espera/aquisição/liberação.

Isso cobre processos na mesma máquina e no mesmo runtime. Não se estende entre o host e um contêiner Docker compartilhando o mesmo diretório ~/.linkedin-mcp, então não execute --login ou --logout no host enquanto um contêiner estiver em execução.

Teste com o mcp inspector:

  1. Instale e execute o mcp inspector bunx @modelcontextprotocol/inspector
  2. Clique na URL de token pré-preenchida para abrir o inspector no seu navegador
  3. Selecione Streamable HTTP como Transport Type
  4. Defina URL para http://localhost:8080/mcp
  5. Conecte
  6. Teste as ferramentas
❗ Solução de problemas
Problemas de instalação - Certifique-se de ter o `uv` instalado: `curl -LsSf https://astral.sh/uv/install.sh | sh` - Verifique a versão do `uv`: `uv --version` (deve ser 0.4.0 ou superior) - Na primeira execução, o `uvx` baixa todas as dependências Python. Em conexões lentas, o tempo limite HTTP padrão de 30s do `uv` pode ser curto demais. A configuração recomendada acima já define `UV_HTTP_TIMEOUT=300` (segundos) para evitar isso. - *Windows, `DLL load failed while importing _greenlet`*: atualize para greenlet 3.5.5 ou mais recente, cujas wheels publicadas para Windows incluem o runtime C++ dentro da extensão novamente. Uma nova execução do `uvx` resolve isso por conta própria; um ambiente que fixa suas dependências precisa de `uv lock --upgrade-package greenlet`. Apenas greenlet 3.3.1 até 3.5.4 precisam de `MSVCP140.dll`, que nem o instalador do python.org nem os builds gerenciados pelo `uv` incluem, e um greenlet compilado a partir do código-fonte pode precisar dele em qualquer versão. Quando a versão não pode ser alterada, o [Microsoft Visual C++ Redistributable](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist) fornece essa DLL. Relatado como [greenlet#525](https://github.com/python-greenlet/greenlet/issues/525), corrigido em [greenlet#526](https://github.com/python-greenlet/greenlet/pull/526).
Problemas de sessão
  • O perfil do navegador é armazenado em ~/.linkedin-mcp/profile/
  • Os downloads do navegador gerenciado são armazenados em cache em ~/.linkedin-mcp/patchright-browsers/
  • O cache do navegador continua crescendo: uma atualização do servidor pode trazer uma nova revisão do Chromium, e o Patchright mantém a antiga enquanto qualquer versão instalada ainda a referenciar. O uvx mantém um arquivo por versão que você já executou, então cada uma delas mantém essa referência e as revisões antigas permanecem. O servidor registra um aviso nomeando as revisões que está mantendo e quanto espaço elas ocupam. Para recuperar esse espaço, pare todas as instâncias do LinkedIn MCP Server, exclua ~/.linkedin-mcp/patchright-browsers/ e deixe a próxima inicialização baixar o navegador atual.
Problemas de login
  • Certifique-se de ter apenas uma sessão ativa do LinkedIn por vez
  • O LinkedIn pode exigir uma confirmação de login no aplicativo móvel do LinkedIn para --login
  • O LinkedIn pode exibir um desafio de captcha durante o login. Execute uvx mcp-server-linkedin@latest --login, que abre um navegador onde você pode resolvê-lo manualmente.
Problemas de tempo limite
  • Operações de página falhando (elementos não encontrados, navegação travada): aumente o tempo limite de operação da página do navegador: --timeout 10000 ou TIMEOUT=10000 (milissegundos, padrão 5000).
  • Chamadas de ferramenta inteiras expirando (por exemplo, perfis com várias seções, Chromium em inicialização a frio, contêineres lentos): aumente o tempo limite de execução por ferramenta: --tool-timeout 300 ou TOOL_TIMEOUT=300 (segundos, padrão 180).
  • Primeira chamada de ferramenta sem sessão: se um navegador com login local tiver uma sessão ativa do LinkedIn, o servidor a importa automaticamente (veja AUTO_IMPORT_FROM_BROWSER / --auto-import) em vez de forçar um login manual. No macOS, o chaveiro pode solicitar uma vez o acesso ao Safe Storage. Se não existir uma sessão de navegador importável, ele volta a abrir uma janela de login e aguarda até LOGIN_INLINE_WAIT segundos (padrão 25, máximo 45; --login-inline-wait) para que um login rápido seja resolvido em uma chamada. Se o tempo expirar, a ferramenta retorna um sinal de pendência e o modelo tenta novamente em cerca de 30 segundos. Nem a importação automática nem a espera inline se aplicam no Docker ou quando o servidor está vinculado a um host HTTP que não seja de loopback. Crie a sessão no host com --login, ou use o comando explícito do Docker --login --login-viewer.
  • Usuários em conexões lentas podem precisar de valores maiores para qualquer um deles.
Instruído a executar --login no host quando você já fez
  • Se as chamadas de ferramenta responderem "No valid LinkedIn session is available in Docker" em uma máquina que não é um contêiner, o runtime foi detectado incorretamente. Isso aconteceu em hosts Linux executando um daemon Docker para serviços não relacionados. Defina LINKEDIN_MCP_CONTAINER=false para substituir a detecção; true força o oposto.
Caminho personalizado do Chrome
  • Se o Chrome estiver instalado em um local não padrão, use --chrome-path /path/to/chrome
  • Também pode ser definido via variável de ambiente: CHROME_PATH=/path/to/chrome
  • No macOS e Linux, o navegador deve ser pelo menos tão novo quanto aquele que abriu seu perfil pela última vez, e o servidor recusa a inicialização caso contrário. (Não no Windows: um navegador lá não pode ter sua versão consultada sem iniciar um, então a verificação está desativada.) Um navegador mais antigo pode silenciosamente descartar stores que um mais novo escreveu, incluindo a sessão salva, e a falha então parece exatamente um login expirado. A mensagem nomeia ambas as versões. Voltar ao Chromium incluído após executar um Chrome mais novo uma vez é a maneira usual de atender a isso; execute o navegador mais novo novamente, seja qual for, ou execute --login, que move a sessão armazenada para o lado e faz login do zero com o navegador que você tem. O --logout também limpa, mas descarta a sessão antiga em vez de mantê-la recuperável, e pede confirmação no terminal, então não é utilizável a partir de um servidor iniciado por um cliente MCP.
  • Apenas Chrome, Chromium e Chrome for Testing são comparados dessa forma. Forks numeram-se de maneira diferente (Vivaldi está na 7.x, o número de build do Edge fica muito abaixo do Chrome sob o mesmo major), então apontar CHROME_PATH para um deles desativa a verificação em vez de produzir uma recusa que nada poderia satisfazer.


Claude Desktop MCP Bundle (anteriormente DXT)

Pré-requisitos: Claude Desktop.

Instalação

  1. Baixe o artefato .mcpb mais recente em releases
  2. Clique no arquivo .mcpb baixado para instalá-lo no Claude Desktop
  3. Chame qualquer ferramenta do LinkedIn

Na inicialização, o MCP Bundle prepara o cache compartilhado do navegador Patchright Chromium em segundo plano. Na primeira chamada de ferramenta que precisa de autenticação, o servidor reutiliza uma sessão do LinkedIn de um navegador local com login, se encontrar uma, e caso contrário abre uma janela de navegador de login do LinkedIn.

[!NOTE] Chamadas de ferramenta iniciais podem retornar um erro de configuração/autenticação em andamento até que a configuração do navegador ou o login termine. Tente a chamada de ferramenta novamente assim que o download do navegador ou o login for concluído.

Ajuda de configuração

❗ Solução de problemas
Comportamento da primeira configuração
  • O Claude Desktop inicia o bundle imediatamente; a configuração do navegador continua em segundo plano
  • Se o navegador Patchright Chromium ainda estiver baixando, tente a ferramenta novamente após uma breve espera
  • Os downloads do navegador gerenciado são compartilhados em ~/.linkedin-mcp/patchright-browsers/
  • O cache do navegador continua crescendo: o Patchright mantém uma revisão antiga do Chromium enquanto qualquer versão instalada ainda a referenciar, então uma atualização pode deixar ambas no disco. O servidor registra um aviso nomeando o que mantém. Para recuperar o espaço, pare todas as instâncias do LinkedIn MCP Server, exclua ~/.linkedin-mcp/patchright-browsers/ e deixe a próxima inicialização baixar o navegador atual.
  • Windows, o bundle sai com DLL load failed while importing _greenlet: instale o Microsoft Visual C++ Redistributable, ou reinstale um bundle fixando greenlet 3.5.5 ou mais recente, cujas wheels publicadas para Windows incluem o runtime C++ dentro da extensão novamente. Um bundle fixando greenlet 3.3.1 até 3.5.4 precisa de MSVCP140.dll desse redistribuível, que nem o instalador do python.org nem os builds gerenciados pelo uv incluem, e um greenlet compilado a partir do código-fonte pode precisar dele em qualquer versão. O servidor nomeia isso por conta própria na inicialização, e somente após verificar que o carregador não pode produzir essa DLL. Relatado como greenlet#525, corrigido em greenlet#526.
Problemas de login
  • Certifique-se de ter apenas uma sessão ativa do LinkedIn por vez
  • O LinkedIn pode exigir uma confirmação de login no aplicativo móvel do LinkedIn para --login
  • O LinkedIn pode exibir um desafio de captcha durante o login. Execute uvx mcp-server-linkedin@latest --login, que abre um navegador onde você pode resolver captchas manualmente. Veja a configuração do uvx para pré-requisitos.
Problemas de tempo limite
  • Operações de página falhando (elementos não encontrados, navegação travada): aumente o tempo limite de operação da página do navegador: --timeout 10000 ou TIMEOUT=10000 (milissegundos, padrão 5000).
  • Chamadas de ferramenta inteiras expirando (por exemplo, perfis com várias seções, Chromium em inicialização a frio, contêineres lentos): aumente o tempo limite de execução por ferramenta: --tool-timeout 300 ou TOOL_TIMEOUT=300 (segundos, padrão 180).
  • Primeira chamada de ferramenta sem sessão: se um navegador com login local tiver uma sessão ativa do LinkedIn, o servidor a importa automaticamente (veja AUTO_IMPORT_FROM_BROWSER / --auto-import) em vez de forçar um login manual. No macOS, o chaveiro pode solicitar uma vez o acesso ao Safe Storage. Se não existir uma sessão de navegador importável, ele volta a abrir uma janela de login e aguarda até LOGIN_INLINE_WAIT segundos (padrão 25, máximo 45; --login-inline-wait) para que um login rápido seja resolvido em uma chamada. Se o tempo expirar, a ferramenta retorna um sinal de pendência e o modelo tenta novamente em cerca de 30 segundos. Nem a importação automática nem a espera inline se aplicam no Docker ou quando o servidor está vinculado a um host HTTP que não seja de loopback. Crie a sessão no host com --login, ou use o comando explícito do Docker --login --login-viewer.
  • Usuários em conexões lentas podem precisar de valores maiores para qualquer um deles.
Instruído a executar --login no host quando você já fez
  • Se as chamadas de ferramenta responderem "No valid LinkedIn session is available in Docker" em uma máquina que não é um contêiner, o runtime foi detectado incorretamente. Isso aconteceu em hosts Linux executando um daemon Docker para serviços não relacionados. Defina LINKEDIN_MCP_CONTAINER=false para substituir a detecção; true força o oposto.


Codex Plugin

Pré-requisitos: Codex e uv.

Instalação

Execute em um terminal

codex plugin marketplace add stickerdaniel/linkedin-mcp-server
codex plugin add linkedin-mcp-server@linkedin-mcp-server

O plugin executa uma versão fixa do servidor através do uvx. Cada release atualiza essa versão, e o Codex a instala na próxima vez que iniciar. Na primeira chamada de ferramenta que precisa de autenticação, o servidor reutiliza uma sessão do LinkedIn de um navegador local com login, se encontrar uma, e caso contrário abre uma janela de navegador de login do LinkedIn.



Configuração com Docker

Eu sei o que estou fazendo

Pré-requisitos: Certifique-se de que o Docker esteja instalado e em execução.

Autenticação

Faça login uma vez. O contêiner abre um navegador de login do LinkedIn que você controla a partir da sua própria aba do navegador.

macOS / Linux:

# Create the directory first so the container can save your session into it
mkdir -p ~/.linkedin-mcp
docker run -it --rm \
  -v ~/.linkedin-mcp:/home/pwuser/.linkedin-mcp \
  -p 127.0.0.1:6080:6080 \
  stickerdaniel/linkedin-mcp-server:latest \
  --login --login-viewer

PowerShell (Windows):

$sessionDir = Join-Path $env:USERPROFILE ".linkedin-mcp"
New-Item -ItemType Directory -Force -Path $sessionDir | Out-Null
docker run -it --rm `
  -v "${sessionDir}:/home/pwuser/.linkedin-mcp" `
  -p 127.0.0.1:6080:6080 `
  stickerdaniel/linkedin-mcp-server:latest `
  --login --login-viewer

Abra a URL completa que o comando imprime (ela carrega o token de acesso) e faça login. O visualizador se fecha sozinho depois; deixe o comando sair por conta própria para que a sessão seja armazenada completamente. Ele desiste após 30 minutos.

Mantenha o mesmo diretório do host montado em /home/pwuser/.linkedin-mcp em cada docker run posterior, caso contrário o servidor não consegue encontrar a sessão.

Adicione à configuração mcpServers do seu cliente MCP

macOS / Linux (caminho absoluto em JSON):

{
  "mcpServers": {
    "mcp-server-linkedin": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-v", "/absolute/path/to/.linkedin-mcp:/home/pwuser/.linkedin-mcp",
        "stickerdaniel/linkedin-mcp-server:latest"
      ]
    }
  }
}

Escreva esse primeiro caminho por extenso. Um cliente executa docker diretamente em vez de através de um shell, então um ~ inicial chega ao Docker sem expansão e ele recusa a montagem.

PowerShell (Windows): use um caminho JSON com barras normais. Um caminho com barras invertidas como C:\Users\Alice\.linkedin-mcp falha no parsing JSON porque \U é um escape inválido. Use C:/Users/Alice/.linkedin-mcp em vez disso, substituindo Alice pelo seu nome de usuário.

{
  "mcpServers": {
    "mcp-server-linkedin": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-v", "C:/Users/Alice/.linkedin-mcp:/home/pwuser/.linkedin-mcp",
        "stickerdaniel/linkedin-mcp-server:latest"
      ]
    }
  }
}

[!NOTE] No PowerShell, o ~ não é expandido dentro de um argumento composto do Docker -v. Use C:/Users/<you>/.linkedin-mcp ou construa o caminho com $env:USERPROFILE\.linkedin-mcp antes de passá-lo ao Docker.

[!NOTE] As sessões expiram com o tempo. Quando as chamadas de ferramenta começarem a solicitar autenticação, repita o comando de login acima ou execute uvx mcp-server-linkedin@latest --login no host.

Ajuda de Configuração

🔧 Configuração
Modos de transporte
  • Padrão (stdio): Comunicação padrão para servidores MCP locais
  • HTTP transmissível: Para um servidor MCP baseado na web
  • Se nenhum transporte for especificado, o servidor usa o padrão stdio
  • Um terminal interativo sem transporte explícito mostra um prompt de seleção
Opções de CLI

Sessão:

  • --auto-import / --no-auto-import - Importa uma sessão de um navegador local com login na primeira chamada de ferramenta que precisar, antes de recorrer ao login manual (ignorado no Docker). No macOS, o chaveiro pode solicitar uma vez.
  • --logout - Limpa a sessão armazenada e todos os perfis derivados dela
  • --login-viewer - Com --login, mostra o navegador de login em uma URL protegida por token na porta 6080. Precisa do perfil montado de Autenticação.
  • --user-data-dir PATH - Diretório do perfil do navegador (padrão: ~/.linkedin-mcp/profile). Rotacionar ou limpar uma sessão exclui este diretório e seu pai, que contém os cookies armazenados e os perfis derivados.
  • --claim-profile-root - Assume um diretório de perfil que o servidor não reivindicará por conta própria, como um cujo pai já contém outros arquivos. Necessário uma vez por diretório.

Transporte:

  • --transport {stdio,streamable-http} - Força o modo de transporte (padrão: stdio)
  • --host HOST / --port PORT / --path PATH - Endereço do servidor HTTP (padrões: 127.0.0.1, 8000, /mcp)

Tempos limite:

  • --timeout MS - Tempo limite para uma única operação de página (padrão: 5000)
  • --tool-timeout SECONDS - Tempo limite para uma chamada de ferramenta inteira (padrão: 180). Aumente para raspagens pesadas, redes lentas ou navegador com inicialização a frio.
  • --login-timeout SECONDS - Quanto tempo o navegador de login espera você terminar de entrar (padrão: 1800; 0 = sem limite). --login-viewer encerra a sessão após 30 minutos de qualquer forma.
  • --login-inline-wait SECONDS - Quanto tempo uma chamada de ferramenta espera um login terminar antes de dizer ao modelo para tentar novamente (padrão: 25, máx. 45; 0 = retornar imediatamente)

Navegador compartilhado:

  • --browser-wait SECONDS - Quanto tempo esperar outro processo do servidor entregar o navegador compartilhado (padrão: 25, máx. 45; 0 = reportar ocupado imediatamente). Só importa com vários clientes MCP rodando ao mesmo tempo.
  • --browser-min-hold SECONDS - Tempo mínimo que este processo mantém o navegador compartilhado antes de entregá-lo (padrão: 20). Limitado a 3 segundos abaixo de --browser-wait, então aumente esse junto. Maior significa menos reinicializações do navegador, mas esperas mais longas para outros clientes.
  • --browser-idle-timeout SECONDS - Fecha um navegador ocioso e libera o perfil após esse tempo sem uma chamada de ferramenta (padrão: 600; 0 = mantê-lo aberto)

Navegador:

  • --chrome-path PATH - Caminho para um executável Chrome/Chromium (raramente necessário no Docker)
  • --proxy-server URL - Roteia o tráfego do navegador por um proxy, como scheme://host:port. Configure-o antes de --login; veja Usando um proxy.

Outros:

  • --log-level {DEBUG,INFO,WARNING,ERROR} - Nível de registro (padrão: WARNING)

[!NOTE] O --login simples ainda não tem janela visível no Docker. Adicione --login-viewer e publique 127.0.0.1:6080:6080 apenas para o comando de login único. O Docker já é headless por padrão, então --no-headless não muda nada. O --daemon experimental é ignorado no Docker porque seu dono pode sobreviver ao display virtual.

Modo HTTP

Exemplo de Modo HTTP (para clientes MCP baseados na web):

Bash / macOS / Linux:

docker run -it --rm \
  -v ~/.linkedin-mcp:/home/pwuser/.linkedin-mcp \
  -p 127.0.0.1:8080:8080 \
  stickerdaniel/linkedin-mcp-server:latest \
  --transport streamable-http --host 0.0.0.0 --port 8080 --path /mcp

PowerShell (Windows):

$sessionDir = Join-Path $env:USERPROFILE ".linkedin-mcp"
docker run -it --rm `
  -v "${sessionDir}:/home/pwuser/.linkedin-mcp" `
  -p 127.0.0.1:8080:8080 `
  stickerdaniel/linkedin-mcp-server:latest `
  --transport streamable-http --host 0.0.0.0 --port 8080 --path /mcp

Ambas as metades disso são necessárias e fazem trabalhos diferentes. --host 0.0.0.0 torna o servidor alcançável dentro do contêiner: um processo vinculado a 127.0.0.1 lá dentro não pode ser alcançado por uma porta publicada. O 127.0.0.1: na frente de -p é o que o limita fora, a esta máquina. Remova esse prefixo e o Docker publica em todas as interfaces, o que coloca um endpoint sem autenticação na sua rede. O servidor não consegue distinguir os dois, então avisa de qualquer forma.

A publicação em loopback limita isso à máquina, não ao contêiner. Outros contêineres no mesmo host ainda podem alcançá-lo através de host.docker.internal onde quer que esse nome resolva, que é o padrão no Docker Desktop e OrbStack, mas não no Docker Linux nativo.

Os logs do servidor em tempo de execução são emitidos pelo FastMCP/Uvicorn.

O servidor HTTP responde a solicitações endereçadas a localhost ou ao endereço ao qual está vinculado, e recusa outras com 421. Isso é o que impede um site que você apenas visita de apontar um domínio para este servidor e usar sua sessão do LinkedIn através do seu próprio navegador.

Alcançar o servidor por qualquer outro nome é recusado, incluindo um nome de máquina na sua rede e o nome público na frente de um proxy reverso. Ou faça o proxy reescrever o Host upstream para o endereço de backend, ou nomeie o host sob o qual você o serve:

FASTMCP_HTTP_ALLOWED_HOSTS='["mcp.example"]'

Isso permite exatamente esse nome e continua recusando todo o resto. O endpoint ainda não tem autenticação, então qualquer coisa alcançável além da sua própria máquina pertence atrás de algo que a forneça.

Teste com o mcp inspector:

  1. Instale e execute o mcp inspector bunx @modelcontextprotocol/inspector
  2. Clique na URL de token pré-preenchida para abrir o inspector no seu navegador
  3. Selecione Streamable HTTP como Transport Type
  4. Defina URL para http://localhost:8080/mcp
  5. Conecte
  6. Teste as ferramentas
❗ Solução de Problemas
Problemas com Docker
  • Certifique-se de que o Docker está instalado
  • Verifique se o Docker está em execução: docker ps
  • Erros de permissão em ~/.linkedin-mcp: uma execução antiga do Docker rootful pode ter criado o diretório como root. Corrija com sudo chown -R "$(id -u):$(id -g)" ~/.linkedin-mcp.
Problemas de login
  • Certifique-se de ter apenas uma sessão ativa do LinkedIn por vez
  • O LinkedIn pode exigir uma confirmação de login no aplicativo móvel do LinkedIn para --login
  • O LinkedIn pode mostrar um desafio de captcha durante o login. Execute uvx mcp-server-linkedin@latest --login que abre um navegador onde você pode resolver captchas manualmente. Veja a configuração do uvx para pré-requisitos.
  • Se a autenticação do Docker ficar desatualizada após você refazer o login no host, reinicie o Docker uma vez para que ele possa fazer uma nova ponte a partir da nova geração de sessão de origem.
Problemas de tempo limite
  • Operações de página falhando (elementos não encontrados, navegação travada): aumente o tempo limite de operação de página do navegador: --timeout 10000 ou TIMEOUT=10000 (milissegundos, padrão 5000).
  • Chamadas de ferramenta inteiras expirando (ex.: perfis de várias seções, Chromium com inicialização a frio, contêineres lentos): aumente o tempo limite de execução por ferramenta: --tool-timeout 300 ou TOOL_TIMEOUT=300 (segundos, padrão 180).
  • Primeira chamada de ferramenta sem sessão: se um navegador com login local tiver uma sessão ativa do LinkedIn, o servidor a importa automaticamente (veja AUTO_IMPORT_FROM_BROWSER / --auto-import) em vez de forçar um login manual. No macOS, o chaveiro pode solicitar uma vez para acesso ao Safe Storage. Se não existir uma sessão de navegador importável, ele recorre a abrir uma janela de login e espera até LOGIN_INLINE_WAIT segundos (padrão 25, máx. 45; --login-inline-wait) para que um login rápido seja resolvido em uma chamada. Se a espera expirar, a ferramenta retorna um sinal pendente e o modelo tenta novamente em cerca de 30 segundos. Nem a importação automática nem a espera inline se aplicam no Docker ou quando o servidor está vinculado a um host HTTP não-loopback. Crie a sessão no host com --login, ou use o comando explícito do Docker --login --login-viewer.
  • Usuários em conexões lentas podem precisar de valores mais altos para qualquer um deles.
Disseram para executar --login no host quando você já fez
  • Se as chamadas de ferramenta responderem "Nenhuma sessão válida do LinkedIn está disponível no Docker" em uma máquina que não é um contêiner, o tempo de execução foi detectado incorretamente. Isso aconteceu em hosts Linux executando um daemon Docker para serviços não relacionados. Defina LINKEDIN_MCP_CONTAINER=false para substituir a detecção; true força o oposto.
Caminho personalizado do Chrome
  • Se o Chrome estiver instalado em um local não padrão, use --chrome-path /path/to/chrome
  • Também pode ser definido via variável de ambiente: CHROME_PATH=/path/to/chrome
  • No macOS e Linux, o navegador deve ser pelo menos tão novo quanto o que abriu seu perfil pela última vez, e o servidor recusa a inicialização caso contrário. (Não no Windows: um navegador lá não pode ter sua versão consultada sem iniciar um, então a verificação está desligada.) Um navegador mais antigo pode silenciosamente descartar armazenamentos que um mais novo escreveu, incluindo a sessão salva, e a falha então parece exatamente um login expirado. A mensagem nomeia ambas as versões. Voltar ao Chromium incluído depois de executar um Chrome mais novo uma vez é a maneira usual de atender a isso; ou execute o navegador mais novo novamente, seja qual for, ou execute --login, que move a sessão armazenada para o lado e faz login do zero com o navegador que você tem. --logout também limpa, mas descarta a sessão antiga em vez de mantê-la recuperável, e pede confirmação no terminal, então não é utilizável de um servidor que um cliente MCP iniciou.
  • Apenas Chrome, Chromium e Chrome for Testing são comparados dessa forma. Forks se numeram de maneira diferente (Vivaldi está em 7.x, o número de build do Edge fica muito abaixo do Chrome sob o mesmo major), então apontar CHROME_PATH para um desliga a verificação em vez de produzir uma recusa que nada poderia satisfazer.
  • Na configuração Docker documentada, esta verificação não se aplica. O contêiner nunca abre o perfil que você criou com --login; ele deriva o seu próprio dos seus cookies e, por padrão, reconstrói isso do zero a cada início, então não há nada para uma imagem mais antiga rebaixar. Com EXPERIMENTAL_PERSIST_DERIVED_RUNTIME o perfil derivado é mantido, e uma tag de imagem que retrocede então o descarta e o re-deriva, novamente sem nada para você fazer. A verificação importa no host, onde o servidor abre esse perfil diretamente. Não durante o --login em si, que move o perfil antigo para o lado antes de iniciar um navegador e então nunca pode acioná-la.


Usando um proxy

Provedores de proxy patrocinados
Swiftproxy logo

Swiftproxy oferece proxies residenciais com sessões fixas e segmentação geográfica mundial. Suas opções dedicadas de ISP estático incluem redes como AT&T, Sky UK e Rogers, com tráfego ilimitado e endereços renováveis.

Use o código PROXY90 para 10% de desconto Experimente Swiftproxy →

RapidProxy logo

RapidProxy oferece 90M+ IPs residenciais mundialmente para automação do LinkedIn e fluxos de trabalho de navegador, com sessões fixas, segmentação geográfica e suporte a alta concorrência. Os planos começam em $0,55/GB com tráfego sem expiração.

Use o código RAPID10 para 10% de desconto Experimente o RapidProxy grátis →


O LinkedIn avalia o endereço a partir do qual a sessão faz login. O endereço IP habitual da sua conta é o seguro. Você deve usar um proxy no seu país quando o servidor não puder usá-lo: um VPS, outro país ou uma segunda conta que não deve compartilhar o endereço da primeira.

Com um provedor pago, use uma sessão residencial fixa (sticky) que mantenha um único endereço (nunca rotação por requisição). Um túnel completo WireGuard ou um nó de saída Tailscale na sua rede doméstica funciona quando o servidor deve usar o seu endereço residencial habitual.

Ajuda de Configuração

🔧 Configuração
  • Configure o proxy antes de --login. Mover uma sessão existente para um novo endereço aciona um checkpoint do LinkedIn. Isso inclui uma sessão de --import-from-browser, que foi criada no seu endereço real.
  • --proxy-server scheme://host:port ou PROXY_SERVER, com http, https, socks4 ou socks5. Apenas o tráfego do navegador é roteado, não o transporte MCP.
  • Passe as credenciais por PROXY_USERNAME e PROXY_PASSWORD, ou inclua-as em PROXY_SERVER usando o formato combinado http://user:pass@host:port. O formato combinado não é aceito pela opção de CLI --proxy-server.
  • PROXY_BYPASS=localhost,127.0.0.1,::1 alcança destinos locais diretamente. Com um proxy configurado, o Chromium roteia localhost através dele também.
❗ Solução de Problemas
  • O Chromium não consegue autenticar em um proxy SOCKS, então as credenciais exigem um endpoint http(s). Se o seu provedor só oferecer SOCKS5 autenticado, execute um relay local que mantenha as credenciais e aponte o servidor para ele.
  • Uma senha de proxy errada aparece como timeout ou falha no login, porque o Chromium tenta novamente o desafio de autenticação até a página expirar. Se as sessões pararem de funcionar logo após adicionar um proxy, verifique primeiro as credenciais do proxy.
  • A importação automática é ignorada enquanto um proxy estiver configurado: a sessão importada se moveria do seu endereço real para o proxy. Use --login.
  • Dentro de um contêiner, 127.0.0.1 é o próprio contêiner, então um relay no host é host.docker.internal; o Docker Linux nativo também precisa de --add-host=host.docker.internal:host-gateway.


Configuração a partir do Código-Fonte (Desenvolva e Contribua)

Contribuições são bem-vindas. Veja CONTRIBUTING.md para diretrizes de arquitetura e listas de verificação. Pesquise issues existentes primeiro e depois use os formulários de issue para qualquer coisa nova. Agentes de IA seguem a habilidade issue-packet.

Pré-requisitos: Git e uv instalados

Instalação

Execute em um terminal

# 1. Clone repository
git clone https://github.com/stickerdaniel/linkedin-mcp-server
cd linkedin-mcp-server

# 2. Install UV package manager (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 3. Install dependencies
uv sync
uv sync --group dev

# 4. Install pre-commit hooks
uv run pre-commit install

# 5. Start the server
uv run -m linkedin_mcp_server

Ajuda de Configuração

🔧 Configuração
Opções de CLI

Sessão:

  • --login - Abra um navegador para fazer login e salvar a sessão
  • --import-from-browser [BROWSER] - Reutilize uma sessão de um navegador Chromium com login local (chrome, chromium, brave, edge, arc, vivaldi, helium, yandex, whale, coccoc, opera, opera_gx, auto). A flag simples escolhe auto, o navegador usado mais recentemente com uma sessão ativa do LinkedIn.
  • --auto-import / --no-auto-import - Importe uma sessão de um navegador local com login na primeira chamada de ferramenta que precisar, antes de cair no login manual (padrão: ativado). Ignorado no Docker, atrás de um proxy e em um bind HTTP não-loopback. No macOS, o keychain pode solicitar uma vez.
  • --status - Verifique se a sessão armazenada é válida e saia
  • --logout - Limpe a sessão armazenada
  • --user-data-dir PATH - Diretório do perfil do navegador (padrão: ~/.linkedin-mcp/profile). Rotacionar ou limpar uma sessão exclui este diretório e seu pai, que contém os cookies armazenados e os perfis derivados.
  • --claim-profile-root - Assuma um diretório de perfil que o servidor não reivindicará por conta própria, como um cujo pai já contém outros arquivos. Necessário uma vez por diretório.

Transporte:

  • --transport {stdio,streamable-http} - Force o modo de transporte (padrão: stdio)
  • --host HOST / --port PORT / --path PATH - Endereço do servidor HTTP (padrões: 127.0.0.1, 8000, /mcp)

Timeouts:

  • --timeout MS - Timeout para uma única operação de página (padrão: 5000)
  • --tool-timeout SECONDS - Timeout para uma chamada de ferramenta inteira (padrão: 180). Aumente para raspagens pesadas, redes lentas ou navegador com inicialização a frio.
  • --login-timeout SECONDS - Quanto tempo o navegador de login espera você terminar de entrar (padrão: 1800; 0 = sem limite). --login-viewer encerra a sessão após 30 minutos de qualquer forma.
  • --login-inline-wait SECONDS - Quanto tempo uma chamada de ferramenta espera um login terminar antes de dizer ao modelo para tentar novamente (padrão: 25, máx. 45; 0 = retornar imediatamente)

Navegador compartilhado:

  • --browser-wait SECONDS - Quanto tempo esperar outro processo de servidor entregar o navegador compartilhado (padrão: 25, máx. 45; 0 = reportar ocupado imediatamente). Só importa com vários clientes MCP rodando ao mesmo tempo.
  • --browser-min-hold SECONDS - Tempo mínimo que este processo mantém o navegador compartilhado antes de entregá-lo (padrão: 20). Limitado a 3 segundos abaixo de --browser-wait, então aumente esse junto. Maior significa menos reinicializações do navegador, mas esperas mais longas para outros clientes.
  • --browser-idle-timeout SECONDS - Feche um navegador ocioso e libere o perfil após esse tempo sem uma chamada de ferramenta (padrão: 600; 0 = manter aberto)

Navegador:

  • --no-headless - Mostre a janela do navegador (útil para depuração)
  • --slow-mo MS - Atraso entre ações do navegador (padrão: 0, útil para depuração)
  • --viewport WxH - Tamanho do viewport (padrão: 1280x720). Aplica-se apenas ao modo sem janela; uma inicialização com janela usa o tamanho real da janela.
  • --chrome-path PATH - Caminho para um executável Chrome/Chromium
  • --installer-temp-dir PATH - Diretório existente para arquivos temporários de instalação do navegador (ambiente: INSTALLER_TEMP_DIR).
  • --proxy-server URL - Roteie o tráfego do navegador por um proxy, como scheme://host:port. Configure-o antes de --login; veja Usando um proxy.

Outros:

  • --log-level {DEBUG,INFO,WARNING,ERROR} - Nível de registro (padrão: WARNING)
  • --help - Mostre ajuda

Nota: A maioria das opções de CLI tem equivalentes em variáveis de ambiente. Veja .env.example para detalhes.

Modo HTTP e Claude Desktop

Exemplo de Modo HTTP (para clientes MCP baseados na web):

uv run -m linkedin_mcp_server --transport streamable-http --host 127.0.0.1 --port 8000 --path /mcp

Claude Desktop:

{
  "mcpServers": {
    "mcp-server-linkedin": {
      "command": "uv",
      "args": ["--directory", "/path/to/linkedin-mcp-server", "run", "-m", "linkedin_mcp_server"]
    }
  }
}

stdio é usado por padrão para esta configuração.

❗ Solução de Problemas
Problemas de login
  • Certifique-se de ter apenas uma sessão ativa do LinkedIn por vez
  • O LinkedIn pode exigir uma confirmação de login no aplicativo móvel do LinkedIn para --login
  • O LinkedIn pode mostrar um desafio de captcha durante o login. O comando --login abre um navegador onde você pode resolvê-lo manualmente.
Problemas de raspagem
  • Use --no-headless para ver as ações do navegador e depurar problemas de raspagem
  • Adicione --log-level DEBUG para ver registros mais detalhados
Problemas de sessão
  • O perfil do navegador é armazenado em ~/.linkedin-mcp/profile/
  • Os downloads do navegador gerenciado são armazenados em cache em ~/.linkedin-mcp/patchright-browsers/, compartilhados com as instalações do uvx e do MCP Bundle
  • O cache do navegador continua crescendo: o Patchright mantém uma revisão antiga do Chromium enquanto qualquer versão instalada ainda a referenciar, e um arquivo uv ou um segundo worktree é essa referência. O servidor registra um aviso nomeando o que ele mantém. Para recuperar o espaço, pare todas as instâncias do LinkedIn MCP Server, exclua ~/.linkedin-mcp/patchright-browsers/ e deixe a próxima inicialização baixar o navegador atual.
  • Use --logout para limpar o perfil e começar do zero
Problemas com Python/Patchright
  • Verifique a versão do Python: python --version (deve ser 3.12.4+)
  • Reinstale o Patchright: uv run patchright install chromium
  • Reinstale as dependências: uv sync --reinstall
Problemas de timeout
  • Operações de página falhando (elementos não encontrados, navegação travada): aumente o timeout de operação de página do navegador: --timeout 10000 ou TIMEOUT=10000 (milissegundos, padrão 5000).
  • Chamadas de ferramenta inteiras expirando (ex.: perfis de várias seções, Chromium com inicialização a frio, contêineres lentos): aumente o timeout de execução por ferramenta: --tool-timeout 300 ou TOOL_TIMEOUT=300 (segundos, padrão 180).
  • Primeira chamada de ferramenta sem sessão: se um navegador com login local tiver uma sessão ativa do LinkedIn, o servidor a importa automaticamente (veja AUTO_IMPORT_FROM_BROWSER / --auto-import) em vez de forçar um login manual. No macOS, o keychain pode solicitar uma vez para acesso ao Safe Storage. Se não existir uma sessão de navegador importável, ele cai em abrir uma janela de login e espera até LOGIN_INLINE_WAIT segundos (padrão 25, máx. 45; --login-inline-wait) para que um login rápido seja resolvido em uma chamada. Se a espera expirar, a ferramenta retorna um sinal pendente e o modelo tenta novamente em cerca de 30 segundos. Nem a importação automática nem a espera inline se aplicam no Docker ou quando o servidor está vinculado a um host HTTP não-loopback. Crie a sessão no host com --login, ou use o comando Docker explícito --login --login-viewer.
  • Usuários em conexões lentas podem precisar de valores maiores para qualquer um.
Disseram para executar --login no host quando você já fez
  • Se as chamadas de ferramenta responderem "No valid LinkedIn session is available in Docker" em uma máquina que não é um contêiner, o runtime foi detectado incorretamente. Isso aconteceu em hosts Linux executando um daemon Docker para serviços não relacionados. Defina LINKEDIN_MCP_CONTAINER=false para substituir a detecção; true força o oposto.
Caminho personalizado do Chrome
  • Se o Chrome estiver instalado em um local não padrão, use --chrome-path /path/to/chrome
  • Também pode ser definido via variável de ambiente: CHROME_PATH=/path/to/chrome
  • No macOS e Linux, o navegador deve ser pelo menos tão novo quanto o que abriu seu perfil pela última vez, e o servidor recusa a inicialização caso contrário. (Não no Windows: um navegador lá não pode ter sua versão consultada sem iniciar um, então a verificação está desligada.) Um navegador mais antigo pode silenciosamente descartar stores que um mais novo escreveu, incluindo a sessão salva, e a falha então parece exatamente um login expirado. A mensagem nomeia ambas as versões. Voltar ao Chromium empacotado depois de executar um Chrome mais novo uma vez é a maneira usual de atender a isso; ou execute o navegador mais novo novamente, seja qual for, ou execute --login, que move a sessão armazenada para o lado e faz login do zero com o navegador que você tem. --logout também limpa, mas descarta a sessão antiga em vez de mantê-la recuperável, e pede confirmação no terminal, então não é utilizável de um servidor que um cliente MCP iniciou.
  • Apenas Chrome, Chromium e Chrome for Testing são comparados dessa forma. Forks se numeram de maneira diferente (Vivaldi está em 7.x, o número de build do Edge fica muito abaixo do Chrome sob o mesmo major), então apontar CHROME_PATH para um deles desliga a verificação em vez de produzir uma recusa que nada poderia satisfazer.


> [!IMPORTANT] > **FAQ** > > **É seguro usar? Vou ser banido?** > Esta ferramenta controla uma sessão real de navegador; ela não explora APIs não documentadas nem contorna a autenticação. O Contrato do Usuário do LinkedIn proíbe acesso automatizado, e contas que usam ferramentas automatizadas podem ser restringidas ou banidas. Use por sua conta e risco; não há garantia de segurança da conta. Se você encontrar algum problema, me avise nas [Discussões](https://github.com/stickerdaniel/linkedin-mcp-server/discussions). > > **E se meus agentes executarem muitas ações?** > As chamadas de ferramentas são executadas sequencialmente por meio de uma fila. Você é responsável pelo volume de automação que executa; use com moderação e instrua seus agentes de forma responsável.

Agradecimentos

Construído com FastMCP e Patchright.

Use em conformidade com o Contrato do Usuário do LinkedIn. O acesso automatizado pode violar os termos do LinkedIn e levar a restrições na conta. Esta ferramenta é apenas para uso pessoal e não oferece nenhuma garantia de qualquer tipo.

Licença

Este projeto está licenciado sob a licença Apache 2.0.

Construir sobre este projeto é bem-vindo! Consulte a licença para os termos e o NOTICE para atribuição.