mcpField
T
Tailscale Compute

Tailscale Compute

ローカル
github.com/dylantirandaz開発ツール111 週間前に更新

Tailscale Compute について

Tailscale Compute は、ユーザーの tailnet 内にあるリモートノードでビルド、テスト、ベンチマークを実行するコーディングエージェント向け MCP サーバーです。rsync でローカルのワークスペースを同期し、SSH 経由でコマンドを実行します。

主な機能

  1. 01SSH 経由のリモートコマンド実行
  2. 02rsync によるワークスペース同期
  3. 03ハードウェアと稼働状況の確認
  4. 04PyTorch CUDA の実行準備確認
  5. 05永続ジョブと成果物の管理

活用シーン

  1. 01別の計算ノードでテストを実行
  2. 02実行前に GPU とメモリ要件を確認
  3. 03長時間の学習ジョブを追跡
  4. 04検証済みジョブ成果物を取得

MCP 対応

ローカルの stdio MCP サーバーが、状態確認、ワークスペース管理、リモートコマンド実行、永続ジョブ制御のツールを公開します。リモートノードでは MCP サービスは動作しません。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"dylantirandaz-tailscale-compute": {
"command": "npx",
"args": [
"-y",
"@dylantirandaz/tailscale-compute-mcp"
],
"env": {
"TAILSCALE_COMPUTE_HOST": "<TAILSCALE_COMPUTE_HOST>",
"TAILSCALE_COMPUTE_LOCAL_ROOT": "<TAILSCALE_COMPUTE_LOCAL_ROOT>",
"TAILSCALE_COMPUTE_REMOTE_ROOT": "<TAILSCALE_COMPUTE_REMOTE_ROOT>",
"TAILSCALE_COMPUTE_REMOTE_SHELL": "<TAILSCALE_COMPUTE_REMOTE_SHELL>",
"TAILSCALE_COMPUTE_CONNECT_TIMEOUT_SECONDS": "<TAILSCALE_COMPUTE_CONNECT_TIMEOUT_SECONDS>",
"TAILSCALE_COMPUTE_AUDIT_LOG": "<TAILSCALE_COMPUTE_AUDIT_LOG>"
}
}
}
}
起動コマンドnpx -y @dylantirandaz/tailscale-compute-mcp
設定が必要な環境変数
TAILSCALE_COMPUTE_HOSTSSH user and direct Tailscale IP address or full MagicDNS name.
TAILSCALE_COMPUTE_LOCAL_ROOTAbsolute local project path. The default is the MCP process directory.
TAILSCALE_COMPUTE_REMOTE_ROOTManaged workspace root on the remote node. The default is .cache/tailscale-compute-mcp.
TAILSCALE_COMPUTE_REMOTE_SHELLRemote shell: auto, /bin/sh, /bin/bash, or /bin/zsh.
TAILSCALE_COMPUTE_CONNECT_TIMEOUT_SECONDSSSH connection timeout from 1 through 60 seconds.
TAILSCALE_COMPUTE_AUDIT_LOGLocal audit log path. The default is ~/.config/tailscale-compute-mcp/compute-audit.log.

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

パッケージ
npm@dylantirandaz/tailscale-compute-mcp0.1.0-beta.3

ツール

2

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

パラメーター型必須説明
workspacePathstringいいえローカルプロジェクトパスの絶対パス。MCP ホストがプロジェクトディレクトリでこのサーバーを起動する場合は省略してください。

詳細

Tailscale Compute MCP

MCP コーディングエージェントから、自分のリモートコンピュートノードでビルド、テスト、ベンチマークを実行できます。

コーディングエージェントはローカルコンピューター上のファイルを編集します。この MCP サーバーは、エージェントが compute_run を呼び出した場合に限り、rsync でプロジェクトをコピーし、SSH 経由でコマンドを実行します。

これは独立したプロジェクトです。Tailscale の公式製品ではなく、Tailscale Inc. による推奨も受けていません。Tailscale は Tailscale Inc. の商標です。

リリース状況

このパッケージはベータ版です。

  • 一連の処理は、Mac ノートパソコンと Apple M4 Mac mini で実行済みです。
  • このサーバーには、Linux のプローブと NVIDIA のインベントリサポートが含まれています。
  • Linux の解析は自動テストでカバーされています。
  • このリリースは、実機の NVIDIA DGX Spark では実行されていません。Linux または NVIDIA の結果を、現時点で DGX Spark の検証済み結果として扱わないでください。

仕組み

MCP coding agent
    |
    | local stdio
    v
Tailscale Compute MCP
    |
    | rsync and SSH through the user's tailnet
    v
Mac or Linux compute node

このパッケージはローカルコンピューター上で実行されます。リモートノードでは MCP サービスは実行されません。プロジェクトの作成者が、コード、認証情報、コマンド出力、Tailscale のトラフィックを受け取ることはありません。

セキュリティに関する警告

compute_run は、リモート SSH ユーザーの権限で任意の非対話型コマンドを実行できます。リモートコード実行として扱ってください。

  • リモートノードでは、専用の非 root アカウントを使用してください。
  • compute_status はリモートユーザー ID を報告し、SSH ユーザーが root の場合に警告します。侵害されたビルドがノード全体を制御できないように、非 root ユーザーでコンピュートを実行してください。
  • コマンドの開始、成果物の取得、正常に完了したワークスペースの削除は、ローカルの監査ログに記録されます。ログに環境変数の値、標準入力、認証情報が含まれることはありません。
  • コマンド、取得、キャンセル、削除の各ツールを自動承認しないでください。
  • MCP の設定にパスワード、SSH 秘密鍵、Tailscale 認証キーを記載しないでください。
  • SSH エージェントまたは Tailscale SSH を使用してください。
  • Tailscale のポリシールールでアクセスを制限してください。
  • 使用前に SECURITY.md を確認してください。

要件

ローカルコンピューター
  • Node.js 20 以降。
  • リモートノードと同じ tailnet に接続された Tailscale。
  • OpenSSH クライアント。
  • --include と --exclude をサポートする rsync。
  • ローカル stdio サーバーをサポートする MCP ホスト。

このベータ版では、ローカルシステムとして macOS と Linux がサポートされています。

リモートノード
  • Darwin または Linux。
  • Tailscale に接続されていること。
  • SSH サーバー。
  • PATH 上で利用可能な rsync。
  • 確認済みの SSH ホストキー。
  • プロジェクトに必要なツールチェーン。

リモートのワークロードで Node.js を使用しない限り、リモートノードに MCP パッケージ用の Node.js は必要ありません。

Mac mini のセットアップ

  1. 両方の Mac に Tailscale をインストールして接続します。
  2. Mac mini で、システム設定を開き、一般、共有の順に選択して、リモートログインをオンにします。
  3. ローカルの公開鍵をリモートアカウントに追加します。
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
  1. ホストキーと非対話型アクセスを確認します。
ssh [email protected] /usr/bin/true
  1. リモートのツールを確認します。
ssh [email protected] '/bin/zsh -lc "rsync --version"'

スリープ中または電源が切れている Mac は、Tailscale 接続を受け付けない場合があります。必要に応じて macOS のネットワーク経由のスリープ解除を設定してください。この MCP サーバーはウェイクパケットを送信しません。

Linux ノードのセットアップ

Linux ディストリビューション向けの Tailscale の公式手順に従って、Tailscale をインストールして接続します。その後、SSH サーバーと rsync をインストールします。

Ubuntu または Debian の場合:

sudo apt-get update
sudo apt-get install --yes openssh-server rsync
sudo systemctl enable --now ssh

標準的な SSH キーを使用します。

ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
ssh [email protected] /usr/bin/true

対応する Linux ノードでは、SSH キーを配布する代わりに Tailscale SSH を使用できます。Tailscale ポリシーで、ネットワーク接続と SSH 接続の両方を許可する必要があります。

MCP ホストへのインストール

パッケージのバージョンを固定してください。エージェントによるコマンド実行には、バージョンを固定していないパッケージを使用しないでください。

Oh My Pi (OMP)

デフォルトの OMP プロファイル用に、安全なセットアップコマンドを実行します。

npx -y @dylantirandaz/[email protected] \
  setup omp \
  --host [email protected]

このコマンドは、MCP 設定ファイルのパスとフリートスキルのパスを表示します。ファイルを書き込む前に、実際の SSH 接続チェックを実行します。その後、tailscale-compute を ~/.omp/agent/mcp.json に追加し、管理対象の tailscale-compute-fleet スキルを ~/.omp/agent/skills/ にインストールします。ほかのサーバーを保持し、このパッケージのバージョンを固定し、ファイルをアトミックに置き換えます。

接続チェックに失敗した場合、このコマンドはファイルを書き込みません。不正な JSON、シンボリックリンク、設定が異なる同名のサーバー、同名の管理対象外スキルがある場合は処理を拒否します。

名前付きプロファイルの場合は、サーバーエントリを ~/.omp/profiles/<name>/agent/mcp.json に手動でマージし、そのプロファイルの skills/tailscale-compute-fleet/ ディレクトリにスキルをインストールします。既存のサーバーエントリはすべて保持してください。

{
  "mcpServers": {
    "tailscale-compute": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@dylantirandaz/[email protected]"
      ],
      "env": {
        "TAILSCALE_COMPUTE_HOST": "[email protected]"
      }
    }
  }
}

例のホストを、SSH ユーザー名と、コンピュートノードの Tailscale IP アドレスまたは完全な MagicDNS 名に置き換えてください。

セットアップ後、新しい OMP セッションを開始します。OMP はサーバーを読み込み、フリートスキルをエージェントに自動で提示します。既存のセッションでは、/mcp reload でサーバーを読み込めますが、新しいスキルは次のセッションで使用可能になります。再読み込みまたは再起動後にサーバーをテストします。

/mcp test tailscale-compute

Claude Code、Cursor、Codex、または OpenCode 用の、バージョンを固定した設定を出力します。

npx -y @dylantirandaz/[email protected] \
  setup print --client <claude|cursor|codex|opencode> \
  --host [email protected]

Claude の出力はユーザースコープのコマンドです。Cursor と OpenCode の出力は JSON です。Codex の出力は ~/.codex/config.toml 用の TOML です。無関係なエントリを置き換えないよう、JSON または TOML の出力を既存のクライアント設定にマージしてください。

VS Code

.vscode/mcp.json を作成します。

{
  "servers": {
    "tailscale-compute": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@dylantirandaz/[email protected]"
      ],
      "env": {
        "TAILSCALE_COMPUTE_HOST": "[email protected]"
      }
    }
  }
}
Cursor

.cursor/mcp.json を作成します。

{
  "mcpServers": {
    "tailscale-compute": {
      "command": "npx",
      "args": [
        "-y",
        "@dylantirandaz/[email protected]"
      ],
      "env": {
        "TAILSCALE_COMPUTE_HOST": "[email protected]"
      }
    }
  }
}
Claude Code
claude mcp add --scope user \
  --env [email protected] \
  --transport stdio tailscale-compute \
  -- npx -y @dylantirandaz/[email protected]

接続を確認する

まず、MCP ホストの外部でパッケージを実行します。

[email protected] \
npx -y @dylantirandaz/[email protected] --check

チェックに成功すると、kind: "ready" が返されます。また、次の情報も報告されます。

  • オペレーティングシステム。
  • CPU アーキテクチャとモデル。
  • 論理プロセッサ数。
  • メモリ。
  • 選択されたリモートシェル。
  • rsync のバージョン。
  • nvidia-smi が利用可能な場合は NVIDIA GPU の一覧。
  • 稼働時間、ロードアベレージ、利用可能なメモリ、ストレージ容量、アクティブな永続ジョブ数、NVIDIA のメモリ使用量と使用率。

MCP ツール

compute_status

SSH アクセスを確認し、リモートプラットフォーム、ハードウェア、現在の稼働状態を報告します。

搭載 GPU メモリは hardware.acceleratorInventory に保持されます。現在の GPU メモリ使用量、利用可能なメモリ、使用率は health.acceleratorUsage に保持されます。

compute_doctor

選択した 1 つの Python プログラムを、必須の論理 CUDA デバイス 1 台で実行する、明示的な pytorch プロファイルを実行します。

{
  "profile": "pytorch",
  "pythonProgram": "/opt/project/.venv/bin/python",
  "requiredDevice": "cuda:0",
  "minimumAvailableMemoryBytes": 24000000000
}

選択した Python プログラムには、CUDA 対応の PyTorch が含まれている必要があります。リモートノードでは nvidia-smi も利用可能である必要があります。このプロファイルは、NVIDIA ドライバー、PyTorch CUDA ランタイム、任意の nvcc コンパイラー、cuDNN、コンピュートケイパビリティ、利用可能なメモリ、dtype、関連するバックエンドフラグを報告します。既知の torch.float32 線形演算を実行し、その結果を検証します。また、モデル、入力、中間値、出力が必須デバイス上にとどまることも検証します。必須条件が欠けている場合は check_failed を返します。このプロファイルは別の GPU を選択したり、CPU にフォールバックしたりしません。

doctor が検証するのは、小規模な演算のみです。アプリケーションが対応していると主張する前に、実際のワークロードを実行し、その出力を確認してください。

compute_workspace_status

1 つのローカルワークスペースについて、管理対象のリモートパス、ディスク使用量、最後に成功した同期、最後の実行リクエスト、アクティブな永続ジョブ ID を報告します。

compute_workspace_delete

1 つのローカルワークスペースに対応する、管理対象のリモートディレクトリのみを削除します。永続ジョブがアクティブな間は削除を拒否します。繰り返し削除しても成功し、existed: false を報告します。

compute_run

ローカルのワークスペースをコピーし、非対話型のリモートコマンドを 1 つ実行します。

例:

{
  "program": "npm",
  "arguments": ["test"],
  "syncMode": "incremental",
  "timeoutSeconds": 900
}

シェルの構文を使う場合は、サポートされているリモートシェルを明示的に呼び出してください。

{
  "program": "/bin/bash",
  "arguments": ["-lc", "npm ci && npm test"],
  "syncMode": "clean",
  "timeoutSeconds": 1800
}

compute_run は、リモートの終了コード、標準出力、標準エラー出力、同期時間、コマンド実行時間を返します。MCP 接続を保護するため、出力には上限があります。出力が大きすぎる場合、結果には先頭と末尾が含まれ、省略されたバイト数が報告されます。

ハードウェア要件

compute_run と compute_job_start は、オプションの requirements オブジェクトを受け付けます。サーバーはワークロードの開始前に、これらの要件をリモートのハードウェアと照合します。要件を満たさない場合は kind: "requirements_not_met" を返し、同期もコマンドの開始も行いません。

{
  "program": "python",
  "arguments": ["train.py"],
  "requirements": {
    "platform": "linux",
    "architecture": "x86_64",
    "minimumMemoryBytes": 34359738368,
    "nvidia": {
      "minimumDeviceCount": 1,
      "minimumMemoryBytesPerDevice": 24000000000
    }
  }
}

サーバーはデバイスを選択せず、CPU にフォールバックすることもありません。ワークロード側で必要なアクセラレーターを選択し、検証する必要があります。

永続ジョブ

compute_job_start はワークスペースを同期し、デタッチされたコマンドを開始します。リモートのランチャーが起動すると、ジョブ ID を返します。MCP クライアントが切断された後も、コマンドは実行を継続します。

{
  "program": "python",
  "arguments": ["train.py"],
  "syncMode": "incremental",
  "timeoutSeconds": 43200,
  "idempotencyKey": "training-run-2026-08-14",
  "label": "baseline",
  "artifactPaths": ["checkpoints/final.pt", "metrics/results.json"]
}
  • compute_job_status は starting、running、completed、failed、cancelled、lost のいずれかを返します。
  • compute_job_logs は、正確なバイトオフセットから stdout または stderr を読み取ります。次の呼び出しでは nextOffsetBytes を使用してください。ジョブが終了状態に達し、返されたオフセットがファイルサイズに達すると、endOfStream が true になります。
  • compute_job_cancel はリモートのプロセスグループを停止します。終了状態のジョブでは、既存の終了状態が返されます。
  • compute_job_list は、ジョブ ID、状態、ラベル、プログラム、ワークスペースパス、時刻、終了結果を含む、フィルターおよびページ分割された一覧を返します。
  • compute_job_delete は終了状態のジョブのみを削除します。実行中のジョブや、安全でないリモートジョブディレクトリの削除は拒否されます。

各終了ジョブ状態には、出力のバイト数と SHA-256 ダイジェストが含まれます。

冪等性キーは、ターゲットとワークスペースの組み合わせに対してスコープされます。同じリクエストを再試行すると、既存のジョブが返されます。異なるリクエストで再利用すると、idempotency_conflict が返されます。

コマンドの終了後、宣言されたアーティファクトのパスが不変のジョブスナップショットにコピーされます。終了状態には、各通常ファイルのパス、サイズ、SHA-256 ダイジェストを記録した更新済みのレシートが含まれます。ワークスペースの同期によって、これらのスナップショットが削除されることはありません。

終了結果では、正常終了、シグナル、タイムアウト、キャンセル、ジョブの消失、メモリ不足による終了を分類します。サーバーがメモリ不足を報告するのは、プロセスの終了状況と Linux cgroup のメモリーイベントの証拠が一致した場合のみです。

TAILSCALE_COMPUTE_MAX_ACTIVE_JOBS を設定すると、同じリモートルートを使用するすべてのワークスペースおよび MCP サーバープロセスに対して、ノード全体で 1 つの上限を適用できます。ジョブの受け入れには、リモートでのアトミックな予約を使用します。ノードが上限に達している場合は、設定された上限、アクティブなジョブ ID、受け入れ処理中の開始要求数を含む node_busy が返されます。拒否されたジョブがキューに入れられたり、開始されたりすることはありません。

compute_fetch

管理対象のリモートワークスペースから、選択したファイルまたはディレクトリを、ローカルワークスペース内のローカル宛先に取得します。

{
  "paths": ["benchmark/results.json"],
  "localDestination": ".tailscale-compute-results/latest",
  "overwrite": false
}

不変の終了済みジョブスナップショットから、宣言されたすべてのアーティファクトを取得するには、ジョブ ID を指定し、paths を省略します。

{
  "jobId": "12345678-1234-4234-8234-123456789abc",
  "localDestination": ".tailscale-compute-results/baseline",
  "overwrite": false
}

ジョブ ID とともに paths を設定すると、宣言されたアーティファクトのうち、選択したものだけを取得できます。このツールは、リモートのシンボリックリンク、宛先からの逸脱、宣言されていないジョブアーティファクト、および overwrite が true でない場合の既存の宛先を拒否します。取得した各通常ファイルのサイズと SHA-256 ダイジェストを報告します。ジョブの取得では、ダウンロードした各ファイルを不変のジョブレシートと照合する検証も行われます。

実行レシート

各実行と永続ジョブには、構造化されたレシートがあります。レシートには、実行 ID、サーバーバージョン、ローカルの Git リビジョン、コマンド引数、環境変数名、同期モード、報告されたハードウェア、所要時間、結果、出力ダイジェスト、取得した成果物が記録されます。永続レシートには、ラベル、網羅的な終了結果、不変の成果物マニフェストも含めることができます。環境変数の値、標準入力、冪等性キーは記録されません。永続ジョブではレシートがリモートジョブディレクトリに保存され、ジョブが終了状態に達したときに更新されます。

同期モード

  • incremental:管理対象のリモートワークスペースを更新し、ローカルに存在しなくなったリモートファイルを削除します。
  • clean:ハッシュ化された管理対象ワークスペースのみを削除して作り直し、プロジェクトをコピーします。
  • none:ローカルファイルをコピーせずに、前回のリモートスナップショットを再利用します。

各ローカルワークスペースは、次の場所の下にある安定したリモートディレクトリに対応します。

.cache/tailscale-compute-mcp

サーバーは、同じワークスペースのコマンドを順番に実行します。異なるワークスペースは同時に実行できます。

compute_workspace_status は、関連するイベントが発生するまで、lastSyncAt: { "kind": "never" } または lastRunAt: { "kind": "never" } を報告します。

除外ファイル

同期では、ワークスペースのルートにある .gitignore と .tailscale-compute-ignore を読み込みます。空行、# で始まるコメント、! で始まる否定パターン、標準的な rsync パターンに対応しています。ネストされた ignore ファイルは読み込みません。各 ignore ファイルのサイズは最大 64 KiB で、サーバーは両方のファイルから合計最大 5,000 個のルールを読み込みます。これらの上限を超えるファイルや、それ以降のルールは無視されます。

.git/
.env
.env.*
.npmrc
.pypirc
.ssh/
.aws/
.gnupg/
.git-credentials
.netrc
*_history
.curlrc
.wgetrc
*.pem
*.key
*.p12
*.pfx
*.secret
secrets/
node_modules/
.venv/
venv/
target/
__pycache__/
.next/cache/

上記の固定除外が優先されます。ignore ファイルの否定パターンを使って、これらのファイルを対象に含めることはできません。

プロジェクト固有のシークレットや大きな出力ファイルは .tailscale-compute-ignore に追加してください。

無視されたファイルはコピーされません。必要なファイルが無視される場合は、リモートノード上に作成するか、明示的な compute_run.environment エントリを通じて値を指定してください。ツールの引数は MCP ホストとモデルから見えることに注意してください。

設定

変数必須デフォルト用途
TAILSCALE_COMPUTE_HOSTはいなしSSH ユーザーと、直接指定する Tailscale IP アドレスまたは完全な MagicDNS 名。
TAILSCALE_COMPUTE_LOCAL_ROOTいいえMCP プロセスのディレクトリローカルプロジェクトの絶対パス。
TAILSCALE_COMPUTE_REMOTE_ROOTいいえ.cache/tailscale-compute-mcp管理対象のリモートワークスペースのルート。
TAILSCALE_COMPUTE_REMOTE_SHELLいいえautoauto、/bin/sh、/bin/bash、または /bin/zsh。
TAILSCALE_COMPUTE_CONNECT_TIMEOUT_SECONDSいいえ101〜60 秒の SSH 接続タイムアウト。
TAILSCALE_COMPUTE_MAX_ACTIVE_JOBSいいえ制限なしノード全体の永続ジョブ数の上限。1〜1024 の範囲で指定します。
TAILSCALE_COMPUTE_AUDIT_LOGいいえ~/.config/tailscale-compute-mcp/compute-audit.logcompute_run の記録に使用するローカル監査ログのパス。

シェルの自動選択では、Darwin 上で /bin/zsh を使用します。Linux 上では、利用可能であれば /bin/bash を使用し、それ以外の場合は /bin/sh を使用します。

複数のコンピュートノード

OMP では、各ノードでセットアップを一度実行し、それぞれのサーバーに一意の名前を付けます。

npx -y @dylantirandaz/[email protected] \
  setup omp \
  --host [email protected] \
  --name compute-mac-mini-1

npx -y @dylantirandaz/[email protected] \
  setup omp \
  --host [email protected] \
  --name compute-mac-mini-2

各コマンドは対象ノードを確認し、ほかの名前付きサーバーを保持します。最初のコマンドでフリートスキルをインストールします。以降のコマンドでは、その管理対象スキルを再利用するか更新します。最後のコマンドの後に、新しい OMP セッションを開始してください。

ほかの MCP クライアントでは、名前とホストを変えてパッケージを複数回登録します。MCP サーバーインスタンスごとにターゲットを 1 つにしてください。

{
  "mcpServers": {
    "compute-mac-mini": {
      "command": "npx",
      "args": ["-y", "@dylantirandaz/[email protected]"],
      "env": {
        "TAILSCALE_COMPUTE_HOST": "[email protected]"
      }
    },
    "compute-linux": {
      "command": "npx",
      "args": ["-y", "@dylantirandaz/[email protected]"],
      "env": {
        "TAILSCALE_COMPUTE_HOST": "[email protected]",
        "TAILSCALE_COMPUTE_REMOTE_SHELL": "/bin/bash"
      }
    }
  }
}
エージェントが制御するワークフロー

独立した作業では、エージェントに名前付きの各 MCP サーバーで compute_status と compute_job_list を照会させます。エージェントは、プラットフォーム、 アーキテクチャ、ハードウェア要件、アクティブなジョブ数、負荷に基づいて、 利用可能なノードを選択できます。再試行では、同じサーバー、冪等性キー、 リクエストデータを使用する必要があります。成果物は選択したノードが所有し、 受領ハッシュを検証しながら compute_fetch を通じて移動させる必要があります。

このパッケージには、フリートスケジューラーや隠れたキューは含まれていません。また、 通常のコマンドを分散プログラムに変えるものでもありません。複数のノードを使えるのは、 プロジェクトで MLX distributed、Ray、MPI などの分散ランタイムと起動コマンドを 宣言している場合に限られます。起動前に、同じワークスペースのリビジョンと ランタイムのバージョンを各ノードに同期してください。キャンセルやクリーンアップの際は、 すべてのノードの役割とジョブ ID を記録し、各ワーカーの状態を検証してください。

Thunderbolt ケーブルは、Mac 間のデータプレーンネットワークとして利用できる可能性があります。 ただし、CPU、GPU、ユニファイドメモリを統合するものではありません。MCP の制御接続には Tailscale を使用し、Thunderbolt アドレスは宣言されたランタイム設定を通じてのみ使用してください。

MLX は、SSH 接続されたホスト向けの mlx.launch、TCP または Thunderbolt リング バックエンド、および対応する Thunderbolt RDMA システム向けの JACCL を提供します。 ホストファイル、トポロジ、オペレーティングシステム、RDMA の要件については、 MLX の公式分散ガイド を参照してください。分散実行の検証では、ワールドサイズ、ランクの配置、バックエンド、 デバイスの配置、およびすべてのランクに依存する結果を確認する必要があります。

NVIDIA ワークロード

compute_status は nvidia-smi を通じて NVIDIA デバイスを報告します。このインベントリは、 ワークロードが GPU を使用したことを証明するものではありません。compute_doctor は、 選択したデバイス上で小規模な PyTorch 操作を実行し、正確な CUDA 配置を確認しますが、 アプリケーションのワークロードを証明するものではありません。

GPU ワークロードでは、意図したデバイスを選択し、モデル、入力、計算、出力の配置を検証して、 意味のある結果を確認する必要があります。サーバーは、リモートコマンドの代わりに CPU へ フォールバックすることはありません。

開発

npm ci
npm run check

実際のリモートノードに対して接続チェックを実行します:

[email protected] node dist/main.js --check

リリース前にパッケージの内容をテストします:

npm pack --dry-run

ライセンス

MIT です。LICENSE を参照してください。

コメント

MCP は初めてですか?

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

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