# tweetkit-x

Manages posts, deletes entries, and reads timelines on X through your logged-in browser session without paid API access.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 16
- Author: nsozturk
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/nsozturk/tweetkit-x
- Updated: 2026-09-30
- HTML: https://affpapa.org/en/nevibecode/mcp/tweetkit-x

## What it does

This server connects an AI assistant to X by exposing 40 MCP tools. It handles text posts, threads, media uploads with up to 4 images, quote posts, and timeline searches without official developer credentials.

No headless browser is required. The program replays standard web client HTTP calls directly. Authentication relies on your active browser session cookies, specifically `auth_token` and `ct0`. You supply them through the `TWEETKIT_COOKIE` environment variable, an imported file, or the macOS Keychain.

Automating a regular web session directly conflicts with the X terms of service. Account suspension risks remain entirely with the user.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `TWEETKIT_COOKIE_KEYCHAIN`, `TWEETKIT_COOKIE` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env TWEETKIT_COOKIE_KEYCHAIN=<TWEETKIT_COOKIE_KEYCHAIN> --env TWEETKIT_COOKIE=<TWEETKIT_COOKIE> --transport stdio tweetkit-x -- uvx tweetkit-x
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from tweetkit-x <command>

### Codex

**Platform CLI**
```bash
codex mcp add tweetkit-x --env TWEETKIT_COOKIE_KEYCHAIN=<TWEETKIT_COOKIE_KEYCHAIN> --env TWEETKIT_COOKIE=<TWEETKIT_COOKIE> -- uvx tweetkit-x
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from tweetkit-x <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "tweetkit-x": {
            "command": "uvx",
            "args": [
                "tweetkit-x"
            ],
            "env": {
                "TWEETKIT_COOKIE_KEYCHAIN": "<TWEETKIT_COOKIE_KEYCHAIN>",
                "TWEETKIT_COOKIE": "<TWEETKIT_COOKIE>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from tweetkit-x <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "tweetkit-x": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "tweetkit-x"
            ],
            "env": {
                "TWEETKIT_COOKIE_KEYCHAIN": "<TWEETKIT_COOKIE_KEYCHAIN>",
                "TWEETKIT_COOKIE": "<TWEETKIT_COOKIE>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from tweetkit-x <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e TWEETKIT_COOKIE_KEYCHAIN=<TWEETKIT_COOKIE_KEYCHAIN> -e TWEETKIT_COOKIE=<TWEETKIT_COOKIE> tweetkit-x uvx tweetkit-x
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from tweetkit-x <command>

## When to use it
- publish tweets, threads, and media attachments without paid API fees
- batch delete past posts matching specific identifiers
- read home timelines, conversation threads, and bookmark collections
- trigger likes, reposts, blocks, and pin actions via an agent

## Example prompts
- Post a tweet saying "Release v1.2 is live" with release-card.png attached
- Find my old posts mentioning deprecated-tool and remove them
- Fetch the latest posts from my home timeline

## Similar
- [twitter](https://affpapa.org/en/nevibecode/skills/twitter.md) — skill · 7900 installs
- [tracking-competitor-social-media-growth](https://affpapa.org/en/nevibecode/skills/tracking-competitor-social-media-growth.md) — skill · 771 installs
- [x-scraper](https://affpapa.org/en/nevibecode/skills/x-scraper.md) — skill · 15600 installs
- [twitter-automation](https://affpapa.org/en/nevibecode/skills/twitter-automation.md) — skill · 870600 installs
- [fetch-tweet](https://affpapa.org/en/nevibecode/skills/fetch-tweet.md) — skill · 802 installs
- [x-growth](https://affpapa.org/en/nevibecode/skills/x-growth.md) — skill · 602 installs

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
