🚀 X MCP Server - 拡張版
このサーバーは、X用の拡張版モデルコンテキストプロトコル(MCP)サーバーです。元の実装にOAuth 2.0サポート、v2 APIのメディアアップロード、および包括的なレート制限を追加しています。

🚀 クイックスタート
このサーバーを使用する前に、いくつかの前提条件を満たす必要があります。詳細は「📋 前提条件」を参照してください。また、認証のセットアップも必要です。「🔐 認証のセットアップ」を参照してください。
サーバーのインストール方法は、使用する環境によって異なります。以下のセクションを参照してください。
- Claude Desktop: 「🚀 インストール」の「Claude Desktop」セクションを参照してください。
- Claude Code (CLI): 「🚀 インストール」の「Claude Code (CLI)」セクションを参照してください。
✨ 主な機能
- ツイートの投稿: オプションでメディア添付(画像、GIF)を含むテキストツイートを作成します。
- ツイートの検索: カスタマイズ可能な結果数でXを検索します。
- ツイートの削除: プログラムでツイートを削除します。
- 二重認証: OAuth 1.0aとOAuth 2.0の両方をサポートします。
- メディアアップロード: 各認証方法に適したAPIバージョンを使用して画像を投稿します。
- レート制限: XのAPI制限に対する組み込みの保護機能があります。
- 型安全性: Zod検証を備えた完全なTypeScript実装です。
🔄 APIバージョンの処理
このサーバーは、認証方法と操作に基づいて異なるX APIバージョンを使い分けます。
OAuth 1.0a
- ツイート操作: v2 APIエンドポイントを使用します。
- メディアアップロード: v1.1エンドポイント (
upload.twitter.com) を使用します。
- 削除のフォールバック: v2が失敗した場合、自動的にv1.1にフォールバックします。
OAuth 2.0
- すべての操作: 専用にv2 APIエンドポイントを使用します。
- メディアアップロード: v2エンドポイント (
api.x.com/2/media/upload) を使用します。
- v1.1アクセス不可: 認証制限により、v1.1にフォールバックできません。
なぜ異なるエンドポイントを使用するのか?
- v1.1: レガシーAPIで、段階的に廃止されていますが、OAuth 1.0aではまだ動作します。
- v2: より良い機能を備えた最新のAPIですが、一部のエンドポイントに問題があります。
- メディア: OAuth 2.0トークンはv1.1メディアエンドポイントにアクセスできないため、v2を使用する必要があります。
- 削除: v2の削除エンドポイントは現在問題があり(500エラー)、v1.1をフォールバックとして使用します。
📋 前提条件
始める前に、以下が必要です。
- X開発者アカウント(developer.x.com でサインアップ)
- 開発者ポータルで作成したXアプリ
- API資格情報(以下に詳細なセットアップ手順があります)
- Node.js 18以上のインストール
🔐 認証のセットアップ
このサーバーは2つの認証方法をサポートしています。必要に応じて選択してください。
- OAuth 1.0a: セットアップが簡単で、v1.1のフォールバックを含むすべての機能で動作します。
- OAuth 2.0: 最新の認証方法で、一部の新機能に必要です。
Xアプリのセットアップ
- 開発者アカウントの作成:
- developer.x.com にアクセスします。
- Twitterアカウントでサインインします。
- まだ開発者アクセスを申請していない場合は、申請してください。
- 新しいアプリの作成:
- Twitter開発者ポータル に移動します。
- 「Projects & Apps」→「New Project」をクリックします。
- プロジェクトに名前を付けます。
- 使用ケースを選択します。
- プロジェクト内に新しいアプリを作成します。
- アプリの権限の設定:
- アプリの設定で、「User authentication settings」に移動します。
- 「Set up」をクリックします。
- OAuth 1.0aおよび/またはOAuth 2.0を有効にします。
- アプリの権限を「Read and write」に設定します。
- コールバックURLを追加します。
- OAuth 1.0aの場合:
http://localhost:3000/callback
- OAuth 2.0の場合:
http://localhost:3000/callback
- ウェブサイトURLを設定します(GitHubリポジトリのURLでも構いません)。
OAuth 1.0aのセットアップ
- 資格情報の取得:
- アプリの「Keys and tokens」タブで、APIキーとAPIキーシークレットをコピーします。
- アクセストークンとシークレットを生成します(「Generate」をクリック)。
- アクセストークンに「Read and Write」の権限があることを確認します。
- 必要な資格情報:
API_KEY=your_api_key_here
API_SECRET_KEY=your_api_secret_key_here
ACCESS_TOKEN=your_access_token_here
ACCESS_TOKEN_SECRET=your_access_token_secret_here
OAuth 2.0のセットアップ
-
クライアント資格情報の取得:
- アプリの「Keys and tokens」タブで、OAuth 2.0クライアントIDとクライアントシークレットを見つけます。
- 次の手順で使用するために保存します。
-
ユーザートークンの生成:
オプションA - ヘルパースクリプトを使用する:
git clone https://github.com/mbelinky/x-mcp-server.git
cd x-mcp-server/twitter-mcp
npm install
node scripts/oauth2-setup.js
オプションB - 手動セットアップ:
- PKCEを使用したOAuth 2.0フローを使用します。
- 必要なスコープ:
tweet.read, tweet.write, users.read, media.write, offline.access
- 承認コードをアクセストークンに交換します。
-
必要な資格情報:
AUTH_TYPE=oauth2
OAUTH2_CLIENT_ID=your_client_id_here
OAUTH2_CLIENT_SECRET=your_client_secret_here
OAUTH2_ACCESS_TOKEN=your_access_token_here
OAUTH2_REFRESH_TOKEN=your_refresh_token_here
🚀 インストール
Claude Desktop用
-
NPM経由でインストール(推奨):
Claude Desktopの設定ファイルを編集します。
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
次の設定を追加します。
{
"mcpServers": {
"twitter-mcp": {
"command": "npx",
"args": ["-y", "@mbelinky/x-mcp-server"],
"env": {
"API_KEY": "your_api_key_here",
"API_SECRET_KEY": "your_api_secret_key_here",
"ACCESS_TOKEN": "your_access_token_here",
"ACCESS_TOKEN_SECRET": "your_access_token_secret_here"
}
}
}
}
OAuth 2.0の場合:
{
"mcpServers": {
"twitter-mcp": {
"command": "npx",
"args": ["-y", "@mbelinky/x-mcp-server"],
"env": {
"AUTH_TYPE": "oauth2",
"OAUTH2_CLIENT_ID": "your_client_id",
"OAUTH2_CLIENT_SECRET": "your_client_secret",
"OAUTH2_ACCESS_TOKEN": "your_access_token",
"OAUTH2_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}
-
ソースからインストール:
git clone https://github.com/mbelinky/x-mcp-server.git
cd x-mcp-server/twitter-mcp
npm install
npm run build
次に、設定を更新してローカルインストールを指すようにします。
{
"mcpServers": {
"twitter-mcp": {
"command": "node",
"args": ["/path/to/twitter-mcp/build/index.js"],
"env": {
}
}
}
}
-
Claude Desktopを再起動します。
Claude Code (CLI)用
サーバーをグローバルにインストールし、Claudeに追加します。
claude mcp add twitter-mcp "npx" "-y" "@mbelinky/x-mcp-server" --scope user \
--env "API_KEY=your_api_key" \
--env "API_SECRET_KEY=your_secret_key" \
--env "ACCESS_TOKEN=your_access_token" \
--env "ACCESS_TOKEN_SECRET=your_access_token_secret"
claude mcp add twitter-mcp "npx" "-y" "@mbelinky/x-mcp-server" --scope user \
--env "AUTH_TYPE=oauth2" \
--env "OAUTH2_CLIENT_ID=your_client_id" \
--env "OAUTH2_CLIENT_SECRET=your_client_secret" \
--env "OAUTH2_ACCESS_TOKEN=your_access_token" \
--env "OAUTH2_REFRESH_TOKEN=your_refresh_token"
🛠️ 利用可能なツール
インストール後、Claudeは以下のツールを使用できます。
post_tweet
オプションでメディア添付と返信を含む新しいツイートを投稿します。
例のプロンプト:
- "Post a tweet saying 'Hello from Claude!'"
- "Tweet this image with the caption 'Check out this view!'"(画像を添付)
- "Reply to tweet ID 123456789 with 'Great point!'"
search_tweets
カスタマイズ可能な結果数(10 - 100)でツイートを検索します。
例のプロンプト:
- "Search for tweets about #MachineLearning"
- "Find 50 recent tweets mentioning @ClaudeAI"
- "Search for tweets about TypeScript tutorials"
delete_tweet
ツイートのIDでツイートを削除します。
例のプロンプト:
- "Delete tweet with ID 1234567890"
- "Remove my last tweet (provide the ID)"
注意: 一時的なTwitter APIの問題により、OAuth 1.0aは削除時にv1.1にフォールバックします。
📸 メディアアップロードの注意事項
Claudeを使用して画像付きのツイートを投稿する場合:
- ファイルパスを使用する: 画像をディスクに保存し、ファイルパスを指定します。
- Base64の制限: サーバーはBase64エンコードされた画像をサポートしていますが、Claudeは貼り付けた画像からBase64を抽出できません。
- その他のクライアント: プログラム的な使用や他のMCPクライアントでは、引き続きBase64サポートが利用可能です。
使用例:
# ✅ Claudeに推奨
"Post tweet with image at /Users/me/photos/sunset.png"
# ❌ Claudeでは現在サポートされていません
"Post this image: [pasting an image directly]"
# ✅ プログラム的に動作します
// コード内では、引き続きBase64を使用できます
{
"text": "Hello world!",
"media": [{
"data": "iVBORw0KGgoAAAANS...",
"media_type": "image/png"
}]
}
🧪 テスト
このプロジェクトには包括的なテストが含まれています。
npm test
npm test -- --testNamePattern="OAuth"
npm test -- --testPathPattern="unit"
🔧 開発
セットアップ
git clone https://github.com/mbelinky/x-mcp-server.git
cd x-mcp-server/twitter-mcp
npm install
コマンド
npm run build
npm run dev
npm test
npm run lint
npm run format
環境変数
ローカル開発用に .env ファイルを作成します。
# OAuth 1.0a
API_KEY=your_api_key
API_SECRET_KEY=your_api_secret_key
ACCESS_TOKEN=your_access_token
ACCESS_TOKEN_SECRET=your_access_token_secret
# OAuth 2.0(使用する場合)
AUTH_TYPE=oauth2
OAUTH2_CLIENT_ID=your_client_id
OAUTH2_CLIENT_SECRET=your_client_secret
OAUTH2_ACCESS_TOKEN=your_access_token
OAUTH2_REFRESH_TOKEN=your_refresh_token
# オプション
DEBUG=true # デバッグログを有効にする
✅ OAuth 2.0メディアアップロードサポート
メディアアップロードは、OAuth 1.0aとOAuth 2.0の両方で動作するようになりました!
- OAuth 1.0aはv1.1メディアアップロードエンドポイントを使用します ✓
- OAuth 2.0はv2メディアアップロードエンドポイントを使用します ✓
- 両方の認証方法で、画像(JPEG、PNG、GIF)付きのツイート投稿がサポートされています。
注意: OAuth 2.0でメディアアップロードを行うには、media.write スコープが必要です。
⚠️ 既知の問題
ツイートの削除(一時的な問題)
Twitterのv2削除エンドポイントは現在問題があり(500エラーを返す)、MCPサーバーはこれを適切に処理します。
- OAuth 1.0a: 自動的にv1.1削除エンドポイントにフォールバックします ✅
- OAuth 2.0: v1.1エンドポイントを使用できないため、役立つエラーメッセージが表示されます ⚠️
これは一時的なTwitter APIの問題です。解決されたら、両方の認証方法でv2削除が使用されます。
🐛 トラブルシューティング
一般的な問題
"Could not authenticate you"
- すべての資格情報が正しいことを確認します。
- アプリに「Read and Write」の権限があることを確認します。
- OAuth 1.0aの場合、アクセストークンを再生成します。
- OAuth 2.0の場合、トークンに必要なスコープがあることを確認します。
"Rate limit exceeded"
- Twitterには厳しいレート制限があります(特に無料プラン)。
- 15分待ってから再度試してください。
- Twitter APIのアクセスレベルをアップグレードすることを検討してください。
"Media upload failed"
- ファイルサイズを確認します(画像の最大サイズは5MB)。
- ファイル形式を確認します(JPEG、PNG、GIFのみ)。
- OAuth 2.0の場合、
media.write スコープが含まれていることを確認します。
"403 Forbidden"
- アプリに必要な権限がない可能性があります。
- Twitter開発者ポータルの設定を確認します。
- アクセスレベルが操作をサポートしていることを確認します。
デバッグモード
DEBUG 環境変数を設定して詳細なログを有効にします。
{
"env": {
"DEBUG": "true",
}
}
ログの場所
- Windows:
%APPDATA%\Claude\logs\mcp-server-twitter.log
- macOS:
~/Library/Logs/Claude/mcp-server-twitter.log
📚 リソース
🤝 コントリビューション
コントリビューションは歓迎されます!以下の手順を行ってください。
- リポジトリをフォークします。
- 機能ブランチを作成します。
- 新機能に対するテストを追加します。
- すべてのテストが通過することを確認します。
- プルリクエストを送信します。
🔒 プライバシーポリシー
このMCPサーバーは、以下のように動作します。
- ユーザーデータを保存しません: すべてのTwitter/X API資格情報はあなたのマシンにローカルに保存されます。
- 機密情報をログに記録しません: APIキーやトークンは決してログに記録されません。
- Twitter/Xとのみ通信します: データは第三者サービスに送信されません。
- データをローカルで処理します: すべての操作はあなたのマシンで行われます。
- レート制限を尊重します: TwitterのAPI制限に対する組み込みの保護機能があります。
あなたのツイート、検索、およびメディアは、あなたとTwitter/Xの間でプライベートに保たれます。
📧 サポート
セキュリティバウンティに関しては、公開の問題を作成する代わりに直接メールで連絡してください。
📄 ライセンス
MIT
🙏 謝辞
このプロジェクトは、@enescinar/twitter-mcp の拡張版で、以下の機能を追加しています。
- OAuth 2.0認証サポート
- OAuth 2.0用のTwitter/X API v2メディアアップロード
- OAuth 1.0a用の自動v1.1フォールバック
- 無料プラン用の包括的なレート制限
- 強化されたエラー処理とデバッグ機能
- プログラム的なOAuth 2.0トークン生成スクリプト
元の実装は @enescinar によるものです。