AI から X(旧 Twitter)を使う ― X 公式の MCP と xurl で Claude Code・Codex・Grok につなぐ
Claude Code などの AI から、X(旧 Twitter)の検索・閲覧・投稿・自分のアカウントの分析ができるようにしました。X には公式の MCP(AI に外部の道具を使わせるための共通のつなぎ方)があり、X 公式の橋渡しのツール「xurl」でつなぐのがいちばん素直な方法でした。Developer Console での準備から、つまずいたところまでをまとめます。
複数の AI を Orca でまとめて使っている話はこちらの記事、AI から Chrome を動かす話は前の記事に書きました。
全体の構成

- X 公式の MCP:
https://api.x.com/mcp。X API の機能が、AI から使える道具として約 100 個並ぶ - xurl:X 公式のコマンド。
xurl mcpで、AI と X 公式の MCP の間を取り持つ。ログインもこれで行う - 起動用のスクリプト:キーを AI の設定ファイルに書き写さないよう、起動のたびに secret フォルダから読んで xurl に渡す
- 使える AI:Claude Code・Codex・Grok。同じスクリプトを登録するだけ
1. X の Developer Console で準備する

開発者アカウントを作る
Developer Console(console.x.com)に X のアカウントでログインし、開発者アカウントを作ります。途中で「X のデータと API の使い道」を説明する欄があります。データの扱い方も含めて、たとえば次のように書けます。
I will use the X API for personal research and posting. I search and read posts on topics I follow (AI, server administration, blogging) and save short summaries to my private notes. Posts from my own account are reviewed by me before being sent manually; there is no automated or bulk posting. I also analyze engagement on my own posts to improve my blog. Data is stored only on my personal devices and is never shared with or sold to third parties.
アプリを作り、認証の設定をする
アプリを1つ作り(名前は自由)、アプリの「認証設定」を次のようにします。
| 項目 | 選ぶもの・入れるもの |
|---|---|
| アプリの権限 | 読み取りと書き込み(DM は使わないので選ばない) |
| アプリの種類 | ウェブアプリ、自動化アプリまたはボット |
| コールバック URI | http://localhost:XXXX/callback(xurl のログインで使う。番号は xurl の説明のとおり) |
| ウェブサイト URL | 自分のサイトの URL |
保存すると「クライアントID」と「クライアントシークレット」が表示されます。使うのはこの2つだけです。キーの画面には「コンシューマーキー」「ベアラートークン」「アクセストークン」も並んでいますが、xurl を使う方法では要りません。
クレジットを買う
X API は従量課金で、いつでも使える無料枠はありません。Developer Console のトップの「クレジットを購入する」から先に入金し、使った分が引かれます。料金は読み取り・投稿などの件数で決まります(公式の料金表)。今回は、入金とは別に、期限付きの無料クレジットも付いていました。
2. 起動用のスクリプトを作る
キーは、パソコンの中の secret フォルダのテキストファイルに、見出しを付けて書いておきます。スクリプトは起動のたびにそこから読んで xurl に渡すので、AI の設定ファイルにキーが残りません。
#!/bin/zsh
# X 公式の MCP(https://api.x.com/mcp)へつなぐ橋渡し。
# x-mcp.sh … MCP として起動(AI から呼ばれる)
# x-mcp.sh login … 最初の1回だけ、ブラウザで X にログインする
SECRET_FILE=~/secret/keys.txt
XURL=(npx -y --registry=https://registry.npmjs.org/ @xdevplatform/xurl@1.3.4)
# 再生成したときに古い値を残す書き方(「…(古い)」)があるので、それは読み飛ばす
read_after() {
awk -v label="$1" '/developer.x.com/ { s = 1 } s && index($0, label) == 1 && $0 !~ /古い/ { getline; print; exit }' "$SECRET_FILE"
}
export CLIENT_ID=$(read_after "クライアントID")
export CLIENT_SECRET=$(read_after "クライアントシークレット")
if [[ $1 == login ]]; then
exec $XURL auth oauth2
fi
exec $XURL mcp https://api.x.com/mcp
作ったら chmod 700 ~/bin/x-mcp.sh とし、最初の1回だけ ~/bin/x-mcp.sh login を実行します。ブラウザが開くので、X で許可すればログインは終わりです。ログインの情報は ~/.xurl に保存され、期限が来ると xurl が自動で更新します。
3. 各 AI に登録する
# Claude Code(全体の設定に登録)
claude mcp add -s user xapi -- ~/bin/x-mcp.sh
# Codex
codex mcp add xapi -- ~/bin/x-mcp.sh
# Grok
grok mcp add xapi ~/bin/x-mcp.sh
grok mcp doctor xapi
Orca から起動する Codex は設定フォルダが別になるので、Orca の専用フォルダにも登録します。登録したら、それぞれの AI を起動し直します。grok mcp doctor では「99 tools discovered」と出て、接続できていることが分かりました。
4. 使ってみる
- 自分のアカウントの情報:名前やユーザー名を取れることを確かめた
- 残高:クレジットの残りも道具の1つで確かめられる
- 検索:「住んでいる地域の名前 × AI」で直近1か月を検索すると 0 件。条件を広げると、地域のイベントの告知などが見つかった
検索の道具は全期間を対象にするものしかなかったので、開始日を指定して直近に絞り、取ってくる件数も 10 件程度にしています。読んだ件数で課金されるので、AI に頼むときも「何件まで」と伝えるのが安心です。
投稿は、AI が下書きを作り、人が文面を確認してから送ることにしました。自動投稿はしません。
つまずいたところ
「公式の MCP は無い」と思い込み、要らないキーまで作った
最初に AI が調べたときは、第三者が作った MCP しか見つからず、それに合わせてアクセストークンなど5種類のキーを用意しました。あとで X の公式ドキュメントを読むと公式の MCP があり、使うのはクライアントID とシークレットの2つだけでした。まず公式のドキュメントを確かめるのが近道です。
ログインで「unauthorized_client」と出る
Missing valid authorization header と出て、ログインに失敗しました。シークレットを作り直したときに、メモの見出しを「クライアントシークレット(再生成)」に変えていたため、スクリプトが見出しを見つけられず、空のシークレットを送っていました。見出しの先頭が合えば読み、「(古い)」は飛ばすように直して解決しました。
道具の数が多いので、呼び間違いに注意
動作確認のとき、AI が道具の名前を指定し忘れ、一覧の先頭にあった「記事の下書きを作る」道具を中身なしで呼んでしまいました。X の側で入力エラーになり何も作られませんでしたが、書き込みのできる道具も並んでいることが分かります。Claude Code や Codex の「道具を使う前に許可を求める」設定は、外さずにおくのが安全です。
まとめ
- X には公式の MCP(
api.x.com/mcp)があり、X 公式の xurl でつなぐ - Developer Console で使うのは、クライアントID とシークレットの2つだけ。コールバック URL の登録を忘れない
- 従量課金なので、先にクレジットを買う。検索は件数と期間を絞る
- キーは secret フォルダに置き、起動用のスクリプトで読む。キーの画面は撮らない
- 同じスクリプトを Claude Code・Codex・Grok に登録すれば、どの AI からも X を使える
- 投稿は人が確認してから。自動投稿はしない
