
【画面つき】X公式MCP「xmcp」セットアップ手順(開発者登録からClaude Codeでの動作確認まで)
こんにちは、けーまです。
Claude Code から X の投稿を抜き出したいと思ったことはありませんか。
やり方はいくつかありますが、今回は X の開発者プラットフォームが公開している MCP サーバーxmcp で X の情報を取得します。
X API の料金には従量課金(Pay Per Use)があります。
月額の固定プランを契約しなくても、クレジットを買った分だけ API を試せます。
「固定費を払う前に、まず自分のアカウントで動かしてみたい!」と思い立ち、開発者登録から Claude Code での動作確認までを一通りやってみました。
X API を MCP 経由で使ってみたい方の参考になれば幸いです。
対象読者:X API を MCP サーバー経由で使いたい人、X の開発者登録とクレジット購入から手順を追いたい人
0. 前提環境
| 項目 | 値 |
|---|---|
| OS | macOS 26.5.1 |
| Python | 3.14.6 |
| xmcp | xdevplatform/xmcp |
| Claude Code | 2.1.220(9章のMCPクライアント) |
1. 開発者登録
X 開発者向けサイトにサインインして、開発者プログラムに申し込みます。
アカウント名と、X のデータおよび API のユースケースを入力し、3つのチェックボックスに同意して 「送信」 をクリックします。

申し込みが通ると、Developer Console のダッシュボードに入れるようになります。
この時点で、Development 環境にアプリが1つ自動で作られます。
名前はアカウントの数値IDに、@ を除いたユーザー名をつないだものになります。
@yourname のアカウントなら 1234567890123456789yourname のような名前です。
2. クレジットを購入する
左メニューの請求書作成から 「クレジット」 を開き、「クレジットを購入する」 をクリックします。
金額は $5 / $25 / $100 / $250 / $500 のプリセットか、任意の額を入力できます。

まず試すだけなら最小の $5 で足ります
支払いが完了すると残高に反映されます。

残高 $5、請求サイクル上限も $5 で設定された状態
購入直後は自動チャージがオフになっています。
残高が尽きたところで API を止めたいなら、オフのままにしておきます。
3. アプリの認証設定
左メニューの 「アプリ」 を開くと、1章で自動作成されたアプリが Development に並んでいます。
アプリ名をクリックして詳細に入ります。

Development に自動作成されたアプリが1つある状態
アプリの詳細画面に入ると Keys & Tokens タブが開きます。
キーを発行するのもこの画面ですが、先に認証設定を済ませます。
コールバックURI を登録しないまま起動すると、8章の認可でリダイレクト先がなく失敗するためです。

キーの発行はこの画面で行う(4章)。認証設定へは右上の「Settings」から入る
認証設定で指定するのは、アプリの権限・アプリの種類・コールバックURI の3つです。
3.1 アプリの権限とアプリの種類
上の画像の右上にある 「Settings」 を押します。
「アプリの権限」 は、xmcp で使うツールに合わせて選びます。
私は投稿の検索と閲覧だけに使うので 「読む」 のままにしました。
投稿する(createPosts)ツールを使うなら「読み取りと書き込み」が必要です。
「アプリの種類」 は 「ウェブアプリ、自動化アプリまたはボット(機密クライアント)」 を選びます。

権限は「読む」、種類は「ウェブアプリ、自動化アプリまたはボット」を選んだ状態
3.2 コールバックURI
「コールバックURI / リダイレクトURL」 に、xmcp が OAuth 1.0a の認可で待ち受けるアドレスを入れます。
デフォルト設定なら次の値です。
http://127.0.0.1:8976/oauth/callback
「ウェブサイトURL」 も必須項目です。
個人利用なら GitHub のプロフィールなどで足ります。
組織名・利用規約・プライバシーポリシーは空欄のまま保存できました。

コールバックURIとウェブサイトURLを入力した状態
入力したら 「変更を保存する」 をクリックします。
4. キーとトークンを発行する
認証設定を保存したら、3章の Keys & Tokens タブに戻ります。

キーを発行する画面(発行後の状態)。コンシューマーキーとクライアントIDは伏せています
この画面には似た名前のキーが並んでいますが、取るのは次の2つだけです。
| 画面上の名前 | 対応する .env の項目 |
|---|---|
| コンシューマーキー | X_OAUTH_CONSUMER_KEY |
| コンシューマーシークレット | X_OAUTH_CONSUMER_SECRET |
「OAuth 1.0 キー」のコンシューマーキーの 「再生成」 をクリックすると、キーとシークレットの両方が表示されます。
ベアラートークンは README で必須とされているので、「アプリ専用認証」の 「生成する」 で発行しておきます(現行コードでは使われません)。
同じ画面のアクセストークンと、3.1 の選択で発行される OAuth 2.0 のキーは、xmcp では使いません。
アクセストークンはサーバー起動時の認可で毎回取得するため、ここで生成する必要はありません(8章)。
いま設定されている権限は、上の画像の「アクセストークン」欄に表示されます(3.1 で「読む」を選んだ場合は「読む」)。
変更したいときは、3.1 と同じく右上の 「Settings」 から認証設定に戻ります。
5. リポジトリの取得とPython環境
ここからローカルの作業です。
リポジトリを clone して、仮想環境を作ります。
git clone https://github.com/xdevplatform/xmcp.git
cd xmcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
requirements.txt の中身は次の6つです。
fastmcp
httpx
python-dotenv
requests-oauthlib
xai-sdk
xdk
私の環境では fastmcp-3.4.4、httpx-0.28.1、python-dotenv-1.2.2、requests-oauthlib-2.0.0、xai-sdk-1.17.0、xdk-0.10.0 が入りました。
仮想環境が有効になっているかを確認します。
which python
python --version
# 出力例
/Users/<YOUR_NAME>/xmcp/.venv/bin/python
Python 3.14.6
6. .env を作成する
env.example をコピーして、4章で取得した値を書き込みます。
cp env.example .env
書き換えるのは次の4行です。
~/xmcp/.env:
X_OAUTH_CONSUMER_KEY=<YOUR_CONSUMER_KEY>
X_OAUTH_CONSUMER_SECRET=<YOUR_CONSUMER_SECRET>
X_BEARER_TOKEN=<YOUR_BEARER_TOKEN>
X_API_DEBUG=0
X_API_DEBUG はデフォルトが 1 ですが、1 のままだと起動時のログにアクセストークンが平文で出力されます。
標準出力をファイルにリダイレクトして起動するとトークンが残るため、0 にしておきます。
X_BEARER_TOKEN は README で必須とされていますが、現行のコードではリクエストに使われていません。
将来の変更に備えて設定しておけば足ります。
残りのコールバック・MCP サーバーの設定は、env.example のデフォルト値のままで動きます。
7. 使うツールを絞る
xmcp は X API の OpenAPI 仕様から100個以上のツールを生やします。
投稿の削除や DM の送信まで含まれるので、使うものだけを許可します。
今回許可したのは次の13個です。
| できること | operationId |
|---|---|
| 直近7日の投稿を検索する | searchPostsRecent |
| ニュースを検索する・取得する | searchNews / getNews |
| 投稿をIDで取得する | getPostsById / getPostsByIds |
| 投稿への反応を見る | getPostsLikingUsers / getPostsRepostedBy / getPostsReposts / getPostsQuotedPosts |
| ユーザーを調べる | getUsersByUsername / getUsersByIds |
| アカウントの投稿とメンションを見る | getUsersPosts / getUsersMentions |
X_API_TOOL_ALLOWLIST に operationId をカンマ区切りで並べると、そのツールだけが読み込まれます。
~/xmcp/.env:
X_API_TOOL_ALLOWLIST=searchPostsRecent,searchNews,getNews,getPostsById,getPostsByIds,getPostsLikingUsers,getPostsRepostedBy,getPostsReposts,getPostsQuotedPosts,getUsersByUsername,getUsersByIds,getUsersPosts,getUsersMentions
起動時に適用されるため、変更したらサーバーを再起動します。
指定できる operationId の全一覧はリポジトリの README.md に載っています。
8. サーバーを起動する
仮想環境を有効にした状態で起動します。
待ち受けポートは環境変数で渡します。
MCP_PORT=8001 python server.py
デフォルトの 8000 でよければ MCP_PORT は省略できます。
起動すると、まず認可のためにブラウザが開きます。
X の認可画面でアプリを承認すると、3.2 で登録したコールバックURIにリダイレクトされ、xmcp がアクセストークンを受け取ります。
9. Claude Code に登録して動作確認
MCP サーバーとして Claude Code に登録します。
--scope user にすると、どのディレクトリで起動したセッションからも使えます。
claude mcp add --transport http --scope user xmcp http://127.0.0.1:8001/mcp
登録できたか確認します。
claude mcp list
# 出力例
xmcp: http://127.0.0.1:8001/mcp (HTTP) - ✔ Connected
読み込まれたツールを確認します。
別のセッションを立ち上げて、ツール名を列挙させます。
claude -p <<'EOF'
使えるMCPツールのうち、名前が mcp__xmcp__ で始まるものだけを列挙してください。ツールは実行しないでください。
EOF
私の環境では、7章で許可した13個が mcp__xmcp__searchPostsRecent のような名前で並びました。
最後に、実際に X API を呼びます。
claude -p --allowedTools "mcp__xmcp__searchPostsRecent" <<'EOF'
mcp__xmcp__searchPostsRecent を1回だけ呼んでください。query は from:XDevelopers、max_results は 10 です。取得件数と1件目の本文の冒頭を報告してください。
EOF
✅ 投稿が返ってくれば、開発者登録からここまでが通っています。
私の環境では5件返り、サーバー側のログにも POST /mcp 200 OK が記録されました。
10. 2回目以降の使い方
ここまでの設定は一度きりですが、xmcp はプロセスが動いている間だけ使えます。
PC を再起動したり、Ctrl + C で止めたりしたあとは、使うたびに次の2コマンドで立ち上げます。
cd ~/xmcp
source .venv/bin/activate && MCP_PORT=8001 python server.py
起動するとブラウザで認可画面が開くので、承認します。
アクセストークンをメモリにしか持たない作りなので、この承認は毎回必要です。
サーバーが起動していない状態で claude mcp list を実行すると ✘ Failed to connect になります。
その場合はサーバーを立ち上げてから、Claude Code のセッションを再読み込みしてください。
11. まとめ
X 公式の MCP サーバー実装を、開発者登録から Claude Code での呼び出しまで一通り動かしました。
従量課金が使えるようになったので、月額プランを契約せずに $5 から試せます。
セットアップでつまずきやすいのは、コールバックURI の登録(3.2)だと思います。
アクセストークンをメモリにしか持たない作りなので、起動するたびにブラウザでの承認が必要です。









