mcpField
X
x-mcp-ai

x-mcp-ai

ローカル
github.com/IvanBBaevソーシャルメディア18 週間前に更新

x-mcp-ai について

x-mcp-aiは、型付きMCPツールを通じて、互換クライアントやエージェントにX (Twitter) API v2を提供します。ポリシーによる制御、コスト報告、任意のハード支出上限で読み取りと書き込みを管理します。

主な機能

  1. 0112パッケージに41の型付きツール
  2. 02ポリシーで読み書きアクセスを制御
  3. 03呼び出しごととセッションの費用報告
  4. 04OAuth 2.0 PKCEとアプリ専用認証
  5. 05JSON Schemaによる構造化出力
  6. 06レート制限とページネーションへの対応

活用シーン

  1. 01投稿の検索とタイムラインの閲覧
  2. 02アクセスポリシーに沿った投稿
  3. 03セッション中のAPI支出追跡
  4. 04選択したソーシャル操作の有効化

MCP 対応

MCPサーバーはstdioで動作し、X API v2向けの型付きツール、リソース、プロンプトを公開します。アクセスは設定可能なポリシープリセットと任意の許可・拒否ルールで制御されます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"ivanbbaev-x-mcp-ai": {
"command": "npx",
"args": [
"-y",
"x-mcp-ai"
],
"env": {
"X_MCP_AUTH_MODE": "<X_MCP_AUTH_MODE>",
"X_MCP_CLIENT_ID": "<X_MCP_CLIENT_ID>",
"X_MCP_CLIENT_SECRET": "<X_MCP_CLIENT_SECRET>",
"X_MCP_BEARER_TOKEN": "<X_MCP_BEARER_TOKEN>",
"X_MCP_TOKEN_FILE": "<X_MCP_TOKEN_FILE>",
"X_MCP_TOKEN_KEYCHAIN": "<X_MCP_TOKEN_KEYCHAIN>",
"X_MCP_POLICY": "<X_MCP_POLICY>",
"X_MCP_POLICY_ALLOW": "<X_MCP_POLICY_ALLOW>",
"X_MCP_POLICY_DENY": "<X_MCP_POLICY_DENY>",
"X_MCP_HIDE_DENIED": "<X_MCP_HIDE_DENIED>",
"X_MCP_MEDIA_DIR": "<X_MCP_MEDIA_DIR>",
"X_MCP_AVAILABILITY": "<X_MCP_AVAILABILITY>",
"X_MCP_PROFILES_FILE": "<X_MCP_PROFILES_FILE>",
"X_MCP_PROFILE": "<X_MCP_PROFILE>",
"X_MCP_TIMEOUT_MS": "<X_MCP_TIMEOUT_MS>",
"X_MCP_LOG_LEVEL": "<X_MCP_LOG_LEVEL>",
"X_MCP_CREDIT_BUDGET": "<X_MCP_CREDIT_BUDGET>",
"X_MCP_BUDGET_MODE": "<X_MCP_BUDGET_MODE>"
}
}
}
}
起動コマンドnpx -y x-mcp-ai
設定が必要な環境変数
X_MCP_AUTH_MODEシークレットAuthentication mode: oauth2 (default) or app-only.
X_MCP_CLIENT_IDOAuth 2.0 client ID (oauth2 mode).
X_MCP_CLIENT_SECRETシークレットOAuth 2.0 client secret (confidential clients only).
X_MCP_BEARER_TOKENシークレットApplication-only bearer token (app-only mode).
X_MCP_TOKEN_FILEシークレットPath to the rotating OAuth 2.0 token store (default: OS-resolved).
X_MCP_TOKEN_KEYCHAINシークレットSet to 1 to keep OAuth 2.0 tokens in the OS keychain (macOS, Linux) instead of a token file. Mutually exclusive with an explicit X_MCP_TOKEN_FILE.
X_MCP_POLICYPolicy preset: read-only (default), engage, publish, manage, or full.
X_MCP_POLICY_ALLOWComma-separated op:domain cells to allow on top of the preset (e.g. read:dm,write:dm).
X_MCP_POLICY_DENYComma-separated op:domain cells to deny; deny beats allow beats preset.
X_MCP_HIDE_DENIEDSet to 1 to drop policy-denied tools from registration entirely instead of registering them annotated as denied.
X_MCP_MEDIA_DIRDirectory uploads must resolve inside. Media upload is disabled unless this is set.
X_MCP_AVAILABILITYComma-separated specially-provisioned access classes to declare: pilot, premium-user, enterprise. Unset means the conservative default (app+user, user-only).
X_MCP_PROFILES_FILEPath to a profiles file holding named configuration blocks.
X_MCP_PROFILEName of the profile to select from the profiles file.
X_MCP_TIMEOUT_MSPer-HTTP-request timeout in milliseconds (default 30000).
X_MCP_LOG_LEVELDiagnostic verbosity on stderr: silent, error, info (default), or debug.
X_MCP_CREDIT_BUDGETSession spend cap in USD.
X_MCP_BUDGET_MODEBudget enforcement: warn (default) or hard.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmx-mcp-ai0.8.0

ツール

41

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

x-mcp-ai — X(Twitter)MCP サーバー

npmCItoolsnodeMCPlicense

[MCP] MCP サーバーは、X(Twitter)API v2 を MCP クライアント(Claude Code、Claude Desktop、VS Code、Cursor、または MCP 互換のエージェント)に公開します。2 軸のポリシーモデルで制御され、2026 年の従量課金に対応した、厳選された 型付きツール のセットとして提供されるため、エージェントが知らないうちに予算を超過することはありません。

ステータス:1.0 以前で、現在も活発に開発中です。npm では x-mcp-ai として公開されています(現在のバージョンは 0.8.0 で、npm provenance 付きで CI から公開されています)。プロジェクトが 0.x の間は、正確なバージョンを指定してください (セットアップ)。現在、12 パッケージにわたる 41 個のツールが登録されており、設計された全機能は docs/03-tool-catalog.md に記載され、 すべて実装済みです。公開 API は 1.0.0 まで不安定です。

目次:クイックデモ · 機能 · 要件 · セットアップ · 認証情報の設定 · コスト · 実行/デバッグ · 開発 · ツール · リソース · プロンプト · プロジェクト構成 · セキュリティに関する注意 · データの取り扱い · ドキュメント · サポート · 商標

クイックデモ

サーバーを MCP クライアントに接続したら、自然言語で指示するだけで、モデルがツールを選択します。代表的な例を 3 つ紹介します。

// 1. Read (default read-only preset — no writes possible)
// "What are people saying about the Model Context Protocol this week?"
{
  "tool": "x_search_recent",
  "arguments": { "query": "\"model context protocol\" -is:retweet lang:en", "max_results": 25 }
}
// 2. Engage (requires the `engage` preset or an explicit write:engagement allow)
// "Like that launch post for me."
{
  "tool": "x_like_set",
  "arguments": { "post_id": "1899…", "action": "like" }
}
// 3. Publish (requires the `publish` preset or write:content)
// "Post: 'Shipping x-mcp-ai today.' — mind the cost."
// Every result carries cost_usd + session_total_usd; a URL in the text raises the price 13×.
{
  "tool": "x_post_create",
  "arguments": { "text": "Shipping x-mcp-ai today." }
}

機能

  • X API v2 に対応する 12 パッケージ、41 個のツールを提供します。投稿、ユーザー、タイムラインの読み取り、検索(直近および全期間のアーカイブ)、エンゲージメント、公開、リスト管理、メディアのアップロード、ソーシャルグラフの探索、明示的なオプトインによる DM の読み取りと送信が可能です。
  • 2 軸のポリシーモデル(operation:domain)と 5 つのプリセットを備えています。read-only(デフォルト)、engage、publish、manage、full です。書き込みはオプトインです。各セルでは deny が allow に、allow がプリセットに優先します。ダイレクトメッセージのセルには二重のロックがかかっており、read:dm/write:dm は どのプリセットにも含まれず、full にも含まれません。
  • コストを考慮した設計です。 2026-02-06 以降、X API v2 は従量課金制です。各結果には、個別の cost_usd と実行中の session_total_usd が報告されます。運用者が設定する X_MCP_CREDIT_BUDGET と X_MCP_BUDGET_MODE=hard により、上限を超える呼び出しは拒否されます。モデルが上限を引き上げることはできません。
  • 2 つの認証モードに対応しています。OAuth 2.0 PKCE ユーザーコンテキスト(主要な方式。ローテーションするリフレッシュトークン、同時更新の抑制)と、読み取り専用のデプロイ向けのアプリ専用ベアラーです。
  • セキュリティ優先のデフォルト設定です。ホスト単位の Authorization ヘッダー、トークンを含むリクエストでのリダイレクトの禁止、O_NOFOLLOW/O_EXCL を使用した 0600 のトークンファイル書き込み、返されるテキストへの信頼できないコンテンツのマーク付け、実際のパスが X_MCP_MEDIA_DIR 内にある場合を除くメディアアップロードのデフォルト拒否を適用します。
  • 型付きの失敗を提供します。 11 種類のエラークラスがそれぞれ retryable と fix: "agent" | "operator" を持つため、モデルは再試行可能な処理を再試行し、そうでない処理をエスカレーションできます。
  • 構造化出力に対応しています。 すべてのツールが JSON Schema の outputSchema を提示し、テキストブロックとともに structuredContent を返します。
  • 利用可能性のクラス別ゲーティング、エンドポイントごとのレート制限のリアルタイム追跡(投稿作成の 24 時間アプリ上限を含む)、カーソルページネーション、コンパクトな結果表示を備えています。

要件

  • Node.js >= 22(.nvmrc を参照)。
  • OAuth 2.0 クライアントを備えた X 開発者アカウントとアプリ(Client ID。Client Secret は機密クライアントの場合のみ必要)。アプリ専用モードには、代わりにベアラートークンが必要です。
  • プリペイドの X API クレジット。API は読み取りと書き込みのたびに課金されます(コストを参照)。

セットアップ

推奨するインストール方法は、公開済みパッケージを使用することです。プロジェクトが 0.x の間は正確なバージョンを指定します。クローンやビルドは不要です。

npx -y [email protected] doctor   # sanity check; makes no billable calls

次に、MCP クライアントから接続します。

// claude_desktop_config.json (Claude Desktop) / .mcp.json (Claude Code) / .cursor/mcp.json
{
  "mcpServers": {
    "x": {
      "command": "npx",
      "args": ["-y", "[email protected]"],
      "env": {
        "X_MCP_AUTH_MODE": "oauth2",
        "X_MCP_CLIENT_ID": "your-oauth2-client-id",
        "X_MCP_POLICY": "read-only",
        "X_MCP_CREDIT_BUDGET": "5.00",
        "X_MCP_BUDGET_MODE": "hard"
      }
    }
  }
}

ローカルのチェックアウトから実行する場合は、"command": "node" と "args": ["/abs/path/to/x-mcp/build/src/index.js"] を使用し、同じ env マップを指定してください。

CLI から Claude Code を使用する場合:

claude mcp add x --env X_MCP_POLICY=read-only -- npx -y [email protected]

クライアントごとの手順 — Claude Desktop、Claude Code、VS Code(.vscode/mcp.json)、Cursor、MCP Inspector の設定は、authorize フローおよびそのまま使える env 設定例とともに docs/10-operator-guide.md §4 に記載されています。

ソースから(開発)

こちらも引き続き完全にサポートされています。エントリーポイントをビルドし、npx の代わりに node で起動してください。

git clone https://github.com/IvanBBaev/x-mcp.git
cd x-mcp
npm ci
npm run build          # tsc → build/src/index.js
node build/src/index.js doctor   # sanity check; makes no billable calls

認証情報の設定

サーバーが対話形式で入力を求めることはありません。すべての設定は環境変数から行います(正式な一覧は docs/02-architecture.md §4、初期設定の参考として .env.example を参照)。

認証モード(X_MCP_AUTH_MODE):

  • oauth2 (デフォルト) — PKCE を使用する OAuth 2.0 です。authorize サブコマンドで初回の認証フローを実行してください。トークンは X_MCP_TOKEN_FILE に保存され、自動的に更新されます。
  • app-only — アプリ専用のベアラートークン(X_MCP_BEARER_TOKEN)です。ユーザーコンテキストはなく、読み取りエンドポイントのみを使用できます。
X_MCP_AUTH_MODE=oauth2 X_MCP_CLIENT_ID=… node build/src/index.js authorize
環境変数
変数デフォルトシークレット用途
X_MCP_AUTH_MODEoauth2oauth2 | app-only。
X_MCP_CLIENT_IDOAuth 2.0 クライアント ID(authorize と更新で必須)。
X_MCP_CLIENT_SECRET✅OAuth 2.0 クライアントシークレット(機密クライアントのみ)。
X_MCP_BEARER_TOKEN✅アプリ専用のベアラートークン。app-only でのみ有効です。
X_MCP_TOKEN_FILEOS-resolvedローテーションする OAuth 2.0 トークンストアへのパス(~ は展開されます)。
X_MCP_TOKEN_KEYCHAIN01 → OS のキーチェーンにトークンを保存します(macOS の security、Linux の secret-tool)。X_MCP_TOKEN_FILE とは併用できません。
X_MCP_POLICYread-onlyプリセット:read-only | engage | publish | manage | full。
X_MCP_POLICY_ALLOW追加する operation:domain セルをカンマ区切りで指定します。
X_MCP_POLICY_DENY削除するセルをカンマ区切りで指定します(許可設定とプリセットより優先されます)。
X_MCP_HIDE_DENIED01 → 拒否されたツールを登録自体から除外します。
X_MCP_CREDIT_BUDGETセッションの支出上限(USD、例:5.00)。未設定の場合、上限はありません。
X_MCP_BUDGET_MODEwarnwarn | hard。
X_MCP_AVAILABILITY有効にする提供クラスをカンマ区切りで指定します(pilot、premium-user、enterprise)。
X_MCP_MEDIA_DIRアップロード先の realpath がこのディレクトリ内にある必要があります(メディアはデフォルトで拒否)。
X_MCP_PROFILES_FILE複数アカウントのプロファイルファイル。
X_MCP_PROFILEアクティブなプロファイル名(プロファイルファイルを使用する場合は必須)。
X_MCP_BASE_URLhttps://api.x.comAPI ベース URL。https:// および *.x.com である必要があります。
X_MCP_ALLOW_INSECURE_BASE_URL01 → x.com 以外のベース URL を許可します(テスト専用)。
X_MCP_TIMEOUT_MS30000リクエストごとのタイムアウト(ミリ秒)。
X_MCP_LOG_LEVELinfosilent | error | info | debug。

その他の X_MCP_* 変数は起動時の警告とともに無視されます。これは入力ミスを検出するための仕組みです。 致命的な設定エラーには、原因となった変数名が必ず示されます。

2 軸のアクセス方針

各ツールは 1 つのポリシーセル(operation:domain のペア)に対応します。操作は read → write → destructive の順に強くなり、ドメインは content、user、account、engagement、 social-graph、moderation、dm です。プリセットでは 12 個の有効なセルの一部が許可されます。 X_MCP_POLICY_ALLOW はセルを追加し、X_MCP_POLICY_DENY はセルを削除します。優先順位は 拒否 > 許可 > プリセットです。

プリセット許可される操作呼び出し可能なツール
read-only (デフォルト)read:* セルすべて。ただし read:dm を除く21
engageread-only + write:engagement26
publishengage + write:content、write:moderation32
managepublish + destructive:content34
fullDM 以外のすべてのセル。write:social-graph、destructive:social-graph を追加37

DM セルは、full を含め、どのプリセットにも含まれません。 read:dm と write:dm は X_MCP_POLICY_ALLOW で明示的に許可する必要があります(すべての 41 個のツールを呼び出し可能)。 他の機密セルと同様、解除方法のヒントはポリシーエラーには表示されません。 拒否されたツールは登録されたまま (disabled by policy <preset>) と注記されます。ただし、 X_MCP_HIDE_DENIED=1 の場合を除きます。

manage で許可されるのは、破壊的なコンテンツ操作のみです。フォロー、ミュート、ブロックには full、または明示的な write:social-graph / destructive:social-graph の許可が必要です。

コスト

従量課金のみが料金モデルです。 X は 2026-02-06 に、新規開発者向けの Free/Basic/Pro サブスクリプションプランを廃止しました。読み取りと書き込みのたびに、前払いクレジットが消費されます。 2026-04-16 以降、本文に URL を含む投稿の料金は $0.015 ではなく $0.20 になり、13 倍です。実際のアカウントでエージェントを使う前に、X_MCP_CREDIT_BUDGET を設定してください。

参考料金(2026-07-22 確認済み):投稿の読み取りは 1 件あたり約 $0.005、ユーザー情報の参照とフォロワー/フォロー中の読み取りは約 $0.010、自分のデータの読み取りは約 $0.001、DM イベントは約 $0.010、投稿の作成は $0.015(URL を含む場合は $0.20)、DM の送信は $0.015、リストの作成は $0.010、エンゲージメントの書き込みは現在 $0 です。X は投稿の読み取りを 月 2,000,000 件に制限しています。正式な料金表は docs/01-api-landscape.md §3、運用者向けの説明は docs/10-operator-guide.md §5 を参照してください。

予算はプロセスごとに設定され、目安として適用されます。再起動するとリセットされ、モデルによる変更はできません。呼び出しごとの上書き設定や、予算を増やすツールはありません。

実行/デバッグ

MCP クライアントがサーバーを起動します。手動で実行するには、次のようにします。

X_MCP_POLICY=read-only node build/src/index.js serve
コマンドラインインターフェース
コマンド内容
serve (default)stdio 経由で MCP サーバーを起動します。サブコマンドなしで実行した場合もサーバーを起動します。
authorize [--manual] [--port <port>]初回のみ必要な OAuth 2.0 PKCE 認可フローを実行し、トークンファイルを保存します。
doctor [--connect]解決済みの設定、パス/権限の確認結果、ポリシーマトリックスを表示します。課金対象の呼び出しは行いません。--connect を指定すると、認証なしの到達確認 GET が 1 回追加されます。

stdout には JSON-RPC のみが出力されます。診断情報、警告、および起動時の単一の x-mcp-ai: fatal: <reason> 行は stderr に出力されます。症状に応じた対処方法については docs/11-troubleshooting.md を参照してください。

開発

git clone https://github.com/IvanBBaev/x-mcp.git
cd x-mcp
npm ci
npm run build         # tsc → build/
npm run check         # typecheck + lint + format:check + test

その他のスクリプト:npm run typecheck、npm run lint、npm run format/format:check、 npm test、npm run coverage(c8)、および npm run verify(クリーンビルド+カバレッジ+Lint+ フォーマットチェック)。規約と品質ゲート全体については CONTRIBUTING.md を参照してください。

ツール

現在登録されている 41 個のツールです。「読み取り専用」は、read:* ポリシーセルに含まれるツールを示します。デフォルトのプリセットで呼び出せます(DM の読み取りを除きます。DM の読み取りには明示的な許可が必要です)。 「ユーザー」は user-only ツールを示します。これらのツールには OAuth 2.0 のユーザーコンテキストが必要で、アプリ専用のベアラートークンでは利用できません。設計上のツール一覧は docs/03-tool-catalog.md、スキーマ、スコープ、コスト区分、利用可否を含むツールごとの完全なリファレンスは docs/reference/tools.md を参照してください。

以下の表は、ツールレジストリから npm run docs:gen によって生成されています。手動で編集しないでください。npm run check は表を再生成して差分を確認するため、編集すると CI が失敗し、変更はリリースされません。同様に、docs/reference/tools.md も編集しないでください。 | パッケージ | ツール | セル | 読み取り専用 | ユーザー | 説明 | |---|---|---|:--:|:--:|---| | auth | x_auth_status | read:account | ✅ | | 現在有効な認証モード、認証済みユーザー(ユーザーモードの場合)、付与された OAuth スコープ、認証情報バックエンド、検出された利用可能状況、解決済みのポリシーマトリックスを報告します。 | | auth | x_rate_limit_status | read:account | ✅ | | プロセス内のレート制限テーブルを出力します。バケット(エンドポイントクラス × 認証コンテキスト)ごとに、追跡中の各ウィンドウの上限、残り回数、リセット時刻、現在上限に達しているかどうかを示します。 | | posts | x_post_get | read:content | ✅ | | 数値 ID またはステータス URL を指定して、X(Twitter)の投稿を1件以上まとめて取得します(1回あたり1~100件)。 | | posts | x_post_create | write:content | | ✅ | 投稿を作成します。テキスト、任意の reply_to_id、quote_id、media_ids[]、poll {options[], duration_minutes}、reply_settings を指定できます。 | | posts | x_post_delete | destructive:content | | ✅ | ID を指定して、自分の投稿を削除します。 | | posts | x_post_hide_reply | write:moderation | | ✅ | 自分の投稿への返信を非表示または再表示します。 | | users | x_user_get | read:user | ✅ | | 数値 ID、@ハンドル、@なしのハンドル、または me(認証済みユーザーを示す特別な値)を指定して、X(Twitter)のユーザープロフィールをまとめて取得します。 | | search | x_search_recent | read:content | ✅ | | 全 v2 クエリ構文(from:、to:、conversation_id:、ブール演算子)を使って、過去7日間の X(Twitter)投稿を検索します。 | | search | x_post_counts_recent | read:content | ✅ | | 過去7日間の X(Twitter)v2 クエリについて、分・時間・日単位の投稿数ヒストグラム(時間バケットごとの投稿数)を返します。 | | engagement | x_like_set | write:engagement | | ✅ | 認証済みユーザーとして投稿に「いいね」する、または取り消します。 | | engagement | x_repost_set | write:engagement | | ✅ | 認証済みユーザーとして投稿をリポスト(リツイート)する、または取り消します。 | | engagement | x_bookmark_set | write:engagement | | ✅ | 認証済みユーザーのブックマークに投稿を追加、または削除します。 | | engagement | x_bookmarks_list | read:content | ✅ | ✅ | 認証済みユーザー自身のブックマークを新しい順に一覧表示します。x_bookmark_set の読み取り操作に相当します。 | | timelines | x_timeline_home | read:content | ✅ | ✅ | 認証済みの X(Twitter)ユーザーのホームタイムラインを時系列の逆順(フォロー中のアカウントの投稿を新しい順)で読み取ります。 | | timelines | x_timeline_mentions | read:content | ✅ | | X(Twitter)ユーザーに言及している投稿を読み取ります(デフォルトは認証済みユーザー)。 | | timelines | x_timeline_user | read:content | ✅ | | X(Twitter)ユーザー自身の投稿を新しい順で読み取ります。任意で返信やリポストを除外し、時間範囲を指定できます。 | | graph | x_follow_set | write:social-graph | | ✅ | 認証済みユーザーとしてユーザーをフォロー、またはフォロー解除します。 | | graph | x_mute_set | write:social-graph | | ✅ | ユーザーをミュート、またはミュート解除します。 | | graph | x_block_set | destructive:social-graph | | ✅ | ユーザーをブロック、またはブロック解除します。 | | graph | x_followers_list | read:social-graph | ✅ | | X(Twitter)ユーザーをフォローしているアカウントを一覧表示します。 | | graph | x_following_list | read:social-graph | ✅ | | X(Twitter)ユーザーがフォローしているアカウントを一覧表示します。 | | graph | x_user_search | read:user | ✅ | | X(Twitter)のユーザープロフィール(名前、ハンドル、自己紹介)をキーワード検索します。 | | lists | x_list_create | write:content | | ✅ | 認証済みユーザーが所有するリストを作成します。 | | lists | x_list_update | write:content | | ✅ | 認証済みユーザー自身のリストのメタデータ(name、description、private)を更新します。 | | lists | x_list_delete | destructive:content | | ✅ | 認証済みユーザー自身のリストを完全に削除します。 | | lists | x_list_get | read:content | ✅ | | リスト1件のメタデータ(名前、説明、公開設定、メンバー数とフォロワー数、所有者のハンドル)を読み取ります。 | | lists | x_lists_owned | read:content | ✅ | | ユーザーが所有するリストを取得します(デフォルトは認証済みユーザー)。 | | lists | x_list_member_set | write:content | | ✅ | 認証済みユーザー自身のリストにユーザーを追加または削除します。1回につき1ユーザーです。 | | lists | x_list_members | read:content | ✅ | | リストのメンバーを取得します。 | | lists | x_list_timeline | read:content | ✅ | | リストのタイムラインから投稿(メンバーによる最近の投稿)を取得します。 | | lists | x_list_follow_set | write:engagement | | ✅ | 認証済みユーザーとしてリストをフォロー、またはフォロー解除します。 | | lists | x_list_pin_set | write:engagement | | ✅ | 認証済みユーザーのリスト表示にリストをピン留め、またはピン留め解除します。 | | media | x_media_upload | write:content | | ✅ | 分割アップロード方式の v2 フローでローカルの画像、GIF、または動画をアップロードし、x_post_create で添付する media_id を返します。 | | media | x_media_status | read:content | ✅ | ✅ | media_id を指定して、アップロードしたメディアの非同期処理状態を確認します。 | | dm | x_dm_events_list | read:dm | ✅ | ✅ | 認証済み X(Twitter)ユーザーのすべての会話における最近のダイレクトメッセージイベントを新しい順に一覧表示します。 | | dm | x_dm_conversation_events_list | read:dm | ✅ | ✅ | X(Twitter)の DM 会話1件におけるダイレクトメッセージイベントを新しい順に一覧表示します。 | | dm | x_dm_participant_events_list | read:dm | ✅ | ✅ | 参加者1人との1対1の X(Twitter)DM 会話におけるダイレクトメッセージイベントを新しい順に一覧表示します。 | | dm | x_dm_send | write:dm | | ✅ | X(Twitter)で、既存の会話(conversation_id)またはユーザー(participant)のいずれか1つを宛先としてダイレクトメッセージを送信します。必要に応じて1対1の会話を作成します。 | | archive | x_search_archive | read:content | ✅ | | 全 v2 クエリ構文(from:、to:、conversation_id:、ブール演算子)を使って、2006年までさかのぼる X(Twitter)の全アーカイブを検索します。 | | archive | x_post_counts_archive | read:content | ✅ | | 2006年までさかのぼる X(Twitter)の全アーカイブを対象に、分・時間・日単位の投稿数ヒストグラム(時間バケットごとの投稿数)を返します。 | | usage | x_usage_get | read:account | ✅ | | 現在の請求サイクルにおける投稿読み取りの消費量を、月間プロジェクト上限と照らし合わせて報告します(任意で1日ごと、アプリごとの内訳も表示)。あわせて、このセッションのローカルなクレジット消費額の見積もりも表示します。 | DM の読み取りで返されるのは ID、タイムスタンプ、参加者のみです。メッセージ本文を取得するには、呼び出し時に明示的に include_text: true を指定する必要があります。

ツールパッケージ
パッケージ対象
auth認証コンテキストとレート制限のウィンドウ。
usageプラットフォームの読み取り枠の消費量と、ローカルセッションの支出額の推定値。
posts投稿の作成、読み取り、削除。
search最近の投稿の検索と件数。
archive全アーカイブの検索と件数。
timelinesホーム、メンション、ユーザーのタイムライン。
engagementいいね、リポスト、ブックマーク。
usersユーザーの検索。
graphプロフィール検索、フォロー/ミュート/ブロック、フォロワーとフォロー中のユーザーの一覧。
listsリストのライフサイクル全般、メンバーシップ、タイムライン、フォロー、ピン留め。
media分割アップロードとステータス。
dmダイレクトメッセージの読み取りと送信(二重ロック)。

リソース

MCP リソースは計画中です。解決済みの認証コンテキストと最新のレート制限テーブルを、アドレス指定可能なリソースとして読み取り専用で公開する予定です。まだ提供されていません。

プロンプト

MCP プロンプトは計画中です。一般的なワークフロー(例:コストを考慮した投稿、オーディエンス調査)向けのガイド付きテンプレートを予定しています。まだ提供されていません。

プロジェクト構成

ポートとアダプター。モジュール構成は docs/02-architecture.md §3 で固定されています。

src/
├── index.ts            # composition root + stdio wiring
├── core/               # config, policy, budget, errors, ports, tooldef,
│                       #   registry, render, resolve, paginate, sanitize
├── api/                # http, ratelimit, errors, oauth2/, endpoints/
├── tools/              # one module per package (posts, search, graph, …)
├── mcp/                # compose, server, schema, structured, gates, session
└── cli/                # dispatch, authorize, doctor

依存関係のルール:tools → core + api/endpoints、api → core、mcp → tools + core、 cli → core + api。core 内のコードから外部への依存や I/O はありません。

セキュリティに関する注意事項

概要については、完全な脅威モデルと運用者向けチェックリストを SECURITY.md および docs/04-security.md で確認できます。

  • ホストスコープの認証。 Authorization ヘッダーは設定された API オリジンに対してのみ付与されます。トークンを含むリクエストではリダイレクトを決して追跡しません(混乱した代理人攻撃への防御)。 プロキシ環境変数は無視されます。
  • トークンファイルの強化。 0600 と O_NOFOLLOW/O_EXCL を指定して書き込みます。更新処理は単一実行で、ロック下で再読み込みし、競合させずにフェイルクローズします。
  • 信頼できないコンテンツ。 モデルに返される投稿、ユーザー、DM のテキストには、信頼できないコンテンツとしてマークが付けられます。 このマーク付けは意味的なフィルターではありません。プロンプトインジェクションに対する実際の制御は、ポリシーモデルです。
  • 権限昇格の手順は示しません。 機密セル(*:dm、destructive:*、*:social-graph)で拒否された場合、ブロックされたセルは示しますが、解除に必要な変数は決して示しません。そのため、モデルが権限昇格の手順をあなたに伝えることはできません。
  • メディアはデフォルトで拒否。 ファイルの realpath が X_MCP_MEDIA_DIR 内にない限り、アップロードは拒否されます。
  • コストはモデルによる変更不可。 セッションのクレジット予算は運用者が設定します。モデルが引き上げたり、無効化したりすることはできません。
  • サプライチェーン:正確なバージョンを固定してください。 バージョンを固定せずに npx -y x-mcp-ai を実行すると、クライアントを起動するたびに最新の公開版が実行されます。これは、あなたのトークンを保持するプロセス内で行われます。 リリースは npm provenance を使用して CI から公開されます。npm パッケージ名は x-mcp-ai です。x-mcp はリポジトリ名にすぎません。

データの取り扱い

詳細については、docs/12-privacy.md を参照してください。

  • 外部への通信は一切ありません。 テレメトリー、分析、更新チェックはありません。プロジェクトはサーバーを実行せず、外部への接続先は設定されたベース URL の X API のみです。
  • 認証情報はローカルに保持されます。 クライアント ID/シークレットとベアラートークンはプロセス環境内にあり、OAuth トークンはあなたのマシン上の 0600 ファイルに保存されます。ツールが認証情報を返すことはなく、doctor ではマスクされます。
  • コストのテレメトリーはローカルのみです。 支出カウンターはプロセスごとにメモリ内に保持され、呼び出し元のモデルにのみ報告されます。
  • 読み取ったコンテンツは X からモデルに渡されます。 ツールが取得した投稿、プロフィール、DM イベントは MCP クライアントに返され、そのモデルプロバイダーに渡されます。このサーバーによるキャッシュや永続化はありません。

ドキュメント

ページ対象
10 — 運用ガイドインストール、認証、クライアントごとの設定、環境変数の設定例、コスト管理。
11 — トラブルシューティング起動エラー、doctor、認証/トークンの更新、レート制限、ツールが見つからない場合。
12 — プライバシーとデータの取り扱いどこに何が送信されるか、何が保存されるか、削除方法。
01 — API の概要従量課金制の料金、利用可能性の区分、プラットフォームの上限。
02 — アーキテクチャモジュール構成と正式な環境変数一覧。
03 — ツールカタログ設計されたツールの範囲と分類。
04 — セキュリティ脅威モデル、ポリシーモデル、トークンのライフサイクル。

サポート

このプロジェクトが時間の節約に役立った場合は、ご支援いただけると幸いです。

スポンサー Ko-fi Donatree

商標

x-mcp-ai は独立した非公式プロジェクトです。X Corp との提携、同社による推奨または後援を受けていません。公式に公開されている X API v2 を利用し、非公開、未公開、またはスクレイピングに基づくアクセスは使用しません。

「X」、「Twitter」および関連する名称、ロゴ、商標は X Corp の商標です。これらは、このソフトウェアが連携する対象を説明するために記述的に使用しています。このプロジェクトは MIT ライセンスの下で公開されています。商標権はライセンスされていません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。