Model Context Protocol server for
TwitterTools — brings the toolkit to AI agents
(Claude, ChatGPT, Cursor, ZCode, …). No login, no tracking, no API keys.
Listed in the official MCP Registry as io.github.steley/twittertools-mcp.
| Tool | What it does |
|---|
get_tweet | Fetch a public post by URL or ID: text, author, media with direct CDN URLs |
get_thread | Unroll a thread into its posts, in order (partial results are flagged) |
count_chars | Measure text against X's real 280-character limit (CJK ×2, links = 23) |
split_thread | Split long text into numbered, limit-fitting posts |
parse_tweet_url | URL/ID → ID, author handle, posting time, canonical permalink |
get_tweet / get_thread call the stateless twittertools.com
API, which resolves public posts through X's free syndication endpoint. The other
three run entirely offline. Media is not proxied: tweet results carry the
direct pbs.twimg.com / video.twimg.com URLs, which any client can fetch on its own.
The package has zero dependencies: the MCP protocol layer is hand-rolled
(line-delimited JSON-RPC over stdio), so the entire supply-chain surface is the
couple hundred lines in this directory — verifiable against Socket or any scanner.
Install
claude mcp add twittertools -- npx -y twittertools-mcp
Or add it to any client that reads an mcpServers config
(Claude Desktop's claude_desktop_config.json, Cursor's .cursor/mcp.json, …):
{
"mcpServers": {
"twittertools": {
"command": "npx",
"args": ["-y", "twittertools-mcp"]
}
}
}
Requires Node 18+.
Tip: npx resolves the latest version from the registry on every launch
(instant once cached, a few seconds the very first time). For zero startup
delay, npm i -g twittertools-mcp once and set "command": "twittertools-mcp".
Self-hosting
Point TWITTERTOOLS_API_BASE at your own instance of
server/downloader_server.py to keep lookups entirely on your
infrastructure:
{ "command": "npx", "args": ["-y", "twittertools-mcp"], "env": { "TWITTERTOOLS_API_BASE": "https://your-instance.example" } }
Privacy
The server is stateless: nothing is stored, no telemetry, no accounts. It talks
only to the configured API base. The API itself is rate-limited per IP and keeps
only aggregate, anonymous counters — see twittertools.com/privacy.
Development
npm install
cd .. && npx vitest run mcp
MIT — same as the main project.