mcpField
M
Mcp Server For 3x Ui

Mcp Server For 3x Ui

ローカル
github.com/pyworkloadクラウド・インフラ72 週間前に更新

Mcp Server For 3x Ui について

Mcp Server For 3x Uiは、MCPクライアントを3x-uiのプロキシ管理パネルに接続します。Xray/V2Rayのインバウンド、クライアント、ルーティング、サービス、設定を管理するツールを提供し、ツールグループの選択や操作の影響表示にも対応します。

主な機能

  1. 013x-uiパネルAPIのツール提供
  2. 02インバウンド、クライアント、ルーティングの管理
  3. 03セッション/CSRFとBearerトークン認証
  4. 04ツールの操作影響を表示
  5. 05選択したツールグループを読み込み
  6. 06大きなペイロード用のリソースリンク

活用シーン

  1. 01プロキシクライアントの一括作成や更新
  2. 02ルーティングルールの確認と調整
  3. 03クライアント接続やサービス状態の診断
  4. 04プロキシノード設定の管理

MCP 対応

3x-ui HTTP APIの操作をMCPツールとして提供し、大きなペイロードはリソースリンクから必要に応じて取得できます。操作影響の注釈により、MCPクライアントは読み取り専用ツールと破壊的なツールを見分けられます。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

3x-ui MCP サーバー

CI Release Downloads Go Version Go Reference License: MIT

3x-ui 用の MCP(Model Context Protocol)サーバーです。3x-ui は Xray/V2Ray プロキシ管理パネルです。3x-ui の HTTP API を MCP ツールとして公開し、LLM がインバウンド、クライアント、ルーティングルール、Xray サービス、サーバー設定を管理できるようにします。

目次

機能

  • パネル API 全体 — インバウンド、クライアント、グループ、ホスト、ノード、ルーティング、ロードバランサー、ジオデータ、メトリクス、トークン、メンテナンスに対応する 169 個のツールを提供します。ファイル転送とノード同期の 4 つのルートを除き、3x-ui が公開するすべての機能を利用できます(3x-ui v3.3.0 以降 — パネルのバージョンを参照)。
  • 2 つの認証方式 — CSRF を使うセッションログイン、または Bearer API トークン(XUI_API_TOKEN)に対応し、どちらの認証情報が期限切れになっても自動的に再認証し、CSRF トークンを更新します。
  • メールアドレスをキーにしたクライアント — 1 つのクライアントを複数のインバウンドに関連付けられます。一括作成、調整、有効化、削除に加え、大規模なパネル向けのサーバー側ページングにも対応します。
  • 注釈付きツール — すべてのツールで操作の影響を宣言するため、MCP クライアントは実行前に読み取り専用の呼び出しか破壊的な呼び出しかを確認できます。
  • デフォルトでは遅延読み込み — 大きなペイロードには概要と resource_link を返し、実際にドキュメントが必要なときにのみ取得します。
  • コンテキスト予算を考慮 — XUI_TOOLSETS では指定したツールグループのみを読み込み、各セッションでスキーマが占める領域を削減します。
  • エージェントスキルを同梱 — 実際の作業に使える 7 つの手順を用意しています。Xray-core と 3x-ui のソースに照らして検証済みです(エージェントスキルを参照)。
  • Stdio トランスポートに対応し、MCP SDK 以外の外部依存関係はありません。

重要

これらのツールは稼働中のプロキシパネルを操作します。破壊的操作の注釈が付いたツールは、クライアントの削除、 トラフィックカウンターのゼロ化、Xray の再起動を行います。Xray を再起動するとすべての接続が切断されます — 一部の操作はパネル全体に適用され、元に戻せません。エージェントには、操作対象を必要な範囲に限定した API トークンを付与し、 一括操作の前にはバックアップを取ってください。

クイックスタート

npx の実行に必要なのは Node 16+ のみです。パッケージには Linux、macOS、 Windows 向けの x64 および arm64 用ビルド済みバイナリが含まれているため、コンパイルも Go ツールチェーンも 不要です。Go がすでにインストールされていれば、go run …@latest も同様に使えます。その他の実行方法を参照してください。

Claude Code
claude mcp add 3x-ui \
  --env XUI_HOST=http://localhost:2053 \
  --env XUI_USERNAME=admin \
  --env XUI_PASSWORD=your-password \
  -- npx -y @pyworkload/3x-ui-mcp
Claude Desktop / Cursor

claude_desktop_config.json(Claude Desktop)または .cursor/mcp.json(Cursor)に追加します。

{
  "mcpServers": {
    "3x-ui": {
      "command": "npx",
      "args": ["-y", "@pyworkload/3x-ui-mcp"],
      "env": {
        "XUI_HOST": "http://localhost:2053",
        "XUI_USERNAME": "admin",
        "XUI_PASSWORD": "your-password"
      }
    }
  }
}
VS Code

.vscode/mcp.json に追加します。

{
  "servers": {
    "3x-ui": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@pyworkload/3x-ui-mcp"],
      "env": {
        "XUI_HOST": "http://localhost:2053",
        "XUI_USERNAME": "admin",
        "XUI_PASSWORD": "your-password"
      }
    }
  }
}
その他の実行方法

上記のいずれかの設定で command と args を入れ替えます。

方法commandargs
Go ツールチェーンgo["run", "github.com/pyworkload/3x-ui-mcp/cmd/xui-mcp@latest"]
ビルド済みバイナリ/path/to/xui-mcp—
グローバルインストールxui-mcp—

go run …@latest は初回使用時にコンパイルし、以降はキャッシュから実行します。 毎回 npx を使いたくない場合は、npm install -g @pyworkload/3x-ui-mcp を実行すると xui-mcp が PATH に追加されます。

プロンプトの例

接続したら、エージェントに次のようなことを尋ねてみてください。

  • 「インバウンド 3 に、容量 10 GB、有効期限 7 日で試用クライアントを 20 件作成して、サブスクリプションリンクを教えてください。」
  • 「クォータの 90% を超えているクライアントはどれですか? すべての有効期限を 30 日延長し、容量を 50 GB 増やしてください。」
  • 「104.16.0.0/24 をスキャンして使用可能な REALITY ターゲットを探し、最速のものを VLESS インバウンドに設定してください。」
  • 「Warp アカウントを登録して、*.netflix.com の通信を経由させてください。」
  • 「誰も接続できません。Xray のログとパネルのログを確認し、各クライアントが最後にオンラインだった時刻を調べてください。」
  • 「現在、最も多くのオンラインクライアントにサービスを提供しているノードはどれですか? また、その負荷はどの程度ですか?」
  • 「データベースを Telegram にバックアップしてから、すべてのノードでパネルのセルフアップデートを実行してください。」

エージェントスキル

skills/ には、パネルで実際に行われる作業のための 7 つの手順が含まれています。これらは、ツールのスキーマでは扱えない運用知識をまとめたものです。つまり、どのような順序で作業するか、またパネルが警告しない事柄について説明しています。

スキル内容
reality-inboundREALITY のカモフラージュターゲットの選定と検証、キー、shortId、使用不能になったインバウンドの修復
diagnose-connectivityクライアントが接続できない原因を、最も簡単に確認できるものから調査し、コアのエラー文字列を原因に対応付けます
panel-hardening管理者パスワードの代わりにスコープを限定したトークンを使用する方法、ローテーション、fail2ban、証明書のピン留め、バックアップ
cdn-fallbackCDN の背後で WebSocket/gRPC/xhttp を使用する方法、およびフォールバックを使ってポート 443 を共有する方法
client-lifecycleオンボーディング、サブスクリプションリンク、一括更新、レポート、クリーンアップ
smart-routingドメインと地域トークンによる分割ルーティング、プロバイダーのアウトバウンド、test_route を使ったルールの検証
multi-nodeノードの追加、TLS の信頼モードと mTLS、選択的な同期、クラスターの監視
cp -r skills/* ~/.claude/skills/     # Claude Code, everywhere
cp -r skills/* .claude/skills/       # this project only

設定

変数必須説明例
XUI_HOSTはいパネル URLhttp://localhost:2053
XUI_USERNAMEはい¹管理者ユーザー名admin
XUI_PASSWORDはい¹管理者パスワードadmin
XUI_API_TOKENいいえBearer API トークン。/panel/api/* の CSRF をバイパスしますeyJ…
XUI_TOOLSETSいいえ公開するツールグループ(デフォルト:すべて)clients,metrics
XUI_BASE_PATHいいえパネルのベースパス(デフォルト:/)/xui/
XUI_LOG_LEVELいいえログレベル(デフォルト:info)debug、info、warn、error

¹ XUI_USERNAME+XUI_PASSWORD、または XUI_API_TOKEN のいずれかを指定してください。

認証モード(3x-ui は CSRF でパネルを保護し、API トークンをサポートしています):

  • セッション + CSRF(ユーザー名/パスワード):すべてのツールで機能します。クライアントはログインし、セッションの CSRF トークンを追跡して書き込みリクエストで再送します。トークンが古くなると、自動的に更新します。

  • Bearer API トークン(XUI_API_TOKEN):すべてのリクエストでトークンが送信され、パネルは CSRF なしで /panel/api/* ルートへのアクセスを許可します。v3.3.0 以降では、この範囲に設定や Xray テンプレートを含む、ここに記載されたすべてのツールが含まれます。 パネルの Settings → Security → API Token からトークンを作成してください。

    v3.7.0 以降、トークンにはスコープと有効期限を設定できるため、このサーバーには admin スコープを指定してください。他の 2 つは適しません。monitor はステータスとメトリクスのルートに限定された許可リストで、ここに記載されたツールのうち対象となるのは server_status と get_xray_versions だけです。node-sync はパネルからノードへの通信に限定された許可リストです。作成時に平文のトークンが表示されるのは一度だけで、パネルには SHA-256 ハッシュが保存されます。また、CLI の x-ui setting -getApiToken は現在、新しいトークンを発行するのではなく、共有の cli-fallback トークンをローテーションします。そのため、再実行すると、以前に配布したトークンは無効になります。

    v3.8.0 以降、パネルが拒否するトークンへの応答は、以前のように 404 に見せかけられるのではなく、401 になります。パネルはその後もセッションを確認するため、認証情報も設定されている場合、クライアントはログインして再試行し、トークンが拒否されたという警告をログに記録します。トークンだけを設定している場合、トークン名を含むエラーで呼び出しが失敗します。XUI_BASE_PATH が誤っている場合は引き続き 404 になるため、これで区別できるようになりました。

ツールセットの絞り込み: 169 個すべてのツールスキーマを合わせると、各セッションのモデルコンテキストを約 29k トークン使用するため、絞り込む価値があります。XUI_TOOLSETS を使うと、必要なグループだけを読み込めます:inbounds、clients、server、xray、metrics、groups、geodata、hosts、nodes、tokens、providers、maintenance、または all。XUI_TOOLSETS=clients,metrics を指定すると、約 7.5k トークンで 47 個のツールを使用できます。不明な名前を指定すると、何も読み込まずに続行するのではなく、起動時にエラーになります。

パネルのバージョン

3x-ui v3.3.0 以降が必要です。このリリースでは、設定と Xray のエンドポイントが /panel/setting/* および /panel/xray/* から /panel/api/ 配下に移動しました(上流の c6f15cd5 による、文書化された後方互換性のない変更です)。このサーバーは現在の構成を対象としています。

古いパネルでも、インバウンド、クライアント、サーバーのツールは引き続き機能しますが、設定や Xray テンプレートを扱うものは HTTP 404 を返します。v3.2.8 以前のパネルでは、代わりにリリース v0.2.0 を使用してください。

いくつかのツールは v3.3.0 より後に追加されたエンドポイントをラップしており、以下に記載されたバージョンより古いバージョンでは 404 を返します。

ツール必要なバージョン
get_balancers、set_balancer_override、test_routev3.3.1
scan_reality_target、scan_reality_targets、get_all_inbound_linksv3.4.2
可観測性、クライアントグループ、クライアント状態の一括操作、インバウンドのプロジェクションとフォールバックv3.5.0
ホストグループ、API トークン、クライアントのエクスポート/インポート、外部リンク、Warp、NordVPNv3.5.0
マルチノードツールv3.5.0
メンテナンス、証明書ヘルパー、クラスターのクライアントビュー、test_outboundsv3.5.0
ジオデータ、HWID デバイス、get_clients_by_telegram_id、set_inbound_sub_sort_indexv3.7.0
サブスクリプションバランサー、PIA、reload_node_mtls_client、トークンの scope/expires_atv3.7.0
validate_regex、get_factory_defaults、get_panel_update_status、get_amneziawg_logsv3.7.0
preview_client_renewal、reset_weekday クライアントパラメーターv3.9.0
manage_warp の regMasque アクション、MASQUE インバウンドv3.10.0

最後の 2 行は、パネル独自の生成済み openapi.json の範囲に限られます。このファイルが利用できるのは v3.5.0 以降のみのため、該当するルートの一部はそれ以前から存在していた可能性があります。

v3.8 ではルートは追加されませんでした。 変更されたのは JSON の形式です。v3.3.1 以降、パネルはインバウンドの settings、streamSettings、sniffing を、旧バージョンで送信されていた JSON エンコード文字列ではなく、ネストされたオブジェクトとして出力します。また、リリースのたびにインバウンドとクライアントに列が追加されています。そのため、このサーバーではどちらのボディも構造体としてモデル化しなくなりました。update_inbound と update_client は現在の行をマップに読み込み、パネルがリクエストごとに再計算するフィールドだけを削除して、指定されたパラメーターを重ね合わせます。新しいパネルで追加されたフィールドは、そのまま引き継がれ、次回の更新時に暗黙に消去されることはありません。ただし、引き継がれることと設定可能であることは同じではありません。そのため、これらのリリースで追加されたクライアント列、すなわち HWID 制限、クライアントごとのリセットサイクル、VLESS のリバースタグ、MTProto、WireGuard、AmneziaWG のピア設定には、add_client と update_client の両方に専用のパラメーターがあります。完全な一覧は xui://docs/client-fields リソースにあります。

v3.9.0 ではルートが 1 つ追加されました — 更新プレビューです。また、インバウンド更新で変更できる内容も変わりました。inbounds/update はボディの内容にかかわらず、保存済みのクライアントリストとインバウンドの enable フラグを維持するようになったため、update_inbound でインバウンドを無効にしたり、クライアントを編集したりすることはできなくなりました。これらの操作には set_inbound_enable とクライアントツールを使用してください。旧バージョンのパネルでも、これらの方法のほうが安全です。同じリリースでは、週次のクォータ更新も追加されました(reset および reset_day とは併用できません。update_client は変更前のモードをクリアします)。また、allow_private が設定されていない場合、get_remote_cert_hash はプライベートアドレスやループバックアドレスのターゲットを拒否します。

v3.10.0 ではルートは追加されませんでした — 追加されたのは Warp の新しいアクションと新しいプロトコルです。manage_warp では、action=regMasque を指定して MASQUE 経由で Warp デバイスを登録できます。パネルには何も保存されず、warp-masque アウトバウンド用の秘密鍵、アドレス、エンドポイントが返されます。MASQUE インバウンドでは、メールアドレスとパスワードでクライアントを認証します。password を指定せずに add_client を呼び出すと、パネルがパスワードを生成します。メールアドレスに : を含めることはできません。同じリリースで、クライアントの WireGuard ピア列(private_key、public_key、pre_shared_key、allowed_ips、keep_alive)は、そのクライアントが属する WireGuard/AmneziaWG インバウンドの下に移動しました。該当するインバウンドがないクライアントでは、update_client は成功しても、パネルは保存済みの値を維持します。バランサーのオーバーライドは、ルーティングの再読み込み後も(コアの再起動ではなく)保持されるようになりました。また、Shadowsocks-2022 の鍵長の誤り、4 バイト未満のマスクパスワード、解析できないレポート、LDAP cron など、Xray が実行できない設定をパネルが拒否するようになりました。v3.10.2 では API に変更はありませんでした。 現在のパネルリリースである v3.10.2(それ以前は v3.9.0 および v3.8.5)でテスト済みです。すべてのツールを稼働中のパネルに対して実行しました。読み取り、書き込み、ノードとして登録された 2 台目のパネルに対するノードツール、実際にリストを提供する URL に対するアウトバウンドサブスクリプションツールが対象です。4 つのツールは、このサーバーでは用意できない設定を必要とします。test_smtp と test_telegram_bot は認証情報を、delete_client_device はクライアントアプリが登録したデバイスを、get_node_cert_fingerprint は HTTPS ノードを必要とするため、これらについてはパネルに到達して応答を受け取ることを確認しており、成功することまでは確認していません。読み取り・変更・書き込みの契約は、更新前後のインバウンド全体とクライアント全体を差分比較する統合テスト(make test-panel)で固定しています。

MCP ツール

すべてのツールには、パネルへの影響(読み取り専用、追加、破壊的、サービス中断)と、パネル外部のホストに接続するかどうかが注記されています。MCP クライアントはこれらのヒントを使って、安全な呼び出しを自動承認し、それ以外の呼び出しの前に確認を求めます。

インバウンド管理
15 個のツール — CRUD、有効化の切り替え、トラフィックのリセット、フォールバック、一括削除、リンク
ツール説明
list_inboundsすべてのインバウンド接続を一覧表示します
get_inboundID でインバウンドを取得します
create_inbound新しいインバウンドを作成します
update_inbound既存のインバウンドを更新します
delete_inboundインバウンドを削除します
set_inbound_enable設定を書き換えずにインバウンドを有効化/無効化します
reset_inbound_traffic1 つのインバウンドのトラフィックカウンターをゼロにします
delete_all_inbound_clientsインバウンドは維持したまま、そのインバウンドからすべてのクライアントを削除します
bulk_delete_inbounds1 回の呼び出しで複数のインバウンドを削除します
get_all_inbound_links接続 URL の数を返し、全リストへのリンクを取得します(full=true の場合は URL をインラインで含めます)
list_inbounds_slimクライアント配列を縮小したインバウンドを返します。大規模なパネル向けの低コストな一覧取得です
get_inbound_options選択用の投影:id、remark、tag、protocol、port、機能フラグ
get_inbound_fallbacksマスターの VLESS/Trojan TCP-TLS インバウンドに設定されたフォールバックルールを取得します
set_inbound_fallbacksフォールバックリスト全体を置き換えます(Xray を再起動します)
set_inbound_sub_sort_indexサブスクリプション出力におけるインバウンドの位置を設定します
### クライアント管理

クライアントはメールアドレスをキーとするエンティティで、複数のインバウンドに同時に紐付けられます。

41 tools — メールアドレスによる CRUD、紐付け/解除、一括操作、通信量、デバイス、オンライン状態
Tool説明
add_clientクライアントを作成し、1 つ以上のインバウンド(inbound_ids)に紐付けます
update_clientメールアドレスでクライアントを更新します(指定されたフィールドのみ変更され、UUID は保持されます)
delete_clientメールアドレスでクライアントを削除します(keep_traffic は任意です)
get_clientメールアドレスで、クライアントの全設定とインバウンドへの紐付けを取得します
list_clientsページ分け、検索、フィルタリングに対応したクライアント一覧
attach_client既存のクライアントを追加のインバウンドに紐付けます
detach_client指定したインバウンドからクライアントの紐付けを解除します
bulk_create_clients同じインバウンドに複数のクライアントを作成します
bulk_delete_clientsメールアドレスを指定して複数のクライアントを削除します
get_client_trafficメールアドレスでクライアントの通信量統計を取得します
get_client_ipsクライアントが使用した IP アドレスを取得します
clear_client_ips記録されたクライアントの IP アドレスを消去します
reset_client_trafficメールアドレスでクライアントの通信量カウンターをリセットします
reset_all_trafficsすべてのインバウンドの通信量カウンターをリセットします
reset_all_client_trafficsすべてのクライアントの通信量をリセットします(パネル全体)
bulk_reset_traffic指定したクライアントの通信量をリセットします
delete_depleted_clients通信量を使い切った、または期限切れのクライアントを削除します(パネル全体)
get_online_clients現在接続中のクライアント一覧
get_last_onlineすべてのクライアントの最終オンライン時刻
update_client_trafficクライアントのアップロード/ダウンロードのバイトカウンターに特定の値を設定します
get_subscription_linksサブスクリプション ID で提供される接続 URL を JSON 形式で取得します
get_client_linksメールアドレスでクライアント 1 人分の接続 URL を、インバウンドごとに取得します
get_happ_linkHapp アプリ向けに、クライアントのサブスクリプションをラップした暗号化 happ://crypt5 リンク
preview_client_renewalクォータ更新スケジュールが次に実行される時刻をパネルのタイムゾーンで表示します。何も保存しません
get_clients_by_telegram_idTelegram ユーザー ID でクライアントを検索します
list_client_devicesクライアントに登録されている HWID デバイスを一覧表示します
delete_client_device登録済みデバイスを 1 台削除し、HWID スロットを空けます
clear_client_devicesクライアントの登録済みデバイスをすべて削除します
bulk_enable_clients複数のクライアントを有効化します。所有するインバウンドごとに 1 回書き換えます
bulk_disable_clients複数のクライアントを無効化します。所有するインバウンドごとに 1 回書き換えます
bulk_adjust_clients複数のクライアントの有効期限とクォータを調整します。一括更新機能です
delete_orphan_clientsどのインバウンドにも紐付いていないクライアントと、そのレコードを削除します
export_clientsクライアント数と完全なエクスポートへのリンクを取得します(full=true を指定すると内容を直接含めます)
import_clientsエクスポートされた配列からクライアントを作成します。既存のメールアドレスはスキップされます
set_client_external_linksクライアントの外部リンクとサブスクリプションを置き換えます
list_clients_pagedクライアント一覧のサーバー側でのフィルタリング、並べ替え、ページ分け
bulk_attach_clients複数のクライアントを複数のインバウンドに同時に紐付けます
bulk_detach_clients複数のクライアントを複数のインバウンドから同時に切り離します
get_active_inbounds通信量があったインバウンドのタグをノードごとにまとめて取得します
get_online_clients_by_nodeオンライン中のクライアントを、接続先ノードごとにまとめて取得します
get_client_ips_by_nodeクライアントごとの送信元 IP アドレスを、それを検知したノードごとにまとめて取得します
### サーバー管理
14 個のツール — ステータス、ログ、Xray サービスの制御、キー生成、REALITY スキャン
ツール説明
server_statusサーバーのシステムステータスを取得します(CPU、RAM、ディスク、稼働時間)
restart_xrayXray サービスを再起動します
stop_xrayXray サービスを停止します
get_xray_config実行中の Xray 設定の概要と、完全な JSON へのリンクを取得します(full=true を指定するとインラインで表示します)
get_xray_versions利用可能な Xray のバージョンを一覧表示します
install_xray指定した Xray のバージョンをインストールします
get_logsパネルサービスのログを取得します
get_xray_logsXray コアのログを取得します
get_settingsパネルの設定を取得します
get_default_xray_configデフォルトの Xray 設定を取得します
restart_panel3x-ui パネルを再起動します
generate_keyUUID、X25519(Reality)、VLESS 暗号化、ML-KEM-768、ML-DSA-65 のキー素材を生成します
scan_reality_targetREALITY の候補を 1 つ調査し、使用可能かどうかを報告します
scan_reality_targetsドメイン、IP、CIDR 範囲を調査し、実現可能性とレイテンシで順位付けします
Xray 設定
21 個のツール — テンプレート、ルーティングルール、アウトバウンド、バランサー、アウトバウンドサブスクリプション
ツール説明
get_xray_templateテンプレートの概要と、完全な JSON へのリンクを取得します(full=true を指定するとインラインで表示します)
update_xray_templateXray の JSON テンプレートを更新します
get_routing_rulesすべてのルーティングルール(および参照先のバランサー)を一覧表示します
add_routing_ruleルーティングルールを追加します
remove_routing_ruleインデックスを指定してルーティングルールを削除します
update_routing_ruleインデックスを指定してルーティングルールを更新します
get_outboundsすべてのアウトバウンドを一覧表示します
get_outbounds_trafficアウトバウンドのトラフィック統計を取得します
reset_outbound_trafficアウトバウンドタグのトラフィックをリセットします
test_outboundアウトバウンドの接続をテストします
get_balancersバランサーの定義と、実行中のコアにおける現在の状態を取得します
set_balancer_overrideバランサーを 1 つのアウトバウンドに固定するか、戦略に戻します
test_route合成接続に対して、コアがどのアウトバウンドを選択するかを確認します
list_outbound_subsアウトバウンドサブスクリプション(追加のアウトバウンドを提供するリモート URL)を一覧表示します
preview_outbound_subサブスクリプション URL を保存せずに解析します
create_outbound_subアウトバウンドサブスクリプションを追加します
update_outbound_subサブスクリプションを更新します(指定したフィールドのみ変更されます)
refresh_outbound_subサブスクリプションを今すぐ再取得し、そのアウトバウンドを返します
move_outbound_subサブスクリプションの優先順位を上下に変更します
delete_outbound_subアウトバウンドサブスクリプションを削除します
ホストグループ

ホストグループは、CDN のホスト名、2 つ目のポート、異なる SNI などの外部アドレスで 1 つ以上のインバウンドを公開し、パネルはそれらに対応するサブスクリプションリンクを生成します。グループは文字列の group_id で指定します。

11 個のツール — CRUD、並べ替え、一括状態変更
ツール説明
list_hostsすべてのインバウンドに属するホストグループをすべて取得します
get_host_groupID を指定して 1 つのグループを取得します
get_inbound_hosts1 つのインバウンドに関連付けられたグループを取得します
list_host_tagsグループ全体で使用されているタグを重複なしで一覧表示します
add_host_group一連のインバウンドを対象にグループを作成します
update_host_group省略したフィールドを保持したままグループを更新します
delete_host_groupグループとそのホストを削除します
set_host_group_enable1 つのグループを有効または無効にします
reorder_host_groupsグループの表示順を設定します
bulk_delete_host_groups複数のグループを一度に削除します
bulk_set_host_groups_enable複数のグループの有効・無効を一度に切り替えます

add_host_group と update_host_group では、通常グループの作成に使うフィールドを指定できます。それ以外の項目(mux、sockopt、ECH、final mask)は raw_json で HostGroup 全体を送信します。

サブスクリプションのロードバランサー

クライアント側のロードバランサーです。いずれかのインバウンドに属する各クライアントのJSONサブスクリプションに表示され、クライアントアプリが戦略に基づいてサーバーを選択します。Xray内部で稼働するルーティング用ロードバランサーを報告するget_balancersとは異なります。

4 tools — 並び順に沿ったCRUD
ツール説明
list_sub_balancers並び順に沿ったすべてのサブスクリプション用ロードバランサー
create_sub_balancer一連のインバウンドにロードバランサーを追加
update_sub_balancer省略したフィールドを保持したまま更新
delete_sub_balancerロードバランサーを削除
API トークン
4 tools — 発行、無効化、削除
ツール説明
list_api_tokensトークンのメタデータ。トークンの値自体は返されません
create_api_tokenスコープ付きトークンを発行。平文が表示されるのは一度だけです
set_api_token_enabledトークンを削除せずに無効化、または再有効化
delete_api_tokenトークンを完全に削除

delete_api_tokenとset_api_token_enabledには、保存済みのトークンのscopeを指定します。一致しない場合、パネルは処理を拒否するため、IDを推測してトークンの状態を変更することはできません。

アウトバウンドプロバイダー

Cloudflare Warp、NordVPN、PIAにはそれぞれ読み取りツールと書き込みツールが用意されているため、国の一覧を問い合わせる操作と認証情報を消去する操作を区別できます。

6 tools — プロバイダーごとに読み取りツールと書き込みツール
ツール説明
get_warp_dataWarpアカウントの状態、または保存済みのWireGuard設定
manage_warp登録(WireGuardまたはMASQUE)、IPのローテーション、ライセンスの適用、ローテーションの設定、または消去
get_nordvpn_data国、国別のサーバー、または保存済みのアカウント
manage_nordvpnトークンで登録、キーを設定、または消去
get_pia_data地域、地域別のサーバー、または保存済みのアカウント
manage_piaログイン、サーバーに対するキーの登録、または消去
パネルのメンテナンス
19 tools — ヘルスチェック、証明書、地理データファイル、セルフアップデート、バックアップ、統合テスト
ツール説明
get_fail2ban_statusこのホストでクライアントごとのIP制限を適用できるかどうか
get_web_cert_filesこのパネル独自のTLS証明書とキーのパス
get_cert_hashピン留め用の証明書のSHA-256
get_remote_cert_hashリモートサーバーの現在の証明書のSHA-256
generate_ech_cert1つのSNIに対するECHキーペアと設定リスト
update_geofile最新のGeoIP/GeoSiteデータファイルをダウンロード
get_panel_update_status直近のパネルのセルフアップデートの結果
set_update_channelstableチャンネルとdevチャンネルを切り替え
update_panelパネルをセルフアップデート(再起動されます)
get_amneziawg_logsAmneziaWGピアのアクティビティとイベントをリアルタイムで確認
get_node_descendantsクラスターツリーでこのパネルの下位にあるノード
get_client_ips_tableIP制限に使用する集約済みクライアントIPテーブル
backup_to_telegramデータベースのバックアップを管理者のTelegramチャットに送信
test_smtp段階ごとのレポートを含むSMTPテスト
test_telegram_bot設定済みのボット経由でテストメッセージを送信
validate_regexパネルのGo RE2エンジンでパターンをコンパイル
get_default_settings新規インストール時に算出される設定をプレビュー
get_factory_defaults各設定キーに適用される出荷時の既定値
update_admin_credentialsパネル管理者のユーザー名とパスワードを変更

update_admin_credentialsを実行すると、このサーバー自身が使用する認証情報が無効になります。XUI_USERNAME / XUI_PASSWORDを更新してからサーバーを再起動するか、先にAPIトークンに切り替えてください。

マルチノード

ノードとは、このパネルが制御する別の 3x-ui パネルです。インバウンドとクライアントがノードにプッシュされ、ノードのトラフィックがこのパネルに取り込まれます。これらの呼び出しの大半は、このパネルだけでなくノード自体に対して行われます。

16 tools — CRUD、プローブ、mTLS、ノードパネルの更新
ToolDescription
list_nodes設定済みノードのヘルス状態、件数、最終ハートビート
get_node1 つのノードの接続詳細と同期状態
get_node_history1 つのノードの CPU またはメモリの履歴
get_node_web_certノード上に存在する証明書と鍵のパス
test_node接続情報を保存せずにプローブ
list_node_inbounds選択的同期に使用する、ノードで利用可能なインバウンド
get_node_cert_fingerprintピン留め用の、ノードのリーフ証明書の SHA-256
add_nodeノードを登録(保存前にプローブ)
update_nodeノードを更新し、省略したフィールドは保持
set_node_enableノードとのトラフィック同期を一時停止または再開
probe_node登録済みノードをプローブし、キャッシュされたヘルス状態を更新
delete_nodeノードを削除。そのインバウンドは移行されません
get_node_mtls_caこのパネルのノード認証用 CA。初回呼び出し時に発行
set_node_mtls_trust_caノードとして動作する際に、このパネルが信頼する CA
reload_node_mtls_client再起動せずに、ローテーションされたクライアント証明書を適用
update_node_panels指定したノードで 3x-ui のセルフアップデーターを実行

v3.6.0 以降、ノード API トークンは書き込み専用です。パネルはトークンが設定されているかどうかだけを報告するため、新しいトークンを渡さない限り、update_node はトークンを省略します。mTLS に移行したノードが古いトークンを破棄するには、clear_api_token を使用します。

クライアントグループ

グループは、クライアントレコードと、そのクライアントを所有する各インバウンドの設定の両方に記録されるラベルです。パネルは 1 つのトランザクションで両者を同期させます。

8 tools — CRUD と一括メンバー管理
ToolDescription
list_client_groups空のグループを含む、メンバー数付きのすべてのグループ
get_client_group_emails1 つのグループに属するメールアドレス。一括操作への入力として使用
create_client_group空の選択可能なグループを作成
rename_client_groupグループの名前を変更し、すべてのメンバーの参照先を更新
delete_client_groupクライアントを保持したままグループを削除
add_clients_to_group多数のクライアントに 1 つのグループを設定
remove_clients_from_group多数のクライアントのグループラベルを解除
reset_client_group_trafficクライアントごとのカウンターは稼働させたまま、グループカウンターをゼロにリセット
可観測性
6 tools — メトリクス履歴、オブザーバトリー、アップデート確認
ToolDescription
get_metrics_history1 つのホストメトリクス(cpu、mem、netUp/Down、online、load)の時系列データ
get_xray_metricsXray のランタイムメトリクスの状態と現在の expvar 値
get_xray_metrics_history1 つの Xray ランタイムメトリクスの時系列データ
get_xray_observatory最新のアウトバウンドごとのレイテンシとヘルス状態のスナップショット
get_xray_observatory_history1 つのアウトバウンドタグのプローブ結果の推移
get_panel_update_infoより新しい 3x-ui リリースがあるかどうか

履歴ツールは秒単位の bucket を受け取り、常に 60 個のサンプルを返すため、バケットによって対象期間も決まります。2(2 分)、30(30 分)、60(1 時間)、180(3 時間)、360(6 時間)、720(12 時間)、1440(24 時間)、2880(2 日)、10080(7 日)です。

地理データ
4 tools — 地理データベースの参照、ルーティングトークンの検証
ToolDescription
list_geodata_filesXray のアセットフォルダー内にある地理データベース。レイアウトとカテゴリ数も表示します
list_geodata_categories1 つのデータベース内のカテゴリ。エントリー数と属性も表示します
list_geodata_entriesカテゴリ内のルール。型付きドメインまたは CIDR です
validate_geodata_tokens解決できないルーティングトークンと、その理由を報告します

意図的にラップしていないもの: server/getDb、server/getMigration、server/importDB はデータベースファイルを添付ファイルやマルチパートアップロードとして受け渡すため、ここではなくブラウザーやバックアップスクリプトで扱うものです。 inbounds/pushClientTraffics と POST server/clientIps はノード同期の受信側です。ノードがリクエストを受け取るエンドポイントであり、クライアントが呼び出すものではありません。

リソース

呼び出し元がすべての結果を必要としているかどうかにかかわらず、ツールの結果はコンテキストを消費します。 リソースは遅延取得用です。それぞれ resources/list の1行分のコストがかかり、URI を要求されたときにのみ読み込まれます。 最もデータ量の多い3つのツールは、要約と対応するリソースへの resource_link を返します。実行中の Xray 設定は約 9k 文字ですが、その要約は 500 文字未満です。

URIContents
xui://docs/inbound-settingssettings、streamSettings、sniffing の JSON と、プロトコルごとの例
xui://docs/client-fields各クライアントフィールドの意味と使用単位
xui://xray/configコアが現在実行している設定
xui://xray/template保存済みテンプレート:routing、balancers、outbounds、DNS
xui://inboundsすべてのインバウンドと、その設定およびクライアントごとの統計情報
xui://inbounds/linksすべてのクライアントの接続 URL
xui://clients/export{client, inboundIds} 形式のすべてのクライアント(認証情報を含む)
xui://inbound/{id}数値 ID で指定した1つのインバウンド
xui://client/{email}メールアドレスで指定した1つのクライアントレコード

2つの xui://docs/… リソースは静的なリファレンステキストなので、読み込んでもパネルへの呼び出しは発生しません。

アーキテクチャ

cmd/xui-mcp/main.go        Entry point, config loading, signal handling
internal/config/            Configuration from environment variables
internal/xui/              HTTP client with session management
internal/handler/          MCP tool definitions and request handlers

開発

make test       # Run tests
make lint       # Run golangci-lint (config in .golangci.yml)
make fmt        # Format code
make build      # Build binary

コントリビューション

バグ報告、パネルのバージョンに関する情報、プルリクエストを歓迎します。セットアップ方法、CI で実行されるチェック、新しいツールが従う必要のあるパネルの規約については、CONTRIBUTING.md をご覧ください。 参加にあたっては Code of Conduct が適用されます。脆弱性については、issue を作成せず、SECURITY.md の手順に従ってください。 ツール数や必要なパネルのバージョンを含む、各リリースの変更内容は CHANGELOG.md に記載されています。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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