X MCP Server

Um servidor MCP para integração com X (Twitter), permitindo ler timelines e interagir com tweets.

Documentação

X MCP Server

Um servidor Model Context Protocol (MCP) para integração com X (Twitter). Fornece 26 ferramentas para leitura de timelines, postagem, busca, engajamento (curtidas, reposts, favoritos), consulta de usuários, exportação de seguidores, menções, curtidas, artigos e listas. Projetado para uso com o Claude desktop e outros clientes compatíveis com MCP.

X Server MCP server

Recursos

  • Timeline e Busca - Timeline inicial, busca de posts recentes (janela de 7 dias)
  • Gerenciamento de Posts - Criar, responder, citar, excluir posts com mídia opcional
  • Engajamento - Curtir/descurtir, repostar/desfazer, favoritar/desfavoritar
  • Dados do Usuário - Menções, posts curtidos, seguidores, seguindo, bloqueios, mutes, listas próprias, listas seguidas e associações a listas
  • Consulta de Usuários - Obter perfis de usuários e seus posts recentes
  • Upload de Mídia - Imagens (PNG, JPEG, GIF, WEBP) e vídeos (MP4, MOV, AVI, WEBM, M4V) via API de upload v2
  • Autenticação Dupla - OAuth 1.0a para operações de postagem, OAuth 2.0 para upload de mídia (upload v1.1 foi descontinuado em junho de 2025)
  • Limitação de Taxa - Rastreamento automático de limite de taxa por endpoint com mensagens de erro claras
  • TypeScript - Segurança total de tipos, estrutura de arquivos modular

Pré-requisitos

  • Node.js >= 18.0.0
  • Conta de Desenvolvedor X (Twitter)
  • Aplicativo Claude desktop (ou qualquer cliente compatível com MCP)

Acesso e Preços da API X

NívelCustoLeituras de PostsEscritas de PostsObservações
Grátis$0~100/mês~500/mêsSem curtidas/seguir; upload de mídia requer OAuth 2.0
Básico$200/mês10.000/mês3.000/mêsBusca, acesso de leitura limitado
Pro$5.000/mês1.000.000/mês300.000/mêsBusca completa, stream filtrado
Pague-por-usoBaseado em créditos~$0,005/leituraVariaLançado em fevereiro de 2026, limite de 2M leituras

Os endpoints de Curtir e Seguir foram removidos do nível Grátis em agosto de 2025. Os endpoints de Seguir/Bloquear são exclusivos do Enterprise a partir de 2025.

Instalação

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

Autenticação

O servidor suporta dois métodos de autenticação. Você precisa de pelo menos um configurado.

OAuth 1.0a (Obrigatório para operações básicas)

Funciona para todas as operações de postagem/engajamento/busca/usuário.

Variável de AmbienteDescrição
TWITTER_API_KEYConsumer Key (Chave da API)
TWITTER_API_SECRETConsumer Secret (Segredo da Chave da API)
TWITTER_ACCESS_TOKENToken de Acesso do Usuário
TWITTER_ACCESS_SECRETSegredo do Token de Acesso do Usuário

Configuração: No Portal do Desenvolvedor X:

  1. Crie um projeto e um aplicativo
  2. Ative OAuth 1.0a em "Configurações de autenticação do usuário"
  3. Defina as permissões como "Ler e Escrever"
  4. Gere as Consumer Keys e os Tokens de Acesso

OAuth 2.0 (Obrigatório para upload de mídia)

O endpoint de upload de mídia v1.1 foi descontinuado em junho de 2025. O upload de mídia agora requer OAuth 2.0 via API de upload v2.

Opção A - Token de acesso direto:

VariávelDescrição
TWITTER_OAUTH2_ACCESS_TOKENToken de acesso do usuário OAuth 2.0 (expira em 2 horas)

Opção B - Atualização automática (recomendado para servidores de longa duração):

VariávelDescrição
TWITTER_CLIENT_IDID do Cliente OAuth 2.0
TWITTER_CLIENT_SECRETSegredo do Cliente OAuth 2.0 (opcional para clientes públicos)
TWITTER_OAUTH2_REFRESH_TOKENToken de Atualização OAuth 2.0

Os tokens são atualizados automaticamente e persistidos em ~/.x-mcp-tokens.json.

Configuração: No Portal do Desenvolvedor X:

  1. Nas configurações do seu aplicativo, ative OAuth 2.0
  2. Defina o tipo como "Cliente confidencial" ou "Cliente público"
  3. Adicione uma URL de callback
  4. Solicite escopos: tweet.read, tweet.write, users.read, media.write, offline.access, like.read, like.write, bookmark.read, bookmark.write, follows.read, block.read, mute.read, list.read

Configuração do Claude Desktop

Adicione a %APPDATA%/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "x": {
      "command": "node",
      "args": ["C:/path/to/x-mcp-server/build/index.js"],
      "env": {
        "TWITTER_API_KEY": "your-api-key",
        "TWITTER_API_SECRET": "your-api-secret",
        "TWITTER_ACCESS_TOKEN": "your-access-token",
        "TWITTER_ACCESS_SECRET": "your-access-secret",
        "TWITTER_OAUTH2_ACCESS_TOKEN": "your-oauth2-token"
      }
    }
  }
}

Backend de Busca Xquik Opcional

search_tweets pode usar Xquik enquanto o restante do servidor mantém o cliente padrão da API X. Defina:

VariávelDescrição
X_MCP_SEARCH_BACKEND=xquikRoteia apenas search_tweets para Xquik
XQUIK_API_KEYChave da API Xquik
XQUIK_API_BASE_URLURL base opcional, padrão é https://xquik.com/api/v1

Ferramentas Disponíveis (26)

Timeline e Busca

FerramentaDescriçãoParâmetros Principais
get_home_timelineObter posts recentes da timeline iniciallimit (1-100)
search_tweetsBuscar posts recentes (janela de 7 dias)query, limit

Gerenciamento de Posts

FerramentaDescriçãoParâmetros Principais
get_tweetConsultar um post por IDtweet_id
create_tweetCriar um post com mídia opcionaltext, image_path?, video_path?
reply_to_tweetResponder a um post com mídia opcionaltweet_id, text, image_path?, video_path?
quote_tweetCitar um post com comentáriotweet_id, text
delete_tweetExcluir seu posttweet_id

Engajamento

FerramentaDescriçãoParâmetros Principais
like_tweetCurtir um post (nível Básico+)tweet_id
unlike_tweetRemover uma curtidatweet_id
retweetRepostar para sua timelinetweet_id
undo_retweetRemover um reposttweet_id
bookmark_tweetFavoritar para depoistweet_id
unbookmark_tweetRemover um favoritotweet_id
get_bookmarksObter seus favoritoslimit (1-100)

Usuários

FerramentaDescriçãoParâmetros Principais
get_userConsultar usuário por nome de usuáriousername
get_user_tweetsObter posts recentes de um usuáriousername, limit
get_user_mentionsObter posts mencionando um usuáriousername, limit
get_user_liked_tweetsObter posts curtidos por um usuáriousername, limit
get_user_followersObter seguidores de um usuáriousername, limit
get_user_followingObter contas que um usuário segueusername, limit
get_blocking_usersObter usuários bloqueados pela conta autenticadalimit
get_muting_usersObter usuários com mute pela conta autenticadalimit
get_owned_listsObter listas pertencentes a um usuáriousername, limit
get_followed_listsObter listas seguidas por um usuáriousername, limit
get_list_membershipsObter listas às quais um usuário pertenceusername, limit

Artigos

FerramentaDescriçãoParâmetros Principais
get_articleBuscar o conteúdo completo do corpo de um post de Artigo Xtweet_id

Suporte a Mídia

  • Imagens: PNG, JPEG, GIF, WEBP (máx. 5MB)
  • Vídeos: MP4, MOV, AVI, WEBM, M4V (máx. 512MB, upload em partes com streaming)
  • Não é possível anexar imagem e vídeo ao mesmo post
  • Requer credenciais OAuth 2.0 (upload v1.1 descontinuado em junho de 2025)
  • Restrição de caminho: Apenas arquivos dentro do seu diretório inicial ou diretório temporário do sistema podem ser enviados (evita path traversal)

Segurança

  • Validação de entrada: IDs de tweets devem ser numéricos (1-20 dígitos), nomes de usuário devem corresponder a [A-Za-z0-9_]{1,15}
  • Restrição de caminho de mídia: Caminhos de upload são validados contra uma lista de permissões (diretório inicial, diretório temporário)
  • Armazenamento de tokens: Tokens OAuth 2.0 persistidos em ~/.x-mcp-tokens.json com permissões 0o600 (Unix). No Windows, as permissões de arquivo não são aplicadas pelo SO - proteja o arquivo via ACLs NTFS ou use variáveis de ambiente.
  • Sanitização de erros: Detalhes de erro da API X são registrados apenas no lado do servidor; mensagens sanitizadas são retornadas aos clientes MCP
  • Mutex de atualização: Tentativas concorrentes de atualização de token são deduplicadas para evitar condições de corrida

Desenvolvimento

npm run build    # Compile TypeScript
npm run dev      # Watch mode
npm start        # Run the server

Estrutura do Projeto

src/
  index.ts              # MCP server entry point & handler dispatch
  client.ts             # Twitter client setup (OAuth 1.0a + OAuth 2.0)
  media.ts              # v2 media upload (simple + chunked)
  rate-limit.ts         # Per-endpoint rate limiting
  tools/
    definitions.ts      # All 16 tool schemas
    handlers.ts         # Tool handler implementations

Emparelhamento com GetXAPI para Operações de Leitura Mais Baratas (Opcional)

Para usuários que precisam de uma opção mais barata ou com maior limite de taxa para operações somente leitura do Twitter (X), como busca de tweets, consulta de perfis e listas de seguidores, este projeto pode ser emparelhado com GetXAPI, uma API de dados Twitter / X econômica com preço de $0,05 por 1K tweets em comparação com o nível básico da API X oficial a $200/mês.

Dois padrões de integração:

  1. Execute lado a lado no seu cliente de IA. Mantenha este projeto para seu fluxo de trabalho principal e adicione o servidor MCP oficial GetXAPI para tarefas com muitas leituras. Cada nome de ferramenta roteia para o backend mais adequado para aquela operação.

  2. Adicione uma alternância de backend. Para uma referência em nível de código de um backend alternativo opcional atrás de uma única variável de ambiente, veja o padrão de PR mesclado em um projeto irmão.

Início rápido do GetXAPI:

Este emparelhamento é totalmente opcional. Nenhuma mudança de comportamento para usuários existentes.

Licença

MIT

Contribuindo

  1. Faça um fork do repositório
  2. Crie sua branch de recurso (git checkout -b feature/amazing-feature)
  3. Faça commit das suas alterações (git commit -m 'Add some amazing feature')
  4. Envie para a branch (git push origin feature/amazing-feature)
  5. Abra um Pull Request