Skip to main content
Glama
README.md
# x-mcp

An MCP server and CLI for interacting with X/Twitter, built with [@xdevplatform/xdk](https://github.com/xdevplatform/xdk).

## Tools

| Tool | Description |
|------|-------------|
| `post_tweet` | Post a tweet |
| `search_tweets` | Search recent tweets (last 7 days) |
| `get_user_info` | Get user profile info by username(s) |
| `get_timeline` | Get your home timeline |
| `like_tweet` | Like a tweet by ID |
| `retweet` | Retweet a tweet by ID |
| `delete_tweet` | Delete a tweet by ID |

## Setup

### Prerequisites

You need X/Twitter API credentials (OAuth 1.0a). Get them from the [X Developer Portal](https://developer.x.com/en/portal/dashboard):

- **API Key** (Consumer Key)
- **API Secret** (Consumer Secret)
- **Access Token**
- **Access Token Secret**

### Authenticate

Either log in interactively (credentials are saved to `~/.x-mcp/credentials.json`):

```bash
npx @kms_dev/x-mcp login
```

Or set environment variables:

```bash
export X_API_KEY=your_api_key
export X_API_SECRET=your_api_secret
export X_ACCESS_TOKEN=your_access_token
export X_ACCESS_TOKEN_SECRET=your_access_token_secret
```

Environment variables take precedence over stored credentials.

## Usage

### MCP Server

Add to your MCP client config (e.g. Claude Desktop `~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "x-mcp": {
      "command": "npx",
      "args": ["-y", "@kms_dev/x-mcp"],
      "env": {
        "X_API_KEY": "your_api_key",
        "X_API_SECRET": "your_api_secret",
        "X_ACCESS_TOKEN": "your_access_token",
        "X_ACCESS_TOKEN_SECRET": "your_access_token_secret"
      }
    }
  }
}
```

If you've already run `npx @kms_dev/x-mcp login`, you can omit the `env` block:

```json
{
  "mcpServers": {
    "x-mcp": {
      "command": "npx",
      "args": ["-y", "@kms_dev/x-mcp"]
    }
  }
}
```

### CLI

```bash
npx @kms_dev/x-mcp login
npx @kms_dev/x-mcp post-tweet "Hello world!"
npx @kms_dev/x-mcp search-tweets "typescript" --max-results 5
npx @kms_dev/x-mcp get-user-info XDevelopers
npx @kms_dev/x-mcp get-timeline --max-results 10
npx @kms_dev/x-mcp like-tweet 1234567890
npx @kms_dev/x-mcp retweet 1234567890
npx @kms_dev/x-mcp delete-tweet 1234567890
```

## Development

```bash
git clone https://github.com/khajaphysist/x-mcp.git
cd x-mcp
npm install

# Run tests
npm test

# Run CLI
npx tsx src/cli.ts search-tweets "test"

# Run MCP server
npx tsx src/mcp-server.ts

# Test MCP server with inspector
npx @modelcontextprotocol/inspector npx tsx src/mcp-server.ts
```

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct action (post, search, get user info, timeline, like, retweet, delete) with no overlap. An agent can easily distinguish them.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., post_tweet, search_tweets, get_user_info). No deviations or mixed conventions.

Tool Count5/5

Seven tools cover the core Twitter operations without being excessive. The scope is well-balanced for a dedicated social media server.

Completeness4/5

The set covers posting, timeline, search, user info, likes, retweets, and deletion. However, fetching a specific tweet by ID is missing, which is a minor gap for workflows that need to retrieve a single tweet after a search.

Maintenance

ActivityInactive
ResponsivenessNo issues