MCP(Model Context Protocol)を使えば、Claude Codeにさまざまな外部サービスを接続できます。この記事では、X(旧Twitter)の公式MCPサーバー「xmcp」を使って、Claude CodeからXへの投稿を自動化する方法を紹介します。

実はこのサイト「Automata Room」でも、記事公開の告知投稿にこの仕組みを活用しています。Pythonスクリプトを1行も書かずに、Claude Codeに「この記事をXで告知して」と言うだけで投稿が完了します。

リア(キラキラ)
リア

ねえメカ、Claude CodeからXに直接投稿できるって本当? スクリプトも書かなくていいの?

メカ(通常)
メカ

はい。X公式のMCPサーバー「xmcp」を接続すれば、Claude Codeがツールとして直接X APIを呼び出せます。Pythonスクリプトは一切不要です。

リア(軽い驚き)
リア

えっ、「この記事をXで告知して」って言うだけで投稿されちゃうの…? 便利すぎない?

メカ(通常)
メカ

その通りです。セットアップさえ済めば、自然言語の指示だけでX投稿が完了します。

リア(ぷくっ頬)
リア

すごい! じゃあ今日はその仕組みをしっかり解説していくよ!

xmcpとは ― X公式のMCPサーバー

xmcpの概要図

xmcpは、X Developer Platformが公式にリリースしたMCPサーバーです。2026年2月のX API Pay-Per-Useモデル導入と同時に公開されました。

GitHubのxdevplatform組織アカウント配下で公開されており、X APIのOpenAPI仕様から150以上のツールを自動生成してMCPとして提供します。つまり、Claude Codeから「投稿して」「検索して」「トレンドを見て」と言うだけで、X APIのほぼ全機能が使えます。

Claude Code ──MCP──► xmcpサーバー ──API──► X (Twitter)
(クライアント)    (ローカル:8000)    (api.x.com)

「Xに投稿して」
  ↓
createPosts ツール呼び出し
  ↓
POST /2/tweets
  ↓
投稿完了 ✓
🤖 メカメモ

xmcpの技術仕様:

リポジトリ: github.com/xdevplatform/xmcp

技術: Python + FastMCP

認証: OAuth 1.0a(起動時にブラウザで認証)

ツール数: 150以上(ストリーミング・Webhookを除くX APIの全エンドポイント)

料金: MCPサーバー自体は無料(OSS)。X API呼び出しにPay-Per-Use課金。

リア(好奇の目)
リア

150以上のツール!? 投稿だけじゃなくて、DMとかリストとかトレンドとかも操作できるの?

メカ(通常)
メカ

はい。ただし、よく使うのはcreatePostssearchPostsRecentの2つが中心です。不要なツールはALLOWLISTで無効化できます。

セットアップ手順 ― 4ステップで完了

xmcpのセットアップ手順

xmcpのセットアップは、クローン・環境変数設定・起動・Claude Code接続の4ステップです。

Step 1: X Developer Portalの準備

まずX Developer Portalでアプリを作成し、以下を取得・設定します。

リア(軽い思考)
リア

すでにX APIのキーを持ってる人はどうすればいいの? 新しく作り直す必要ある?

メカ(承認)
メカ

そのまま使えます。API Key = Consumer Key、API Secret = Consumer Secretは同じものです。Bearer Tokenだけ新規生成が必要です。

既存のX APIキーとの対応表はこちらです。

既存の変数名 xmcpでの変数名 状態
X_API_KEY X_OAUTH_CONSUMER_KEY 同じ値
X_API_SECRET X_OAUTH_CONSUMER_SECRET 同じ値
X_ACCESS_TOKEN (不要) ブラウザ認証で自動取得
X_ACCESS_TOKEN_SECRET (不要) ブラウザ認証で自動取得
(なし) X_BEARER_TOKEN 新規生成

Step 2: xmcpのインストール

リポジトリをクローンして、Python仮想環境を構築します。

# クローン
git clone https://github.com/xdevplatform/xmcp.git
cd xmcp

# 仮想環境構築
python -m venv .venv

# 有効化(Windows)
.venv\Scripts\activate

# パッケージインストール
pip install -r requirements.txt

Step 3: 環境変数の設定と起動

.envファイルを作成して認証情報を設定し、サーバーを起動します。

# .env を作成
cp env.example .env

.envを編集して、以下の3つの値を設定します。

# 必須の3つ
X_OAUTH_CONSUMER_KEY=(あなたのAPI Key)
X_OAUTH_CONSUMER_SECRET=(あなたのAPI Secret)
X_BEARER_TOKEN=(生成したBearer Token)

# ツールを投稿に必要なものだけに制限(推奨)
X_API_TOOL_ALLOWLIST=createPosts,getUsersMe,searchPostsRecent,initializeMediaUpload,appendMediaUpload,finalizeMediaUpload,createMediaMetadata
# サーバー起動
python server.py

# → ブラウザが開いてXの認証画面が表示される
# → 「Authorize app」をクリック
# → ターミナルに「MCP endpoint: http://127.0.0.1:8000/mcp」と表示されれば成功
OAuth認証はサーバー再起動のたびに必要です。xmcpはOAuth 1.0aトークンをメモリ内にのみ保持するため、サーバーを停止するとトークンが消えます。自動化運用ではxmcpを常時稼働させてください。

Step 4: Claude Codeに接続

MCPサーバーとして登録します。

# Claude Code に xmcp を追加
claude mcp add --transport http xmcp http://127.0.0.1:8000/mcp

# 確認
claude mcp list
# → xmcp が表示されればOK
リア(感嘆)
リア

4ステップで終わり? もっと大変かと思ったけど、意外とシンプルだね!

メカ(通常)
メカ

一番時間がかかるのはStep 1のDeveloper Portal設定です。既にAPIキーを持っている場合は、実質10分程度で完了します。

最初の投稿をしてみる

Claude Codeからの初投稿

セットアップが完了したら、さっそくClaude Codeから投稿してみましょう。

接続テスト

まずは自分のアカウント情報を取得して、接続を確認します。

# Claude Codeで入力
> 接続しているXアカウントの情報を教えて

# Claude Codeが getUsersMe ツールを呼び出し、アカウント情報を表示
# → ユーザー名、表示名、フォロワー数などが返ってくる

テスト投稿

# Claude Codeで入力
> Xに「テスト投稿です。Claude Codeから自動投稿しています。」と投稿して

# Claude Codeが createPosts ツールを呼び出し
# → 投稿が完了し、投稿URLが返ってくる
リア(ひらめき)
リア

えっ、ほんとにこれだけ!? 自然言語で「投稿して」って言うだけ!?

メカ(自信)
メカ

MCPサーバーが仲介しているだけです。Claude Codeにとっては、ファイルを読み書きするのと同じ感覚でXに投稿できます。APIの認証処理やリクエスト構築はxmcpが全て処理します。

リア(ドヤ顔)
リア

Pythonスクリプトを書かなくていいの、最高じゃん…!

投稿前のチェック

実用的な投稿では、重複チェックも自然言語で指示できます。

# Claude Codeで入力
> 直近の自分の投稿を確認して、同じ内容がなければ
> 「新記事を公開しました! 配色理論×AI画像生成の完全ガイドです。」
> と投稿してください。ハッシュタグは #AIイラスト #配色 で。

# Claude Codeの動作:
# 1. searchPostsRecent で直近の投稿を確認
# 2. 重複がないことを確認
# 3. createPosts で投稿
# 4. 投稿URLを報告
🤖 メカメモ

投稿されるまでの処理:

1. Claude Codeが指示を解釈し、まずsearchPostsRecentツールを呼び出す

2. xmcpがOAuth 1.0aで署名してX API (GET /2/tweets/search/recent) に送信

3. 重複なしと判断したらcreatePostsツールを呼び出す

4. xmcpがPOST /2/tweetsに送信 → 投稿完了

自動投稿ワークフローを作る

自動投稿ワークフローの全体像

手動で「投稿して」と打つだけでも便利ですが、定期的な投稿を完全に自動化することもできます。ここでは2つのパターンを紹介します。

パターン1: 記事公開時の告知投稿

ブログ記事を公開したら、その告知をXに自動投稿するフローです。

記事デプロイ完了
  ↓
Claude Code起動(x-automationフォルダ)
  ↓
プロンプト: 「以下の記事をXで告知して」
  ├── タイトル・URL・カテゴリを渡す
  ├── リアの口調ルールを参照
  └── 140文字以内で生成
  ↓
searchPostsRecent(重複チェック)
  ↓
createPosts(投稿実行)
  ↓
投稿URL返却 ✓

投稿ルールはプロンプトテンプレートとしてファイルに定義しておきます。これにより、毎回ルールを手で書く必要がありません。

# x-automation/prompts/article-announce.md の例

## 投稿対象の記事情報
- タイトル: {{TITLE}}
- URL: {{URL}}

## 投稿ルール
- リアの口調で書く(カジュアル、一人称「あたし」)
- 140文字以内(URL・ハッシュタグ含む)
- ハッシュタグ2-3個
- 禁止表現: 「絶対に」「今すぐ」「ヤバい」等

## 投稿例
「新しい記事書いたよ〜! 今回は{{テーマ}}について
解説してみたの。よかったら読んでね! {{URL}}
#AutomataRoom #AIイラスト」
リア(笑顔)
リア

あたしの口調ルールがファイルに書いてあるんだ! だからいつもちゃんと「あたし」って言ってくれるのね。

メカ(通常)
メカ

プロンプトに口調ルール・禁止表現・文字数制限を含めておくことで、Claude Codeが一貫した品質で投稿文を生成します。テンプレートを変更するだけでトーンの調整も可能です。

パターン2: 定期ニュース投稿

毎日決まった時間にAI関連のニュースやTipsを投稿するフローです。これにはタスクスケジューラを使います。

スケジューラ(毎日18:00に実行)
  ↓
Claude Code自動起動
  ↓
getUsersMe(アカウント確認)
  ↓
searchPostsRecent(直近の投稿を確認)
  ↓
投稿文を生成(リアの口調で)
  ↓
createPosts(投稿実行)
  ↓
ログに記録 ✓

スケジューラの設定例です。Node.jsベースのcronスケジューラや、OS標準のタスクスケジューラで定期実行します。

# タスク定義の例(scheduler用)
{
  "name": "X定期ニュース投稿",
  "prompt": "prompts/daily-news.md の内容に従って投稿してください",
  "schedule": "毎日18:00(平日のみ)"
}
リア(深い思考)
リア

毎日18時に自動で投稿されるの? あたしが寝てても…あ、あたし寝ないか。

メカ(考え中)
メカ

18:00は日本のXユーザーが最もアクティブな時間帯の一つです。ただし、重要なのはプロンプトに重複チェックを含めることです。同じ話題を連続投稿しないよう、直近の投稿を必ず確認させます。

スクリプトを書かない設計

従来のX自動投稿では、Pythonで認証処理・API呼び出し・エラーハンドリングをコーディングする必要がありました。xmcp方式では、その全てが不要になります。

# 従来の方式(Pythonスクリプトが必要)
import requests_oauthlib

auth = OAuth1(API_KEY, API_SECRET, ACCESS_TOKEN, ACCESS_SECRET)
response = requests.post(
    "https://api.twitter.com/2/tweets",
    json={"text": "投稿本文"},
    auth=auth
)
# エラーハンドリング、リトライ、ログ記録…全て自分で書く
# xmcp方式(スクリプト不要)
> 「この記事をXで告知して」

# Claude Codeが全てやってくれる:
# - 認証 → xmcpが処理
# - API呼び出し → MCPツールとして呼び出し
# - エラーハンドリング → Claude Codeが判断
# - 投稿文の生成 → Claude Codeが作成
🤖 メカメモ

フォルダ構成(スクリプトなしの設計):

x-automation/

├── CLAUDE.md ← 投稿ルール(口調・文字数・禁止表現)

├── prompts/

│ ├── article-announce.md ← 記事告知プロンプト

│ └── daily-news.md ← 定期投稿プロンプト

└── docs/

└── xmcp-setup.md ← セットアップ手順書

scripts/フォルダにPythonファイルは不要です。プロンプトファイルが「実行可能な指示書」として機能します。

注意点とコスト

X API Pay-Per-Useのコスト

API料金(Pay-Per-Use)

xmcpサーバー自体は無料のOSSですが、X APIの呼び出しに従量課金が発生します。

操作 APIエンドポイント 単価
ツイート読み取り searchPostsRecent $0.005 / 件
ユーザー情報取得 getUsersMe $0.010 / 件
投稿作成 createPosts $0.010 / 件
DM送信 createDirectMessages $0.015 / 件
リア(う〜ん)
リア

えーっと、毎日1回投稿 + 重複チェック1回だと…1日$0.015で、月30日だと$0.45? 安っ!

メカ(通常)
メカ

個人利用なら月$1未満で十分です。新規登録時に$10のバウチャーが付与されるので、数ヶ月は実質無料で使えます。ただし、開発中のテスト投稿で大量にAPIを叩かないよう注意してください。

OAuth認証の制約

xmcpの最大の注意点は、サーバー再起動のたびにブラウザ認証が必要なことです。

テスト時のTips: 開発中はX_API_TOOL_ALLOWLISTからcreatePostsを外しておくと、誤って実際にXに投稿してしまうことを防げます。準備ができたら追加しましょう。

セキュリティ

メカ(警告)
メカ

ALLOWLISTを設定しない場合、150以上のツール全てが有効になります。DM送信やリスト操作など、意図しない操作を防ぐために、必要最小限のツールだけを許可してください。

応用 ― さらに便利な使い方

xmcpの応用例

記事内容を要約して投稿

Claude Codeは記事のHTMLを直接読めるので、「記事の内容を読んで要約し、告知文を作成して投稿」という一連の流れも指示1つで可能です。

> blog/color-theory-ai-illustration.html を読んで、
> その内容をリアの口調で140文字以内に要約し、
> 記事URLとハッシュタグ付きでXに投稿して

トレンドに合わせた投稿

xmcpにはトレンド取得ツールもあるので、今の話題に合わせた投稿も可能です。

> 日本のXトレンドを確認して、
> AIに関連するトレンドがあれば
> リアの口調でコメントを投稿して

投稿分析

> 直近10件の自分の投稿を取得して、
> エンゲージメント(いいね数、RT数)を一覧にまとめて
リア(キラキラ)
リア

すごい…! 投稿だけじゃなくて、分析もトレンドチェックも全部Claude Codeでできちゃうんだ!

メカ(感心)
メカ

これがMCPの真価です。「外部サービスをツールとして呼び出す」という統一的なインターフェースにより、投稿・検索・分析を自然言語で操作できます。従来のようにAPIごとにスクリプトを書き分ける必要がありません。

まとめ

xmcpまとめ

X公式MCPサーバー「xmcp」を使えば、PythonスクリプトなしでClaude CodeからXの投稿を自動化できます。

MCPの基本を理解している方は、ぜひxmcpで「MCPの実践」を体験してみてください。「コードを書かずにXを自動運用する」という新しい体験が待っています。

リア(至福)
リア

xmcpすごいね! MCPを繋ぐだけでXの投稿から分析までぜんぶできちゃうんだ!

メカ(通常)
メカ

MCPの強みは、同じ仕組みでさまざまなサービスと連携できる点です。Xに限らず、GitHub・Slack・データベースなど応用範囲は広いです。

リア(ひらめき)
リア

つまり、MCPサーバーをどんどん繋いでいけば、Claude Codeでなんでも自動化できちゃうってこと?

メカ(無表情)
メカ

「なんでも」は言いすぎですが、方向性は合っています。まずはxmcpで感覚をつかむのがおすすめです。

リア(ウインク)
リア

みんなもぜひ試してみてね! それじゃ、ばいばい〜!