LinkedIn MCP Server

Um servidor MCP para a API REST v2 do LinkedIn que permite que assistentes de IA criem, listem e excluam publicações, gerenciem eventos, carreguem imagens, comentem e reajam—com OAuth 2.0 e persistência de sessão, rastreamento local do histórico de publicações e múltiplos testes automatizados.

Documentação

LinkedIn MCP Server

linkedin-mcp-server MCP server

Um servidor Model Context Protocol (MCP) que fornece aos assistentes de IA acesso à API oficial do LinkedIn. Crie publicações, gerencie eventos e interaja com o LinkedIn — tudo por meio de linguagem natural via qualquer cliente compatível com MCP.

Somente API oficial. Sem scraping, sem endpoints não oficiais, sem risco para a conta.

Recursos

Ferramentas de Autoatendimento (Sem Aprovação do LinkedIn Necessária)

FerramentaDescrição
linkedin_auth_startInicia o fluxo de autenticação OAuth 2.0
linkedin_auth_callbackConclui o OAuth com código de autorização
linkedin_auth_logoutRevoga o token e faz logout
linkedin_get_my_profileObtém seu perfil do LinkedIn (nome, título, foto, e-mail)
linkedin_get_my_emailObtém seu endereço de e-mail
linkedin_get_auth_statusVerifica o status da autenticação
linkedin_get_rate_limitsVisualiza o uso dos limites de taxa da API
linkedin_create_postCria publicações de texto, artigo ou imagem
linkedin_delete_postExclui suas publicações
linkedin_create_commentComenta em publicações
linkedin_react_to_postReage a publicações (curtir, celebrar, apoiar, amar, perspicaz, engraçado)
linkedin_upload_imageEnvia imagens para publicações
linkedin_list_my_postsLista publicações criadas por meio deste servidor com URNs para referência
linkedin_create_eventCria eventos no LinkedIn
linkedin_get_eventObtém detalhes do evento

Destaques da Arquitetura

  • OAuth 2.0 — Autenticação segura com armazenamento persistente de tokens
  • Restauração automática de sessão — Sobrevive a reinicializações do servidor sem reautenticação (até o token expirar)
  • Rastreamento de histórico de publicações — Registro SQLite local das publicações criadas pelo servidor para fácil referência e exclusão
  • Limitação de taxa adaptativa — Aprende os limites reais do LinkedIn a partir dos cabeçalhos de resposta
  • Tentativa automática — Backoff exponencial para falhas transitórias (429, 5xx)
  • Detecção de capacidades — Expõe apenas ferramentas correspondentes aos seus escopos concedidos
  • Versionamento de API — Gerencia a rotação mensal de versão da API do LinkedIn

Pré-requisitos

  1. Node.js 20+
  2. Aplicativo de Desenvolvedor do LinkedIn (veja as etapas de configuração abaixo)

Configuração do Aplicativo do LinkedIn

Etapa 1: Criar um Aplicativo de Desenvolvedor do LinkedIn

  1. Acesse linkedin.com/developers/apps e faça login
  2. Clique em Criar aplicativo
  3. Preencha os campos obrigatórios:
    • Nome do aplicativo: Escolha qualquer nome (por exemplo, "My MCP LinkedIn")
    • Página do LinkedIn: Selecione sua página do LinkedIn ou crie uma, se necessário
    • URL da política de privacidade: Pode usar a URL do seu site ou um espaço reservado
    • Logotipo do aplicativo: Envie qualquer imagem (obrigatório)
  4. Marque a caixa do contrato legal e clique em Criar aplicativo

Etapa 2: Obter seu Client ID e Client Secret

  1. Após criar o aplicativo, você será direcionado à página de configurações do aplicativo
  2. Vá para a aba Auth
  3. Copie o Client ID — você precisará dele para a configuração
  4. Copie o Client Secret (clique no ícone de olho para revelá-lo) — você também precisará dele

Etapa 3: Adicionar a URL de Redirecionamento

  1. Ainda na aba Auth, role até Configurações do OAuth 2.0
  2. Em URLs de redirecionamento autorizadas para seu aplicativo, clique em Adicionar URL de redirecionamento
  3. Digite: http://localhost:3000/callback
  4. Clique em Atualizar para salvar

Importante: A URL de redirecionamento deve corresponder exatamente — incluindo o protocolo (http://), a porta (:3000) e o caminho (/callback). Sem barra final.

Etapa 4: Ativar os Produtos Necessários

  1. Vá para a aba Products na página do seu aplicativo
  2. Solicite acesso a estes dois produtos:
    • Sign In with LinkedIn using OpenID Connect — clique em Request access, revise os termos e aceite
    • Share on LinkedIn — clique em Request access, revise os termos e aceite
  3. Ambos os produtos geralmente são aprovados instantaneamente para uso de autoatendimento

Verifique: Após ativar, volte para a aba Auth. Em Escopos do OAuth 2.0, você deve ver: openid, profile, email, w_member_social.

Início Rápido

1. Instalar

git clone https://github.com/souravdasbiswas/linkedin-mcp-server.git
cd linkedin-mcp-server
npm install
npm run build

2. Configurar Seu Cliente MCP

Para Claude Code (recomendado):

claude mcp add linkedin \
  -e LINKEDIN_CLIENT_ID=your_client_id \
  -e LINKEDIN_CLIENT_SECRET=your_client_secret \
  -- node /path/to/linkedin-mcp-server/dist/index.js

Ou adicione manualmente a ~/.claude.json:

{
  "mcpServers": {
    "linkedin": {
      "command": "node",
      "args": ["/path/to/linkedin-mcp-server/dist/index.js"],
      "env": {
        "LINKEDIN_CLIENT_ID": "your_client_id",
        "LINKEDIN_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Para Claude Desktop, adicione a claude_desktop_config.json:

{
  "mcpServers": {
    "linkedin": {
      "command": "node",
      "args": ["/path/to/linkedin-mcp-server/dist/index.js"],
      "env": {
        "LINKEDIN_CLIENT_ID": "your_client_id",
        "LINKEDIN_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Substitua your_client_id e your_client_secret pelos valores da Etapa 2.

3. Autenticar

Depois de conectado, diga ao seu assistente de IA:

"Autentique com o LinkedIn"

O assistente gerará uma URL OAuth. Veja o que acontece:

  1. Abra a URL no seu navegador
  2. Entre no LinkedIn e clique em Permitir para autorizar o aplicativo
  3. O LinkedIn redireciona para http://localhost:3000/callback?code=XXX&state=YYY
  4. Como não há servidor local em execução, você verá um erro de "página não encontrada" — isso é esperado
  5. Copie a URL completa da barra de endereços do seu navegador e cole-a de volta no assistente
  6. O assistente extrai os parâmetros code e state e conclui a autenticação

Após a primeira autenticação, sua sessão persiste entre reinicializações do servidor (o token é válido por 60 dias). Você só precisa reautenticar quando o token expirar.

4. Usar

Exemplos de comandos:

  • "Publicar no LinkedIn: Acabei de lançar um novo recurso que reduz a latência da API em 40%"
  • "Listar minhas publicações do LinkedIn" — veja todas as publicações que você fez pelo servidor
  • "Excluir minha última publicação do LinkedIn"
  • "Criar um evento no LinkedIn para o encontro da equipe na próxima sexta-feira às 14h"
  • "Reagir a esta publicação do LinkedIn com uma reação de celebração"
  • "Quais são as informações do meu perfil do LinkedIn?"

Variáveis de Ambiente

VariávelObrigatóriaPadrãoDescrição
LINKEDIN_CLIENT_IDSim-ID do cliente do aplicativo do LinkedIn
LINKEDIN_CLIENT_SECRETSim-Segredo do cliente do aplicativo do LinkedIn
LINKEDIN_REDIRECT_URINãohttp://localhost:3000/callbackURI de redirecionamento OAuth
LINKEDIN_MCP_DATA_DIRNão~/.linkedin-mcpDiretório para armazenamento de tokens
LINKEDIN_API_BASE_URLNãohttps://api.linkedin.comURL base da API (substituição para testes)
LINKEDIN_AUTH_BASE_URLNãohttps://www.linkedin.com/oauth/v2URL base de autenticação

Desenvolvimento

# Install dependencies
npm install

# Type check
npm run typecheck

# Run tests
npm test

# Run tests in watch mode
npm run test:watch

# Run with coverage
npm run test:coverage

# Lint
npm run lint

# Dev mode (tsx, no build needed)
npm run dev

Arquitetura de Testes

Os testes são executados inteiramente contra um servidor simulado da API do LinkedIn — nenhuma chamada real de API é feita.

CamadaO que testaArquivos
Testes unitáriosAuth, PKCE, armazenamento de tokens, limitador de taxa, erros, capacidadestests/unit/
Testes de integraçãoFluxo completo do protocolo MCP via transporte em memóriatests/integration/
Testes de contratoFormatos de solicitação/resposta correspondem à especificação da API do LinkedIntests/contract/

Estrutura do Projeto

src/
  index.ts              # Entry point, stdio transport
  server.ts             # MCP server wiring
  auth/
    oauth2.ts           # OAuth 2.0 flow + token exchange
    token-store.ts      # SQLite token persistence + session auto-restore
    pkce.ts             # PKCE challenge generation (available for public clients)
    tools.ts            # Auth MCP tools
  client/
    api-client.ts       # HTTP client with retry
    rate-limiter.ts     # Adaptive rate limiting
    version-manager.ts  # LinkedIn API versioning
    errors.ts           # Structured error types
    post-history.ts     # Local post tracking (SQLite)
  capabilities/
    detector.ts         # Scope-based capability detection
  modules/
    profile/tools.ts    # Profile reading tools
    posting/tools.ts    # Post creation/management tools
    events/tools.ts     # Event management tools
  types/
    linkedin.ts         # LinkedIn API type definitions
    config.ts           # Server configuration types

Limitações

Estas são restrições da API do LinkedIn, não limitações do servidor:

  • Não é possível ler perfis de outras pessoas — Apenas o perfil do usuário autenticado
  • Não é possível pesquisar pessoas — Não há API pública de pesquisa
  • Não é possível enviar mensagens — Disponível apenas para parceiros do Sales Navigator
  • Não é possível ler feeds — O escopo r_member_social está fechado
  • Não é possível acessar conexões — Apenas a contagem de conexões com aprovação da Marketing API
  • Limites de taxa — ~500 chamadas de aplicativo/dia, ~100 por membro/dia (nível de desenvolvimento)

Expansão para o Nível Pro

Se o seu aplicativo do LinkedIn tiver aprovação da Community Management API ou da Advertising API, a detecção de capacidades do servidor ativará automaticamente módulos adicionais quando você autenticar com os escopos correspondentes. A arquitetura modular suporta a adição de novos módulos de API sem modificar o servidor principal.

Licença

MIT