ultranix-mcp について
ultranix-mcp は、Agent や MCP クライアント向けの Linux デスクトップ操作用 Rust 製 MCP サーバーです。Wayland を中心とした入力・画面検査に、複数のコンポジター用バックエンドや代替プロバイダー、安全制御を組み合わせています。
主な機能
- 01マウスとキーボードの入力
- 02スクリーンショット、OCR、アイコン検索
- 03アクセシビリティツリーの検査
- 04ウィンドウとクリップボードの管理
- 05画面録画とライブキャプチャ
- 06監査ログと暗号化された操作履歴
活用シーン
- 01Wayland デスクトップ操作の自動化
- 02OCR やアクセシビリティ情報による UI 要素の検索
- 03エージェントによるウィンドウとクリップボードの管理
- 04デスクトップ操作の録画や監視
MCP 対応
stdio またはストリーミング可能な HTTP 経由で、Linux デスクトップ自動化ツールを MCP クライアントに公開します。ツールカテゴリを指定して利用可能な機能を絞れます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e ULTRANIX_MCP_API_KEY -e ULTRANIX_MCP_API_KEY_FILE -e ULTRANIX_MCP_API_KEY_EXPIRES -e ULTRANIX_MCP_HISTORY_SECRET -e ULTRANIX_MCP_SENTRY_DSN -e ULTRANIX_MCP_AUDIT_SECRET ghcr.io/jxoesneon/ultranix-mcp:1.4.0ULTRANIX_MCP_API_KEYシークレットAPI key(s) (uxcp_*) for HTTP transport auth - required for --transport http (fail-closed), unused on stdioULTRANIX_MCP_API_KEY_FILEシークレットPath to a 0600 file holding uxcp_* keys, one per lineULTRANIX_MCP_API_KEY_EXPIRESシークレットOptional RFC 3339 expiry for the env-sourced key (self-revoking)ULTRANIX_MCP_HISTORY_SECRETシークレットAES-256-GCM secret for encrypted action history (per-install generated if unset)ULTRANIX_MCP_SENTRY_DSNシークレットOptional Sentry DSN for error reporting (unset = disabled)ULTRANIX_MCP_AUDIT_SECRETシークレットOptional HMAC-SHA256 signing secret for audit.jsonl lines (tamper evidence for SIEM ingestion)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/jxoesneon/ultranix-mcp:1.4.0stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ultranix-mcp
**ultranix-mcp は、AI エージェント向けのエンタープライズグレードで安全な Linux デスクトップ自動化レイヤーです。**Model Context Protocol(MCP)クライアントである Claude Desktop、Claude Code、Cursor、Windsurf、および MCP 対応のあらゆるアシスタントから、Wayland デスクトップを認識し、クリックし、入力し、操作できます。マウス、キーボード、スクリーンショット、OCR、アイコン検索、ウィンドウ管理、アクセシビリティツリーの検査に対応しています。
ultranix-mcp は設計段階から Wayland ネイティブです。コンポジタープロトコルを第一に、uinput/evdevを第二に、XDG デスクトップポータルを最後に利用し、兄弟製品(macOS 向けの ultramac、Windows 向けの ultrawin)と同じガバナンスと信頼の基盤として、監査ログ、レート制限、入力のサニタイズ、AES-256-GCM による暗号化済み操作履歴を備えています。クロスコンポジターのフォールバック階層、完全なガバナンス基盤、3 つの OS にまたがる兄弟製品間の契約を組み合わせた、初の Linux デスクトップ MCP です。これにより、組織は自らの制御を手放すことなく、エージェントに Linux デスクトップを操作させることができます。
ステータス:v1.4.0 を実装済みです。ROADMAP.mdのフェーズ 0~5 に加え、v1.1.0 の機能群(layer-shell オーバーレイ、X11 ネイティブプロバイダー、PipeWire ポータルキャプチャ、オプトインの Sentry、OCR キャッシュ、追加メトリクス)、v1.2.0 の機能拡張(クリップボードツール、プラグイン用ツールマクロ、
screen_record、sway/Wayfire/river/KDE/GNOME のセッション検出、バックエンドごとの cargo 機能、フレーム付き履歴 v2)、v1.3.0 のポリシー機能群(キーごとのロールに対応した実行時アクセス制御ポリシー、--readonly/--allow-tools/--deny-tools、バックエンドごとの呼び出しメトリクス、任意の HMAC 署名付き監査行)、そして v1.4.0 の対応範囲拡大(Wayfire/river/GNOME のウィンドウ階層、ライブのscreen_streamキャプチャ、プラグインで公開される動的ツール、OCI イメージと-binパッケージ)をリリースしました。各リリースの詳細はCHANGELOG.mdをご覧ください。検証済みの対象環境は、Rust 1.98.1 上のCachyOS(Arch)+ Wayland 上の Hyprland、PipeWire、xdg-desktop-portal-hyprland、および稼働中の AT-SPI2 バスです。
機能
- 高精度なマウス制御-
zwlr_virtual_pointer_v1プロトコルを使用して、クリック、ダブルクリック、ドラッグ、スクロール、ボタン状態の制御、位置の取得、滑らかな軌跡での移動を行います。root 権限やヘルパーデーモンは不要です。 - 高度なキーボード入力-
virtual-keyboard-unstable-v1を通じてテキストを入力し、キー状態を操作します。修飾キーとキーマップを完全に処理します。 - インテリジェントな視覚機能- プロセス内での
wlr-screencopy-unstable-v1キャプチャ、ONNX Runtime OCR(ortクレート)、OWL-ViT によるアイコン検出に対応します。範囲を指定したスクリーンショット、色のサンプリング(color_at)、セッション単位の空間フォーカス(set_spatial_focusはscreenshot/find_text_on_screen/find_iconの範囲を限定します)、およびzwlr_layer_shell_v1による実際のscreen_highlightオーバーレイ(半透明、クリック透過。layer-shell のないコンポジター/セッションでは-32010 ProviderUnavailableが返されます。詳しくは docs/TOOLS.md をご覧ください)。 - ウィンドウ管理- Hyprland の
hyprctlIPC ソケット(hyprctl -jJSON:clients、activewindow、dispatch、workspaces)、$SWAYSOCK上の sway 独自の IPC プロトコル、$WAYFIRE_SOCKET上の Wayfire のipc/ipc-rulesプラグイン、river 上の固定されたriverctlサブプロセスと wlroots の foreign-toplevel 複合機能(riverctlはフォーカス中のビューに対するcloseと相対的なmove/resizeの差分を処理し、toplevel プロトコルは列挙とウィンドウごとのfocus/close/min/max/fullscreenを提供します)、共通の wlroots フォールバック段階としてのwlr-toplevel(未知の wlroots セッションでは唯一の段階)、KDE 上のkdotool、GNOME 上の「Window Calls」Shell 拡張機能(インストールされている場合)、または X11 セッション上のwmctrlを通じて、ウィンドウの一覧表示、フォーカス、移動、サイズ変更、閉じる操作、詳細確認を行います。 - UI の検査- AT-SPI2(
atspiクレート)を通じてアクセシビリティツリーに完全にアクセスできます。UI ツリーのダンプ、フォーカス中の要素の取得、要素の検索、要素が現れるまでの同期に対応します。 - クリップボードとプラグイン-
wl-clipboard(Wayland)またはxclip/xsel(X11)を通じてclipboard_get/clipboard_set/clipboard_clearを実行します。書き込みには同意が必要です。また、宣言型のプラグインツールマクロに対応します。~/.ultranix-mcp/plugins/*.jsonのマニフェストに記述されたカタログツールのステップはplugin_list/plugin_run/plugin_reloadを通じて実行され、各ステップはセキュリティ保護されたディスパッチ経路を再度通ります。マニフェストのtoolセクション(v1.4.0)は、プラグインを生成されたinputSchemaを持つ第一級のtools/listエントリとして登録し、同じセキュリティ保護されたplugin_runパイプラインを通じてディスパッチします。 - 画面録画とライブキャプチャ-
screen_recordは、最大duration_msまでinterval_msごとにフレームをキャプチャし、新しく作成されたrec-<ulid>ディレクトリとmanifest.jsonに保存します(上限:600 フレーム、512 MiB)。screen_stream(v1.4.0)は、stream-<ulid>の下で連続したstart/status/latest/stopのローリングウィンドウキャプチャを実行します(最大1800フレーム、最大512 MiB、古いフレームから削除)。latestはscreenshotと同じ画像形式で最新のフレームを返します。since/wait_msを指定すると、ビジーポーリングの代わりにロングポーリングが行われ、ウォーターマークより新しいフレームが届くまで最大30秒待機します。 - エンタープライズセキュリティ- HTTP での
uxcp_*API キー認証、毎秒10リクエストのトークンバケット、入力のサニタイズ、コマンド/パスの許可リスト、AES-256-GCM による暗号化済み操作履歴、JSONL 監査ログに対応します。SECURITY.md をご覧ください。
アーキテクチャ
ultranix-mcp は tokio ランタイム上で動作する単一の Rust 2024 バイナリで、公式の Model Context Protocol Rust SDK である
rmcp を基盤とし、ネイティブの stdio および streamable-HTTP
(:3010)トランスポートを備えています。
デスクトップ自動化レイヤーは、依存性注入を介したプロバイダートレイト(ultrawin の src/traits.rs で実証されたパターン)として構成されています。
各機能は Option<Arc<dyn Trait>> であるため、コンポジター機能の不足、ポータルの不在、ヘッドレス CI でも致命的な失敗をせず、正常に機能を縮退できます。
モックプロバイダーも同じトレイトを実装しているため、Wayland セッションがなくてもツール一式をテストできます。
| プロバイダートレイト | 担当機能 | 主なバックエンド |
|---|---|---|
CaptureProvider | スクリーンショット、領域キャプチャー、画面情報 | wlr-screencopy-unstable-v1(プロセス内) |
InputProvider | ポインター、スクロール、キーボードイベント | zwlr_virtual_pointer_v1 + virtual-keyboard-unstable-v1 |
UIAutomationProvider | UI ツリー、フォーカス中の要素、要素検索 | atspi 経由の AT-SPI2 |
WindowProvider | ウィンドウ一覧/フォーカス/移動/閉じる | hyprctl IPC ソケット(ultrawin から新規追加) |
VisionProvider | OCR、アイコン検出 | ort(ONNX Runtime、CPU、OpenVINO、CUDA、ROCm EP) |
BrowserProvider | Web クエリー、DOM アクセス | 127.0.0.1:9222 の CDP ブリッジ |
OverlayProvider | screen_highlight オーバーレイ | zwlr_layer_shell_v1(Wayland 専用) |
ClipboardProvider | クリップボードの読み取り/書き込み | wl-copy/wl-paste(Wayland)、xclip/xsel(X11/XWayland) |
- wlroots ネイティブ - プロセス内 Wayland プロトコル(Hyprland、sway、Wayfire、river、および大半の未知の wlroots コンポジター。root 権限は不要)
grim/slurp(キャプチャー)+uinput/evdev(入力) - 非 wlroots セッション向けの許可リスト登録済みヘルパーバイナリとカーネルレベルの入力- XDG デスクトップポータル -
zbus経由のScreenshotおよびRemoteDesktop(ポータルの同意が必要な汎用フォールバック。wlr-screencopy も wlr 仮想入力プロトコルも実装していない KDE/GNOME Wayland で唯一の経路)
ウィンドウ管理では、利用可能な場合はコンポジターの IPC を使用します。Hyprland では hyprctl、sway では i3 形式の IPC($SWAYSOCK、v1.2.0 で搭載)、Wayfire では ipc/ipc-rules プラグイン($WAYFIRE_SOCKET、v1.4.0)、river では riverctl + zwlr_foreign_toplevel_manager_v1(riverctl がフォーカス中のビューに対する close と相対差分による move/resize を操作し、foreign-toplevel がウィンドウを列挙して、focus/close/min/max/fullscreen の対象として wlr-toplevel-N 形式で指定します)を使用します。また、wlr-toplevel は wlroots 共通のフォールバック段であり、未知の wlroots セッション(niri、labwc、...)では唯一のウィンドウ管理段です。KDE では kdotool(KWin スクリプティング。Wayland と X11 の両方に対応)、GNOME では D-Bus 経由の「Window Calls」Shell 拡張機能(v1.4.0、拡張機能が必要。org.gnome.Shell.Eval は意図的に使用しません)、その他の X11 セッションでは wmctrl を使用します。
X11 セッションでは、v1.1.0 で搭載された X11 ネイティブの段が代わりに選択されます。scrot によるキャプチャー、xdotool による入力(どちらもポータル/uinput より優先)、および Hyprland 以外の X11 でのウィンドウ管理に使う wmctrl です。
graph TB
subgraph "Client Layer"
AI[AI Assistant / Agent]
MCP[MCP Client]
end
subgraph "Transport Layer"
STDIO[STDIO<br/>never requires auth]
HTTP[Streamable HTTP :3010<br/>uxcp_* API key]
end
subgraph "Security Layer"
AUTH[API Key Auth]
RATE[Rate Limiter<br/>10 req/s token bucket]
SAN[Input Sanitization<br/>command + path whitelists]
end
subgraph "Core (rmcp + tokio)"
SERVER[ultranix-mcp server]
TOOLS[40 tools - 6 categories]
end
subgraph "Providers - Option<Arc<dyn Trait>>"
CAP[CaptureProvider]
INP[InputProvider]
UIA[UIAutomationProvider]
WIN[WindowProvider]
VIS[VisionProvider]
BRW[BrowserProvider]
CLIP[ClipboardProvider]
end
subgraph "Backends - priority order"
WLR[wlroots-native<br/>screencopy - virtual-pointer - virtual-keyboard]
UIN[uinput / evdev]
PORTAL[XDG Desktop Portal<br/>zbus]
HYPR[hyprctl IPC]
SWAY[sway IPC - SWAYSOCK]
WF[Wayfire IPC - WAYFIRE_SOCKET]
RIV[riverctl + foreign-toplevel - river composite]
WTOP[wlr-foreign-toplevel - shared wlroots rung]
GS[gnome-shell - Window Calls ext]
KDOT[kdotool - KDE]
ATSPI[AT-SPI2 bus]
ORT[ONNX Runtime - ort]
CDP[CDP 127.0.0.1:9222]
WLC[wl-clipboard - xclip/xsel]
end
AI --> MCP
MCP --> STDIO
MCP --> HTTP
STDIO --> SERVER
HTTP --> AUTH --> RATE --> SAN --> SERVER
SERVER --> TOOLS
TOOLS --> CAP
TOOLS --> INP
TOOLS --> UIA
TOOLS --> WIN
TOOLS --> VIS
TOOLS --> BRW
TOOLS --> CLIP
CAP --> WLR
INP --> WLR --> UIN --> PORTAL
WIN --> HYPR
WIN --> SWAY
WIN --> WF
WIN --> RIV
WIN --> GS
WIN --> KDOT
UIA --> ATSPI
VIS --> ORT
BRW --> CDP
CLIP --> WLC
**トークン効率。**ツール定義はコンテキストウィンドウを消費します。ultranix-mcp は --category= によるフィルタリングに対応しているため、必要なツールだけを公開できます。
# Serve only mouse + keyboard tools
# (`--stdio` is an alias for `--transport stdio`)
ultranix-mcp --transport stdio --category=mouse,keyboard
カテゴリ:mouse、keyboard、vision(キャプチャー/OCR/UI ツリー/記録)、automation(その他)、admin(ウィンドウ/履歴/メトリクス/プラグイン)、clipboard。
デフォルト:すべて。
ultranix-mcp を選ぶ理由
| 機能 | ultranix-mcp | hypruse | Peekaboo | xdotool ベースの MCP サーバー | DE 固有のアプローチ(GNOME/KDE) |
|---|---|---|---|---|---|
| Linux ネイティブの自動化(マウス/キーボード/ウィンドウ) | Wayland 優先 | (Hyprland のみ) | -(macOS のみ) | X11 のみ | 単一 DE |
| コンポジタープロトコルによる入力(root 不要) | wlr virtual-pointer + virtual-keyboard | wlr プロトコル | 該当なし | - | 一部対応(portal RemoteDesktop) |
| バックエンドのシームレスなフォールバック(ネイティブ -> uinput -> portal) | -(Hyprland のみ、uinput/portal の段階なし) | - | - | - | |
| コンポジター IPC によるウィンドウ管理 | hyprctl - sway IPC - Wayfire IPC - riverctl - GNOME Window Calls - kdotool | hyprctl | 一部対応(wmctrl) | 一部対応(KWin スクリプト/Shell) | |
| アクセシビリティツリー | AT-SPI2 | busctl 経由の AT-SPI(click_ui を含む) | macOS AX | - | 一部対応 |
| OCR + ビジョン/アイコン検出(ローカル ONNX) | 一部対応 | 一部対応 | - | - | |
| 監査ログ(JSONL) | - | - | - | - | |
| レート制限 | - | - | - | - | |
| 入力のサニタイズ/パスのホワイトリスト | - | - | - | - | |
| AES-256-GCM 暗号化されたアクション履歴 | - | - | - | - | |
| API キー認証 | - | - | - | - | |
| 単一の静的バイナリ | -(Python/uvx) | - | - | - | |
| オープンソース | (ISC) | さまざま | さまざま |
インストール
オプション 1:AUR(パッケージの提供済み、登録申請は保留中)
Arch 系の PKGBUILD(ultranix-mcp、ultranix-mcp-git、およびビルド済みバイナリ版の ultranix-mcp-bin)は
packaging/ にあります。AUR への登録申請は
ROADMAP.md で追跡しています。クレートの公開後は
cargo install ultranix-mcp によるインストールもサポートされます。ビルド時の ort によるネットワーク取得に関する注意事項は
docs/PACKAGING.md §2 をご覧ください。
オプション 1b:OCI イメージ(v1.4.0)
ghcr.io/jxoesneon/ultranix-mcp は .github/workflows/oci.yml により、すべての v* タグで公開されます。ヘッドレス環境/CI での使用を想定しています(実際のプロバイダーに接続するには、$XDG_RUNTIME_DIR、セッションバス、/dev/uinput をバインドマウントしてください。docs/HEADLESS.md をご覧ください)。
オプション 2:ソースからビルドする
前提条件:
- Wayland セッションを使用する Linux ― CachyOS(Arch)+ Hyprlandで動作確認済みです
- Rust 1.98 以降(2024 エディション。1.98.1 で動作確認済み)
- 実行時に使用するセッションツール:
hyprctl、grim、slurp - 任意:
xdg-desktop-portal-hyprland(ポータルのフォールバック経路)、AT-SPI2 アクセシビリティバス(UI の検査)、--remote-debugging-port=9222を指定した Chromium/Chrome(ブラウザツール)、wl-clipboard(wl-copy/wl-paste。Wayland 上のクリップボードツール)、xclip+xsel(X11/XWayland 上のクリップボードツール)、kdotool(KDE のウィンドウツール)、riverctl(river のフォーカス中のビューのジオメトリ。列挙とウィンドウごとの制御には、公開されている場合、wlroots foreign-toplevel を使用)、GNOME の「Window Calls」Shell 拡張機能(GNOME のウィンドウツール)
手順:
-
リポジトリをクローンします:
git clone https://github.com/jxoesneon/ultranix-mcp.git cd ultranix-mcp -
プロジェクトをビルドします:
cargo build --release -
サーバーを起動します:
# Stdio トランスポート(ローカル MCP クライアントに推奨) # (`--stdio` は `--transport stdio` の別名として使用できます) ./target/release/ultranix-mcp --transport stdio # :3010 で Streamable HTTP トランスポートを使用(ULTRANIX_MCP_API_KEY が必要) ./target/release/ultranix-mcp --transport http --bind 127.0.0.1:3010 # ツールカテゴリーを絞り込みます(コンテキストのオーバーヘッドを削減) ./target/release/ultranix-mcp --transport stdio --category=mouse,keyboard -
テストを実行します(モックプロバイダーを使用するため、Wayland セッションは不要です):
cargo test
**Cargo の機能(v1.2.0)。**各バックエンドグループは機能として提供され、すべてデフォルトで有効なため、cargo install の動作は変わりません:
| 機能 | デフォルト | 対象 |
|---|---|---|
wayland | 有効 | ネイティブ Wayland プロバイダー:wlr-screencopy キャプチャ、virtual-pointer/keyboard 入力、layer-shell オーバーレイ |
uinput | 有効 | /dev/uinput evdev フォールバック入力プロバイダー |
a11y | 有効 | AT-SPI2 UI 自動化+D-Bus ポータルプロバイダー |
pipewire | 有効 | ポータルキャプチャ経路内での PipeWire ストリーム消費(a11y が必要) |
vision | 有効 | ONNX ビジョンバックエンド(ort+モデル取得+トークナイザー+結果キャッシュ) |
browser | 有効 | CDP ブラウザブリッジ |
sentry | 有効 | 任意の Sentry エラー報告(ULTRANIX_MCP_SENTRY_DSN) |
vision-cuda | 無効 | CUDA 実行プロバイダー(ort/load-dynamic を含みます。ORT_DYLIB_PATH に対応する ONNX Runtime ビルドを指定してください) |
vision-openvino | 無効 | OpenVINO 実行プロバイダー(同じ load-dynamic の注意事項があります) |
vision-rocm | 無効 | ROCm 実行プロバイダー(同じ load-dynamic の注意事項があります) |
オプション 3:Nix flake(未検証)
リポジトリのルートには flake.nix が用意されています。nix build でパッケージを生成し、nix develop で Rust ツールチェーンとネイティブ依存関係(pipewire、libxkbcommon、bindgen 用の libclang、セッションヘルパーバイナリ)を備えた devShell に入り、nix run でサーバーを起動できます。**注記:**この flake はレビューに基づいて作成されており、こちらのツールチェーンでは評価されていません。未検証のものとして扱ってください。修正や確認を歓迎します。
MCP クライアントの設定
stdio 経由でバイナリを使用するよう、MCP クライアントを設定します。Claude
Desktop/Cursor 用の例(claude_desktop_config.json/mcp.json):
{
"mcpServers": {
"ultranix": {
"command": "ultranix-mcp",
"args": ["--transport=stdio"]
}
}
}
(--stdio は --transport stdio の省略形として使用できます。)
トークン効率を重視した構成 ― mouse、keyboard、vision カテゴリーのみを公開します:
{
"mcpServers": {
"ultranix": {
"command": "ultranix-mcp",
"args": ["--transport=stdio", "--category=mouse,keyboard,vision"]
}
}
}
設定
ultranix-mcp は、stdio 経由ですぐに使用できます(認証は不要です)。HTTP トランスポートおよび本番環境では、以下の変数をサポートしています。
| 変数 | 用途 | デフォルト | 必須(本番環境) |
|---|---|---|---|
ULTRANIX_MCP_API_KEY | HTTP クライアント認証用の API キー(uxcp_*。X-API-Key ヘッダーが標準で、Authorization: Bearer も使用できます)。**フェイルクローズ:**未設定の場合、HTTP トランスポートは認証リクエストを拒否します。開発用キーは生成されません。 | 未設定 — HTTP はフェイルクローズ | はい(HTTP) |
ULTRANIX_MCP_API_KEY_FILE | API キーを含むファイルのパス(インラインの環境変数より優先されます。プロセス環境からシークレットを除外できます)。 | なし | いいえ |
ULTRANIX_MCP_API_KEY_EXPIRES | キーの有効期限に関するオプションのメタデータ。ULTRANIX_MCP_API_KEY と位置順に対応する、RFC 3339 形式の日付をコンマ区切りで指定します(キー ファイルでは各行に expires= サフィックスを指定します)。期限切れのキーは読み込まれたままですが、認証に失敗し、固有の auth.expired_key 監査イベントが記録されます。 | なし — キーの有効期限なし | いいえ |
ULTRANIX_MCP_HISTORY_SECRET | history.json の AES-256-GCM 暗号化に使用する秘密鍵。 | インストールごとに ~/.ultranix-mcp/ 配下に生成(モード 0700)。開発用フォールバックでは警告が表示されます | いいえ |
ULTRANIX_MCP_DISABLE_AUTH | 緊急回避手段:HTTP 認証を無効にします(開発専用。stdio は常に認証不要です)。 | false | いいえ |
ULTRANIX_MCP_LOG_LEVEL | tracing の詳細度(error、warn、info、debug、trace)。 | info | いいえ |
ULTRANIX_MCP_BIND | ストリーミング可能な HTTP サーバーのバインドアドレス(--bind フラグと同等です)。 | 127.0.0.1:3010 | いいえ |
ULTRANIX_MCP_SENTRY_DSN | Sentry エラー追跡用の DSN(オプトイン)。DSN の解析に成功した場合にのみ sentry-tracing レイヤーが追加されます(未設定、空、形式不正の場合は無効になり、形式不正の場合は警告が表示されます)。 | 未設定 — 無効 | いいえ |
ULTRANIX_MCP_API_KEY_FILE のどちらも設定されていない場合、サーバーは | |||
~/.ultranix-mcp/api-keys/*.json をスキャンします。キーごとに 1 つのキー レコード ファイル(JSON | |||
レコード形式または行形式。各ファイルにモード 0600 が適用されます)。完全な優先順位ルールについては、 | |||
| docs/API_KEY_MANAGEMENT.md §3 | |||
| を参照してください。 |
**データディレクトリ。**ランタイム状態は ~/.ultranix-mcp/ 配下に保存されます。
| パス | 内容 |
|---|---|
~/.ultranix-mcp/logs/ | JSONL 監査ログ。すべてのツール呼び出しを記録(key_id、args_hash(生の引数は記録しません)、所要時間、結果)。prev_hash で連鎖され、30 日ごとにローテーションされます |
~/.ultranix-mcp/history.json | アクション履歴。保存時に AES-256-GCM で暗号化されます |
セッションの要件とセキュリティ
Wayland の自動化では、macOS 形式の権限プロンプトの代わりにコンポジターの機能を使用します。ultranix-mcp は、動作するバックエンドのうち最小権限のものを選択します。
- wlroots ネイティブ(Hyprland)-
zwlr_virtual_pointer_v1、virtual-keyboard-unstable-v1、wlr-screencopy-unstable-v1が通常のクライアントに公開されます。root 不要、udev ルール不要、同意ダイアログ不要です。 - uinput/evdev- パッケージに含まれる udev ルール(
GROUP="ultranix-input"。サービスユーザーのみを所属させる専用グループです。すべての evdev ノードへのキーロガー級の読み取りアクセスを許可する広範なinputグループは使用しないでください)を通じて、/dev/uinputへの書き込みアクセスが必要です。セットアップは任意で、packaging/README-uinput.md に説明があります。 - XDG Desktop Portal-
zbus経由でScreenshot/RemoteDesktopを使用します。ポータルはxdg-desktop-portal-hyprlandを通じて、アプリごとの同意ダイアログを仲介します。
**セキュリティに関する注意:**ultranix-mcp には、インジェクション攻撃に対する保護機能が組み込まれています。引数を制限し、絶対パスを固定したコマンドの許可リスト(
dispatch exec/exec-onceを除くgrim、slurp、scrot、hyprctl。X11 セッションのみでxdotool/wmctrlを使用)、パスの許可リスト($XDG_RUNTIME_DIR、/tmp、~/.ultranix-mcp/**)、厳格な入力検証、レート制限、HTTP でのフェイルクローズ型 API キー認証、破壊的なツールに対する同意ゲート(-32015 ConsentRequired->consent_tokenを指定して再試行。--allow-destructiveで回避)、暗号化されたアクション履歴です。SECURITY.md と脅威モデルの全文をお読みください。
ツールリファレンス
概要のミラーです。docs/TOOLS.md が正式なツールカタログです(完全なスキーマ、ツールごとのエラー、同意に関する仕様を掲載)。
マウス(--category=mouse)
mouse_click、mouse_double_click、mouse_move、mouse_get_position、
mouse_scroll、mouse_drag、mouse_button_control
キーボード(--category=keyboard)
type_text、key_control
ビジョン(--category=vision)
screenshot、screen_info、screen_highlight、color_at、
set_spatial_focus、get_ui_tree、get_focused_element、find_element、
find_text_on_screen、find_icon、wait_for_ui_element、invoke_element、
screen_record、screen_stream
自動化(--category=automation)
sleep、mouse_move_path、system_command、web_query
管理(--category=admin)
window_control、get_windows、get_active_window、metrics、
get_action_history、replay_action、clear_action_history、
plugin_list、plugin_run、plugin_reload
クリップボード(--category=clipboard)
clipboard_get、clipboard_set、clipboard_clear
ロードマップ
提供計画については ROADMAP.md をご覧ください。フェーズ 0〜5(足場の構築 -> Hyprland I/O -> AT-SPI2 -> ビジョン/CDP -> エンタープライズ -> 移植性/パッケージング)は v1.0.0 の時点で完了しています。v1.1.0 では layer-shell の screen_highlight オーバーレイ、X11 ネイティブプロバイダー、PipeWire ポータルキャプチャー、オプトインの Sentry、OCR 結果キャッシュ、Prometheus メトリクス 4 種類が追加されました。v1.2.0 ではクリップボードツール、プラグインのツールマクロ、上限付きの screen_record、sway ウィンドウプロバイダーを備えた sway/Wayfire/river/KDE/GNOME セッション検出、バックエンドごとの cargo 機能、フレーム形式の v2 アクション履歴形式が追加されました。v1.3.0 ではランタイムポリシーレイヤー(TOML ロール、キーごとのスコープ設定、--readonly およびツールの許可/拒否フラグ)、バックエンドごとの呼び出しメトリクス、任意の HMAC 署名付き監査レコードが追加されました。v1.4.0 ではウィンドウプロバイダーの対応範囲を補完し(Wayfire IPC、river riverctl、GNOME Window Calls)、ローリングキャプチャーによるライブ screen_stream と、プラグインで公開される動的ツールを提供しました。また、OCI イメージと ultranix-mcp-bin の配布アーティファクトも追加されました。リリースノートについては CHANGELOG.md をご覧ください。
ドキュメント
設計およびガバナンスに関するドキュメントは docs/ にあります。これには docs/adr/ のアーキテクチャ決定記録も含まれます。開発ワークフローについては、CONTRIBUTING.md からご覧ください。
コントリビューション
コントリビューションを歓迎します!モックプロバイダーのテストパターン、ADR プロセス、プルリクエストの規約についてはCONTRIBUTING.mdを、コミュニティで期待される行動についてはCODE_OF_CONDUCT.mdをお読みください。
ライセンス
このプロジェクトはISC Licenseのライセンスのもとで公開されています。
© 2026 ultranix-mcp authors.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。