コンテンツにスキップ

XChat(暗号化 DM)

XChat は X のエンドツーエンド暗号化ダイレクトメッセージです。通常の DM API は暗号化された 本文を返せません — get_dm_history は会話が空であるかのように振る舞わず、warnings フィールドでその旨を報告します。

X 自身の web クライアントは会話をローカルで復号し、平文を SQLite データベースに保存します。 twikit-mcp はそのファイルを読みます。復号はブラウザが行い、こちらは結果を開くだけです。

この機能の正確な位置づけ

  • ローカルのみ。 ネットワークリクエストは一切行いません。X API も有料 API も ブラウザ自動化も使いません。
  • 読み取り専用。 SQLite の mode=ro + immutable=1 で開くため、ロックを取らず、 ブラウザプロファイルの隣に -wal/-shm を作りません。全ステートメントが SELECT です。
  • 認証情報を一切扱いません。 PIN も OAuth トークンも暗号鍵も不要。これらのツールは cookies.json を読みません。
  • ここで読んでも X 上で既読になりません。 そもそも X へ何も送信しません。
  • 暗号鍵は決して読みません。 鍵マテリアルのテーブルは診断用に件数を数えるだけです。

前提条件

Chromium 系ブラウザで XChat を開き、ロックを解除し、同期を完了させてください。対応: Chrome、Chromium、Edge、Brave、Aside。Safari は非対応 — WebKit は Chromium の ストレージレイアウトを使いません。

設定

MCP クライアントの env ブロックに、TWITTER_COOKIES と並べて設定します:

変数 意味
XCHAT_BROWSER auto、または chrome / chromium / edge / brave / aside
XCHAT_BROWSER_PROFILE プロファイルのディレクトリ名(例:DefaultProfile 2)
XCHAT_DATABASE_PATH SQLite ファイルへの明示パス — 探索を完全にスキップ

いずれも未設定の場合、XChat ツールは not_configured を返し、このマシンで見つかった候補を 一覧します。設定の有無にかかわらず、server の他の部分には影響しません。

{
  "mcpServers": {
    "twitter": {
      "command": "twikit-mcp",
      "env": {
        "TWITTER_COOKIES": "/home/YOU/.config/twitter-mcp/cookies.json",
        "XCHAT_BROWSER": "chrome"
      }
    }
  }
}

探索で複数のデータベースが見つかった場合、推測はせず指定を求めます — 別のプロファイルを 読むと、他アカウントの会話を黙って返してしまうためです。

macOS では、ブラウザプロファイルの読み取りに MCP ホストのフルディスクアクセスが必要です。 システム設定 → プライバシーとセキュリティで許可し、ホストを再起動してください。アクセスが 拒否された場合、ツールがその旨を明示します。

ツール

ツール 内容
xchat_status ローカルストアが読めるか、場所、会話数 — 未設定時は探索結果も添付
xchat_list_conversations 最新の活動順の会話一覧と、最後のメッセージのプレビュー
xchat_get_history 1 つの会話のメッセージを古い順に

添付のみのメッセージは空文字ではなく [image attachment] のようなプレースホルダになります。 エージェントが画像を「発言なし」と誤解しないためです。

制限

  • ブラウザが同期済みの範囲だけ。 これはローカルキャッシュであり X のサーバーではありません。 ブラウザが取得していない会話は存在しません。
  • 添付の中身は取得できません — 種類のプレースホルダのみです。
  • X の内部データベーススキーマに依存しており、X は予告なく変更できます。その場合ツールは 誤ったデータを返さず「必要な XChat テーブルがない」と明確に失敗します。vendored twikit の パースと同種の脆さです。issue #118 を参照。

プライバシー

これらのツールはプライベートなメッセージ本文をエージェントのコンテキストに載せます。それが 目的そのものですが、意識しておく価値はあります:会話は MCP クライアントがコンテキストを送る 先へ一緒に流れます。ツールの docstring には印を付けてあり、行儀の良いエージェントは機微情報 として扱います。