X (Twitter)
Um servidor MCP para interagir com a API do X (Twitter), exigindo credenciais de desenvolvedor.
Documentação
Servidor MCP do X (Twitter)
Um servidor Model Context Protocol (MCP) para interagir com o Twitter (X) por meio de ferramentas de IA. Este servidor permite buscar tweets, publicar tweets, pesquisar no Twitter, gerenciar seguidores e muito mais, tudo por meio de comandos em linguagem natural em Ferramentas de IA.
Recursos
- Buscar perfis de usuários, seguidores e listas de seguidos.
- Publicar, excluir e favoritar tweets.
- Pesquisar no Twitter por tweets e tendências.
- Gerenciar favoritos e timelines.
- Tratamento integrado de limite de taxa para a API do Twitter.
- Usa a API v2 do Twitter com autenticação adequada (chaves e tokens de API), evitando o hack de usuário/senha para minimizar o risco de suspensões de conta.
- Fornece uma implementação completa dos endpoints da API v2 do Twitter para gerenciamento de usuários, gerenciamento de tweets, timelines e funcionalidade de pesquisa.
Pré-requisitos
- Python 3.10 ou superior: Garanta que o Python esteja instalado no seu sistema.
- Conta de Desenvolvedor do Twitter: Você precisa de credenciais de API (API Key, API Secret, Access Token, Access Token Secret e Bearer Token) do Portal do Desenvolvedor do Twitter.
- Opcional: Claude Desktop: Baixe e instale o aplicativo Claude Desktop no site da Anthropic.
- Opcional: Node.js (para integração MCP): Necessário para executar servidores MCP no Claude Desktop.
- Um gerenciador de pacotes como
uvoupippara dependências Python.
Instalação
Opção 1: Instalação via Smithery (Recomendado)
Para instalar o servidor MCP do X (Twitter) para Claude Desktop automaticamente via Smithery:
npx -y @smithery/cli install @rafaljanicki/x-twitter-mcp-server --client claude
Opção 2: Instalar do PyPI
A maneira mais fácil de instalar o x-twitter-mcp é via PyPI:
pip install x-twitter-mcp
Opção 3: Instalar a partir do código-fonte
Se você preferir instalar a partir do repositório de código-fonte:
-
Clone o Repositório:
git clone https://github.com/rafaljanicki/x-twitter-mcp-server.git cd x-twitter-mcp-server -
Configure um Ambiente Virtual (opcional, mas recomendado):
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate -
Instale as Dependências: Usando
uv(recomendado, pois o projeto usauv.lock):uv syncAlternativamente, usando
pip:pip install . -
Configure as Variáveis de Ambiente:
- Crie um arquivo
.envna raiz do projeto (você pode copiar.env.examplese fornecido). - Adicione suas credenciais da API do Twitter:
TWITTER_API_KEY=your_api_key TWITTER_API_SECRET=your_api_secret TWITTER_ACCESS_TOKEN=your_access_token TWITTER_ACCESS_TOKEN_SECRET=your_access_token_secret TWITTER_BEARER_TOKEN=your_bearer_token - Para usar as ferramentas de favoritos (
get_bookmarks,delete_all_bookmarks), adicione também um token de acesso de usuário OAuth 2.0:
Veja Obtendo um Token de Usuário OAuth 2.0 abaixo.TWITTER_OAUTH2_USER_ACCESS_TOKEN=your_oauth2_user_token
- Crie um arquivo
Obtendo um Token de Usuário OAuth 2.0
Os endpoints de favoritos (GET /2/users/:id/bookmarks, DELETE /2/users/:id/bookmarks/:tweet_id) exigem Contexto de Usuário OAuth 2.0 — eles rejeitam tanto tokens de portador somente para aplicativos quanto OAuth 1.0a. Você precisa executar o fluxo de autorização PKCE uma vez para obter um token com escopo de usuário.
Etapas
-
No Portal do Desenvolvedor do Twitter, abra seu aplicativo → Configurações → Configurações de autenticação de usuário e habilite o OAuth 2.0. Defina uma URL de retorno de chamada (por exemplo,
https://localhost/). -
Execute o fluxo PKCE usando Tweepy:
import tweepy
handler = tweepy.OAuth2UserHandler(
client_id="YOUR_CLIENT_ID", # OAuth 2.0 Client ID (from Developer Portal)
redirect_uri="https://localhost/",
scope=["bookmark.read", "bookmark.write", "users.read", "offline.access"],
client_secret="YOUR_CLIENT_SECRET", # Optional for public clients
)
print(handler.get_authorization_url())
# Open the URL, authorize, copy the redirected URL, then:
redirected_url = input("Paste redirected URL: ")
token = handler.fetch_token(redirected_url)
print(token["access_token"])
- Defina o token resultante como
TWITTER_OAUTH2_USER_ACCESS_TOKENno seu ambiente ou arquivo.env.
Executando o Servidor
O transporte preferido é HTTP Streamable. Use uma das seguintes opções:
Recomendado: HTTP Streamable (Docker/Smithery)
Execute o servidor como um serviço HTTP com endpoints HTTP Streamable e SSE.
-
Construa a imagem Docker:
docker build -t x-twitter-mcp . -
Execute o contêiner (Smithery usa PORT; o padrão aqui é 8081):
docker run -p 8081:8081 -e PORT=8081 x-twitter-mcp -
Endpoints:
- HTTP Streamable (JSON-RPC sobre HTTP):
POST http://localhost:8081/mcp - SSE (Server-Sent Events):
GET http://localhost:8081/sse
- HTTP Streamable (JSON-RPC sobre HTTP):
-
Passe a configuração por solicitação (recomendado no Smithery) via parâmetro de consulta
configcodificado em base64. Exemplo de JSON de configuração:{"twitterApiKey":"...","twitterApiSecret":"...","twitterAccessToken":"...","twitterAccessTokenSecret":"...","twitterBearerToken":"..."}Codifique e chame
initialize:CONFIG_B64=$(printf '%s' '{"twitterApiKey":"YOUR_KEY","twitterApiSecret":"YOUR_SECRET","twitterAccessToken":"YOUR_TOKEN","twitterAccessTokenSecret":"YOUR_TOKEN_SECRET","twitterBearerToken":"YOUR_BEARER"}' | base64) curl -sS -X POST "http://localhost:8081/mcp?config=${CONFIG_B64}" \ -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":"1","method":"initialize","params":{"capabilities":{}}}'
Observações:
- Um
POST /retornará 404; use/mcppara HTTP Streamable e/ssepara SSE. - Quando implantado via Smithery,
smithery.yamlé configurado pararuntime: containerestartCommand.type: http.
HTTP Streamable (Local, sem Docker)
Execute o servidor ASGI diretamente.
Se instalado do PyPI:
python -m x_twitter_mcp.http_server
Se instalado do código-fonte com uv:
uv run python -m x_twitter_mcp.http_server
Os endpoints e o envio de configuração são os mesmos acima.
STDIO Legado (Script CLI)
O projeto também expõe um script CLI STDIO x-twitter-mcp-server para clientes de desktop que esperam STDIO.
Se instalado do PyPI:
x-twitter-mcp-server
Se instalado do código-fonte com uv:
uv run x-twitter-mcp-server
Usando com Claude Desktop
Para usar este servidor MCP com Claude Desktop, você precisa configurar o Claude para conectar-se ao servidor. Siga estas etapas:
Etapa 1: Instale o Node.js
O Claude Desktop usa Node.js para executar servidores MCP. Se você não tiver o Node.js instalado:
- Baixe e instale o Node.js em nodejs.org.
- Verifique a instalação:
node --version
Etapa 2: Localize a Configuração do Claude Desktop
O Claude Desktop usa um arquivo claude_desktop_config.json para configurar servidores MCP.
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Se o arquivo não existir, crie-o.
Etapa 3: Configure o Servidor MCP
Edite claude_desktop_config.json para incluir o servidor x-twitter-mcp. Substitua /path/to/x-twitter-mcp-server pelo caminho real para o diretório do seu projeto (se instalado do código-fonte) ou o caminho para o seu executável Python (se instalado do PyPI).
Se instalado do PyPI:
{
"mcpServers": {
"x-twitter-mcp": {
"command": "x-twitter-mcp-server",
"args": [],
"env": {
"PYTHONUNBUFFERED": "1",
"TWITTER_API_KEY": "your_api_key",
"TWITTER_API_SECRET": "your_api_secret",
"TWITTER_ACCESS_TOKEN": "your_access_token",
"TWITTER_ACCESS_TOKEN_SECRET": "your_access_token_secret",
"TWITTER_BEARER_TOKEN": "your_bearer_token",
"TWITTER_OAUTH2_USER_ACCESS_TOKEN": "your_oauth2_user_token"
}
}
}
}
Se instalado do código-fonte com uv:
{
"mcpServers": {
"x-twitter-mcp": {
"command": "uv",
"args": [
"--directory",
"/path/to/x-twitter-mcp-server",
"run",
"x-twitter-mcp-server"
],
"env": {
"PYTHONUNBUFFERED": "1"
}
}
}
}
"command": "x-twitter-mcp-server": Usa o script CLI diretamente se instalado do PyPI."env": Se instalado do PyPI, você pode precisar fornecer variáveis de ambiente diretamente na configuração (já que não há arquivo.env). Se instalado do código-fonte, o arquivo.envserá usado."env": {"PYTHONUNBUFFERED": "1"}: Garante que a saída não seja armazenada em buffer para melhor registro no Claude.
Etapa 4: Reinicie o Claude Desktop
- Saia completamente do Claude Desktop.
- Reabra o Claude Desktop para carregar a nova configuração.
Etapa 5: Verifique a Conexão
- Abra o Claude Desktop.
- Procure um ícone de martelo ou conector na área de entrada (canto inferior direito). Isso indica que as ferramentas MCP estão disponíveis.
- Clique no ícone para ver as ferramentas disponíveis do
x-twitter-mcp, comopost_tweet,search_twitter,get_user_profile, etc.
Etapa 6: Teste com o Claude
Agora você pode interagir com o Twitter usando linguagem natural no Claude Desktop. Aqui estão alguns exemplos de prompts:
-
Buscar um Perfil de Usuário:
Get the Twitter profile for user ID 123456.O Claude chamará a ferramenta
get_user_profilee retornará os detalhes do usuário. -
Publicar um Tweet:
Post a tweet saying "Hello from Claude Desktop! #MCP"O Claude usará a ferramenta
post_tweetpara publicar o tweet e confirmar a ação. -
Pesquisar no Twitter:
Search Twitter for recent tweets about AI.O Claude invocará a ferramenta
search_twittere retornará tweets relevantes. -
Obter Tendências:
What are the current trending topics on Twitter?O Claude usará a ferramenta
get_trendspara buscar tópicos em alta.
Quando solicitado, conceda ao Claude permissão para usar as ferramentas MCP para a sessão de chat.
Fluxo de Trabalho Companheiro do OpenClaw
Este servidor MCP é melhor quando um cliente MCP deve chamar ferramentas da API v2 do Twitter diretamente. Se o fluxo de trabalho for executado no OpenClaw e precisar de metadados de instalação de plugins, descoberta de endpoints, alertas de monitoramento, webhooks, sorteios, fluxos de upload ou download de mídia, mensagens diretas, exportação de seguidores ou ações de postagem e resposta com aprovação, use o TweetClaw como um plugin separado do OpenClaw e passe IDs de tweets revisados ou URLs entre as ferramentas.
Veja Fluxo de Trabalho Companheiro do OpenClaw para um fluxo de comandos que mantém as credenciais separadas e evita ações de escrita duplicadas.
Ferramentas Disponíveis
Abaixo está uma lista de todas as ferramentas fornecidas pelo servidor x-twitter-mcp, juntamente com exemplos de execução no Claude Desktop usando prompts em linguagem natural.
Ferramentas de Gerenciamento de Usuários
get_user_profile
- Descrição: Obtenha informações detalhadas do perfil de um usuário.
- Exemplo no Claude Desktop:
O Claude retornará os detalhes do perfil do usuário, incluindo ID, nome, nome de usuário, URL da imagem do perfil e descrição.Get the Twitter profile for user ID 123456789.
get_user_by_screen_name
- Descrição: Busca um usuário pelo nome de tela.
- Exemplo no Claude Desktop:
O Claude retornará os detalhes do perfil do usuário.Get the Twitter user with screen name "example_user".
get_user_by_id
- Descrição: Busca um usuário pelo ID.
- Exemplo no Claude Desktop:
O Claude retornará os detalhes do perfil do usuário.Fetch the Twitter user with ID 987654321.
get_user_followers
- Descrição: Recupera uma lista de seguidores de um determinado usuário.
- Exemplo no Claude Desktop:
O Claude retornará uma lista de até 50 seguidores.Get the followers of user ID 123456789, limit to 50.
get_user_following
- Descrição: Recupera usuários que o usuário determinado está seguindo.
- Exemplo no Claude Desktop:
O Claude retornará uma lista de até 50 usuários.Who is user ID 123456789 following? Limit to 50 users.
get_user_followers_you_know
- Descrição: Recupera uma lista de seguidores em comum.
- Exemplo no Claude Desktop:
O Claude retornará uma lista de até 50 seguidores em comum (simulado filtrando seguidores).Get common followers for user ID 123456789, limit to 50.
get_user_subscriptions
- Descrição: Recupera uma lista de usuários aos quais o usuário especificado está inscrito.
- Exemplo no Claude Desktop:
O Claude retornará uma lista de até 50 usuários (usando seguindo como proxy para inscrições).Get the subscriptions for user ID 123456789, limit to 50.
Ferramentas de Gerenciamento de Tweets
post_tweet
- Descrição: Publica um tweet com mídia opcional, resposta e tags.
- Exemplo no Claude Desktop:
O Claude publicará o tweet e retornará os detalhes do tweet.Post a tweet saying "Hello from Claude Desktop! #MCP"
delete_tweet
- Descrição: Exclui um tweet pelo seu ID.
- Exemplo no Claude Desktop:
O Claude excluirá o tweet e confirmará a ação.Delete the tweet with ID 123456789012345678.
get_tweet_details
- Descrição: Obtém informações detalhadas sobre um tweet específico.
- Exemplo no Claude Desktop:
O Claude retornará os detalhes do tweet, incluindo ID, texto, data de criação e ID do autor.Get details for tweet ID 123456789012345678.
create_poll_tweet
- Descrição: Cria um tweet com uma enquete.
- Exemplo no Claude Desktop:
O Claude criará o tweet com enquete e retornará os detalhes do tweet.Create a poll tweet with the question "What's your favorite color?" and options "Red", "Blue", "Green" for 60 minutes.
vote_on_poll
- Descrição: Vota em uma enquete.
- Exemplo no Claude Desktop:
O Claude retornará uma resposta simulada (já que a API v2 do Twitter não suporta votação em enquetes).Vote "Blue" on the poll in tweet ID 123456789012345678.
favorite_tweet
- Descrição: Favorita um tweet.
- Exemplo no Claude Desktop:
O Claude favoritará o tweet e confirmará a ação.Like the tweet with ID 123456789012345678.
unfavorite_tweet
- Descrição: Desfavorita um tweet.
- Exemplo no Claude Desktop:
O Claude desfavoritará o tweet e confirmará a ação.Unlike the tweet with ID 123456789012345678.
bookmark_tweet
- Descrição: Adiciona o tweet aos favoritos.
- Exemplo no Claude Desktop:
O Claude adicionará o tweet aos favoritos e confirmará a ação.Bookmark the tweet with ID 123456789012345678.
delete_bookmark
- Descrição: Remove o tweet dos favoritos.
- Exemplo no Claude Desktop:
O Claude removerá o favorito e confirmará a ação.Remove the bookmark for tweet ID 123456789012345678.
delete_all_bookmarks
- Descrição: DESTRUTIVO E IRREVERSÍVEL. Exclui permanentemente TODOS os favoritos buscando cada página e removendo-os um por um. Requer
TWITTER_OAUTH2_USER_ACCESS_TOKEN. - Exemplo no Claude Desktop:
O Claude confirmará com o usuário primeiro, depois excluirá todos os favoritos e relatará a contagem.Delete all my Twitter bookmarks.
get_bookmarks
- Descrição: Recupera os tweets favoritados do usuário autenticado. Retorna até 100 tweets por chamada; use o parâmetro
cursorpara paginação. RequerTWITTER_OAUTH2_USER_ACCESS_TOKEN. - Exemplo no Claude Desktop:
O Claude retornará até 25 tweets favoritados, incluindo ID, texto, data de criação e ID do autor.Show my Twitter bookmarks, limit to 25.
Ferramentas de Timeline e Pesquisa
get_timeline
- Descrição: Obtém tweets da sua timeline inicial (Para Você).
- Exemplo no Claude Desktop:
O Claude retornará até 20 tweets da sua timeline Para Você.Show my Twitter For You timeline, limit to 20 tweets.
get_latest_timeline
- Descrição: Obtém tweets da sua linha do tempo inicial (Seguindo).
- Exemplo no Claude Desktop:
O Claude retornará até 20 tweets da sua linha do tempo de Seguindo.Show my Twitter Following timeline, limit to 20 tweets.
search_twitter
- Descrição: Pesquisa no Twitter com uma consulta.
- Exemplo no Claude Desktop:
O Claude retornará até 10 tweets recentes sobre IA.Search Twitter for recent tweets about AI, limit to 10.
get_trends
- Descrição: Recupera tópicos em alta no Twitter.
- Exemplo no Claude Desktop:
O Claude retornará até 10 tópicos em alta.What are the current trending topics on Twitter? Limit to 10.
get_highlights_tweets
- Descrição: Recupera tweets em destaque da linha do tempo de um usuário.
- Exemplo no Claude Desktop:
O Claude retornará até 20 tweets da linha do tempo do usuário (simulados como destaques).Get highlighted tweets from user ID 123456789, limit to 20.
get_user_mentions
- Descrição: Obtém tweets que mencionam um usuário específico.
- Exemplo no Claude Desktop:
O Claude retornará até 20 tweets que mencionam o usuário.Get tweets mentioning user ID 123456789, limit to 20.
Solução de Problemas
-
Servidor Não Inicia:
- Certifique-se de que seu arquivo
.envtenha todas as credenciais necessárias da API do Twitter (se instalado a partir do código-fonte). - Se instalado via PyPI, certifique-se de que as variáveis de ambiente estejam definidas no
claude_desktop_config.jsonou no seu shell. - Verifique a saída do terminal para erros ao executar
x-twitter-mcp-server. - Verifique se o
uvou o seu executável Python está corretamente instalado e acessível.
- Certifique-se de que seu arquivo
-
Claude Não Detecta o Servidor:
- Confirme se o caminho no
claude_desktop_config.jsonestá correto. - Certifique-se de que o
commande oargsapontam para o executável e o script corretos. - Reinicie o Claude Desktop após atualizar o arquivo de configuração.
- Verifique os logs do Modo Desenvolvedor do Claude (Ajuda → Ativar Modo Desenvolvedor → Abrir Arquivo de Log do MCP) para erros.
- Confirme se o caminho no
-
Erros de Limite de Taxa:
- O servidor inclui tratamento de limite de taxa, mas se você atingir os limites da API do Twitter, pode ser necessário aguardar a janela de redefinição (por exemplo, 15 minutos para ações de tweets).
-
Ferramentas de favoritos retornam 403:
get_bookmarksedelete_all_bookmarksexigemTWITTER_OAUTH2_USER_ACCESS_TOKEN. Tokens de portador somente para aplicativos e OAuth 1.0a são rejeitados pelo endpoint de favoritos.- Consulte Obtendo um Token de Usuário OAuth 2.0 para instruções de configuração.
-
Avisos de Sintaxe:
- Se você vir mensagens de
SyntaxWarningdo Tweepy, elas são devidas a problemas de docstring no Tweepy com Python 3.13. O servidor inclui uma supressão de avisos para lidar com isso.
- Se você vir mensagens de
Contribuindo
Contribuições são bem-vindas! Abra uma issue ou envie um pull request no repositório do GitHub.
Licença
Este projeto é licenciado sob a Licença MIT. Consulte o arquivo LICENSE para detalhes.
Autor
- Rafal Janicki - rafal@kult.io