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
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)
| Ferramenta | Descrição |
|---|---|
linkedin_auth_start | Inicia o fluxo de autenticação OAuth 2.0 |
linkedin_auth_callback | Conclui o OAuth com código de autorização |
linkedin_auth_logout | Revoga o token e faz logout |
linkedin_get_my_profile | Obtém seu perfil do LinkedIn (nome, título, foto, e-mail) |
linkedin_get_my_email | Obtém seu endereço de e-mail |
linkedin_get_auth_status | Verifica o status da autenticação |
linkedin_get_rate_limits | Visualiza o uso dos limites de taxa da API |
linkedin_create_post | Cria publicações de texto, artigo ou imagem |
linkedin_delete_post | Exclui suas publicações |
linkedin_create_comment | Comenta em publicações |
linkedin_react_to_post | Reage a publicações (curtir, celebrar, apoiar, amar, perspicaz, engraçado) |
linkedin_upload_image | Envia imagens para publicações |
linkedin_list_my_posts | Lista publicações criadas por meio deste servidor com URNs para referência |
linkedin_create_event | Cria eventos no LinkedIn |
linkedin_get_event | Obté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
- Node.js 20+
- 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
- Acesse linkedin.com/developers/apps e faça login
- Clique em Criar aplicativo
- 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)
- Marque a caixa do contrato legal e clique em Criar aplicativo
Etapa 2: Obter seu Client ID e Client Secret
- Após criar o aplicativo, você será direcionado à página de configurações do aplicativo
- Vá para a aba Auth
- Copie o Client ID — você precisará dele para a configuração
- Copie o Client Secret (clique no ícone de olho para revelá-lo) — você também precisará dele
Etapa 3: Adicionar a URL de Redirecionamento
- Ainda na aba Auth, role até Configurações do OAuth 2.0
- Em URLs de redirecionamento autorizadas para seu aplicativo, clique em Adicionar URL de redirecionamento
- Digite:
http://localhost:3000/callback - 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
- Vá para a aba Products na página do seu aplicativo
- 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
- 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,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:
- Abra a URL no seu navegador
- Entre no LinkedIn e clique em Permitir para autorizar o aplicativo
- O LinkedIn redireciona para
http://localhost:3000/callback?code=XXX&state=YYY - Como não há servidor local em execução, você verá um erro de "página não encontrada" — isso é esperado
- Copie a URL completa da barra de endereços do seu navegador e cole-a de volta no assistente
- O assistente extrai os parâmetros
codeestatee 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ável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
LINKEDIN_CLIENT_ID | Sim | - | ID do cliente do aplicativo do LinkedIn |
LINKEDIN_CLIENT_SECRET | Sim | - | Segredo do cliente do aplicativo do LinkedIn |
LINKEDIN_REDIRECT_URI | Não | http://localhost:3000/callback | URI de redirecionamento OAuth |
LINKEDIN_MCP_DATA_DIR | Não | ~/.linkedin-mcp | Diretório para armazenamento de tokens |
LINKEDIN_API_BASE_URL | Não | https://api.linkedin.com | URL base da API (substituição para testes) |
LINKEDIN_AUTH_BASE_URL | Não | https://www.linkedin.com/oauth/v2 | URL 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.
| Camada | O que testa | Arquivos |
|---|---|---|
| Testes unitários | Auth, PKCE, armazenamento de tokens, limitador de taxa, erros, capacidades | tests/unit/ |
| Testes de integração | Fluxo completo do protocolo MCP via transporte em memória | tests/integration/ |
| Testes de contrato | Formatos de solicitação/resposta correspondem à especificação da API do LinkedIn | tests/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_socialestá 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