Skip to main content
Glama
discountry

x-post-mcp

by discountry
README.md
# x-post-mcp

A minimal MCP server for posting tweets to X (Twitter) via API v2. Zero runtime dependencies.

## Installation

```bash
npm install -g x-post-mcp
# or
npx x-post-mcp
```

## Configuration

Add to your MCP client configuration:

```json
{
  "mcpServers": {
    "x-post-mcp": {
      "command": "npx",
      "args": ["x-post-mcp"],
      "env": {
        "X_BEARER_TOKEN": "<your-bearer-token>"
      }
    }
  }
}
```

### Getting a Bearer Token

See the detailed step-by-step guide: **[English](./docs/token-guide.en.md)** | **[中文](./docs/token-guide.md)**

Quick overview:
1. Go to [X Developer Portal](https://developer.x.com/en/portal/dashboard)
2. Create a project and app
3. Configure User Authentication with `Read and write` permission
4. Generate OAuth 2.0 Token with `tweet.read`, `tweet.write`, `users.read`, `offline.access` scopes

**Recommended**: Use auto-refresh configuration with `X_CLIENT_ID`, `X_CLIENT_SECRET`, and `X_REFRESH_TOKEN` to avoid manual token refresh every 2 hours.

## Tool

### send_tweet

Post a new tweet to X.

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| text | string | ✓ | Tweet content |
| reply_to_tweet_id | string | | Tweet ID to reply to |
| quote_tweet_id | string | | Tweet ID to quote |

## Skill Example

You can create a skill file to help AI agents use this MCP. Save as `.claude/skills/post-tweet.md`:

```markdown
# Post Tweet Skill

Post a tweet to X (Twitter) using the x-post-mcp server.

## Instructions

1. Confirm the tweet content with the user before posting
2. Call the `send_tweet` tool with the user's message
3. Report the result back to the user

## Examples

**Simple tweet:**
User: 帮我发一条推文:Hello World!
Assistant: [calls send_tweet with text: "Hello World!"]

**Reply to a tweet:**
User: 回复这条推文 1234567890:感谢分享!
Assistant: [calls send_tweet with text: "感谢分享!", reply_to_tweet_id: "1234567890"]

**Quote tweet:**
User: 引用推文 1234567890 并评论:这个观点很有意思
Assistant: [calls send_tweet with text: "这个观点很有意思", quote_tweet_id: "1234567890"]
```

## License

MIT

TDQS

A4.1/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion or overlapping purposes. The tool's purpose is clear and unique.

Naming Consistency5/5

The single tool name 'send_tweet' follows a clear verb_noun pattern and is consistent. With only one tool, there are no inconsistencies to evaluate.

Tool Count4/5

One tool is slightly below the typical well-scoped range, but it is reasonable for a narrowly focused posting service. The count feels minimal yet sufficient for the stated purpose.

Completeness4/5

The tool covers the core action of posting a tweet, which is the server's stated purpose. Minor gaps exist, such as no ability to delete or read tweets, but these are not essential for a post-only tool and can be worked around.

Maintenance

ActivityInactive
ResponsivenessNo issues