TwitGhost

TwitGhost

Enables interacting with Twitter/X through natural language, including searching tweets, posting, sending DMs, and managing timelines via any MCP client.

Category
Visit Server

README

TwitGhost

smithery badge

A Model Context Protocol (MCP) server for interacting with Twitter/X. Search tweets, post tweets, send DMs, manage your timeline — all through natural language with any MCP client (Claude, Code, Cursor, etc.).

Why TwitGhost? This is a maintained fork of adhikasp/mcp-twikit that uses the unclecode/twikit fork instead of d60/twikit, fixing the KEY_BYTE / Cryptography_Hasher errors that have been blocking authentication with current X API versions.


Features

  • Search tweets — by keyword, with Top or Latest sorting
  • User timeline — get tweets from any user
  • Home timeline — For You and Following feeds
  • Post tweets — with media, replies, and mentions
  • Delete tweets — by ID
  • Send DMs — direct messages with optional media
  • Delete DMs — by message ID

Installation

Prerequisites

  • Python 3.10+
  • A Twitter/X account (free tier works fine)

Via Smithery (recommended)

npx -y @smithery/cli install mcp-twitghost --client claude

Manual (uvx)

{
  "mcpServers": {
    "twitghost": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/arvinmoj/mcp-twitghost", "mcp-twitghost"],
      "env": {
        "TWITTER_USERNAME": "@yourusername",
        "TWITTER_EMAIL": "you@example.com",
        "TWITTER_PASSWORD": "your-password"
      }
    }
  }
}

Manual (pip)

git clone https://github.com/arvinmoj/mcp-twitghost.git
cd mcp-twitghost
pip install .

Then configure in your MCP client:

{
  "mcpServers": {
    "twitghost": {
      "command": "mcp-twitghost",
      "env": {
        "TWITTER_USERNAME": "@yourusername",
        "TWITTER_EMAIL": "you@example.com",
        "TWITTER_PASSWORD": "your-password"
      }
    }
  }
}

Authentication

TwitGhost supports two authentication modes, checked in order:

1. Browser Cookies (recommended — bypasses Cloudflare/rate limits)

If you export cookies from your browser session, TwitGhost loads them directly. This bypasses the Cloudflare WAF block that often breaks password login.

Cookie path: ~/.twitghost/cookies.json

How to export:

  1. Log in to X in your browser
  2. Install a cookie exporter extension (e.g., "Get cookies.txt" or "Export Cookie JSON")
  3. Export cookies as JSON to ~/.twitghost/cookies.json
  4. Restart your MCP client

Required cookies for a working session:

  • auth_token — primary auth
  • ct0 — CSRF token
  • twid — user ID
  • guest_id — guest identifier
  • __cf_bm — Cloudflare bypass

Cookies expire ~30 days. When they do, re-export from your browser.

2. Credentials (fallback)

If no cookies file is found, TwitGhost falls back to username/email/password login:

Env Variable Description Required
TWITTER_USERNAME Your X handle Yes
TWITTER_EMAIL Email on your X account Yes
TWITTER_PASSWORD Your X password Yes
USER_AGENT Optional browser UA No

⚠️ Known issue: password login may fail with Cloudflare or KEY_BYTE errors. If this happens, switch to browser cookies.


Available Tools

Tool Description
search_twitter Search tweets by query. sort_by: Top or Latest
get_user_tweets Get tweets from a user's timeline
get_timeline Your For You feed
get_latest_timeline Your Following feed
post_tweet Post a tweet. Supports media, replies, and @mentions
delete_tweet Delete a tweet by ID
send_dm Send a DM to a user. Optional media attachment.
delete_dm Delete a DM by message ID

Rate Limits

Built-in client-side rate limiting to avoid hitting Twitter's server-side caps:

Endpoint Limit Window
Tweets 300 tweets 15 min
DMs 1,000 messages 15 min

Troubleshooting

KEY_BYTE or Cryptography_Hasher error

This is a known issue with the original d60/twikit package and newer X API endpoints. TwitGhost uses the unclecode/twikit fork which fixes this. Make sure you installed the right dependency:

pip show twikit
# Source should show unclecode/twikit

If it still shows d60/twikit, reinstall:

pip uninstall twikit
pip install git+https://github.com/unclecode/twikit.git

Cloudflare / 403 error on login

Twitter's Cloudflare WAF blocks many automated logins. Use browser cookies instead:

  1. Export cookies from a logged-in browser session
  2. Save to ~/.twitghost/cookies.json
  3. Restart TwitGhost

Cookie file exists but auth fails

Cookies expire after ~30 days. Re-export from your browser.

Cannot connect to host / SSL errors

Ensure your Python installation has up-to-date SSL certificates:

pip install --upgrade certifi

Credits


License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured