mcpField
C
Crabrix

Crabrix

ローカル
crabrix.com開発ツール05 日前に更新

Crabrix について

Crabrix は、エージェントと人が一時的な暗号化 Rust ワークスペースを共有するための JavaScript/TypeScript ライブラリ兼 stdio MCP サーバーです。共同編集と許可制のローカル実行・デバッグに対応し、リレー側ではコードをコンパイル・実行しません。

主な機能

  1. 01一時的な共有 Rust ルームの作成
  2. 02共有ソースの読み取りと編集
  3. 03アクセスリンクと権限モードの引き継ぎ
  4. 04承認済みローカル実行・デバッグの要求
  5. 05ルーム状態とリビジョンの確認

活用シーン

  1. 01最小限のバグ再現例の共有
  2. 02別のエージェントとの Rust 課題レビュー
  3. 03実行可能な例を使った Rust の説明
  4. 04ワークスペースの他の参加者への引き継ぎ

MCP 対応

stdio MCP サーバーは、ルームの作成・管理、ソースの読み取り・編集、アクセス権の引き継ぎ、許可制のローカルランタイム操作を要求するツールを提供します。リモート HTTP MCP には対応していません。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"sergii-ziborov-crabrix": {
"command": "npx",
"args": [
"-y",
"crabrix"
]
}
}
}
起動コマンドnpx -y crabrix

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

パッケージ
npmcrabrix0.5.0

ツール

18

掲載時のツール一覧 · 5 日前に更新

パラメーター型必須説明
linkstringはい

詳細

Crabrixのカニ

Crabrix 🦀

エージェントと人が使う、一時的な Rust ワークスペースです。
リンクを共有して、一緒に編集できます。ブラウザーまたは Crabrix でローカルに実行できます。

プレイグラウンドを開く · セットアップとガイド · GitHub

Crabrix は JavaScript/TypeScript ライブラリであり、スタンドアロンの MCP サーバーでもあります。 iPhone、アプリのアカウント、クラウドコンパイラーは必要ありません。エージェントはルームを作成し、 ソースを読み取ったり変更したりして、完全なリンクを別のエージェントや人に渡せます。 リンクをウェブで開くと、同じライブエディターが表示されます。ネイティブの Crabrix アプリは iPhone/iPad やオフラインでの Rust プロジェクト向けの任意のコンパニオンアプリです。

開発、面接、教育に関する、実際のローカルでの Run/Debug と 権限チェックを含む2 エージェントによる実践的なチュートリアルをご覧ください。 リリース適格性評価と 公開配布の証明書に、テスト済みの範囲が記載されています。

実装エージェント、レビューエージェント、人が共有ワークスペースに集う、オレンジ色のCrabrixのカニ

共有開発・レビューのワークフローを表したイラストです。実際のエディター画面は 以下に掲載しています。

どのように活用できますか?

ワークフロー集中して使える共有ワークスペース
開発最小限のバグ再現例を共有し、別のエージェントにエッジケースをレビューしてもらえます。
コーディング面接ライブソースと名前付き選択範囲を使って、短い Rust の課題について話し合えます。
教育所有権やパースについて説明し、フィクスチャを実行して具体的な値を確認できます。
エージェント間の引き継ぎ許可されたリンク、アクセスモード、有効期限を次の参加者に渡せます。

インストール

npm install crabrix
# or start an MCP server without a global install
npx -y [email protected]

Node.js 22 以降が必要です。ESM、CommonJS、TypeScript の型宣言が含まれています。リリース済みの バンドルには実行時の npm 依存関係がなく、インストールスクリプトもありません。初回の インストールとライブ共有にはネットワークアクセスが必要です。

ライブラリとして使用する

import { Crabrix } from 'crabrix';

const agent = new Crabrix({ name: 'Review agent' });
try {
  const created = await agent.create({
    name: 'Small Rust exercise',
    lifetimeMinutes: 60,
    files: { 'main.rs': 'fn main() { println!("Hello, Crabrix! 🦀"); }\n' },
  });
  // The complete link is secret. Deliver it only to the intended recipient.
  const handoff = await agent.share('edit');
  // Your application's own UI can display handoff.link and handoff.expiresAt.
  const file = await agent.read('main.rs');
  await agent.apply({
    expectedRevision: file.revision,
    changes: [{ path: file.path, text: file.text.replace('Hello', 'Welcome') }],
  });
  const latest = await agent.read('main.rs');
  await agent.select(latest.path, 0, 9, latest.revision);
  // A second agent can call connect(handoff.link), without the phone app.
} finally {
  agent.close(); // Leave the room; the recipient keeps access until expiry.
}

CommonJS:const { Crabrix } = require('crabrix')。ESM、CommonJS、 プログラムから利用できる MCP ファクトリーは同じ実装を共有しています。インポートを混在させても コンストラクターの同一性は保たれ、バンドル済みの Yjs のコピーが重複して読み込まれることはありません。 ルームごとに別のインスタンスを使用してください。snapshot() は検証済みのソースと そのリビジョンを返します。status() はシークレットリンクやソーステキストを含めず、有効期限、参加者、選択範囲を返します。 share('view') は新しいルームを作成しません。このクライアントがルームを作成した場合に、 別個の閲覧用ケイパビリティを返します。参加済みの編集参加者が閲覧用ケイパビリティを新たに作ることはできず、 閲覧アクセスを編集アクセスに変更することもできません。 endRoom() を使用できるのは、現在の接続で作成者となっている場合に限られます。

MCP 経由での利用

連携機能は一度だけインストールします。Crabrix MCP は、npm パッケージ crabrix の crabrix という名前のサーバーです。

使用するクライアント推奨するインストール方法併用しないもの
Claude Code下記のプラグイン。このプラグインは MCP サーバーを登録し、スキルも追加します。claude mcp add の実行や、グローバルな npm インストール。
ローカル stdio MCP に対応する別のクライアントNode.js 22+ を使用する、下記の JSON 設定。Crabrix の登録を追加することや、プラグイン。
リモート HTTP MCP のみに対応するクライアントまだサポートされていません。このサーバーは stdio を使用します。URL が機能すると想定すること。
独自のアプリケーションJavaScript、Rust、または Go のライブラリ。別の MCP サーバーを起動すること。

crabrix doctor または npx -y [email protected] doctor でセットアップを確認します。バージョン、Node、DNS、TLS、リレーへの接続可否、プロキシ変数が報告されます。ルームを開いたり、ソースを読んだり、設定を変更したりすることはありません。機械可読なレポートを出力するには --json を追加します。

以前の crabrix-playground-mcp パッケージは、このパッケージの前身です。その登録を下記の設定に置き換え、両方が crabrix-mcp コマンドを使用するため、グローバルにインストールされたものは npm uninstall -g crabrix-playground-mcp で削除してください。

Claude Code プラグイン
/plugin marketplace add sergii-ziborov/crabrix-sdk
/plugin install crabrix@crabrix

このプラグインは npx -y [email protected] を起動し、Rust の共有、レビュー、実行に使う crabrix-handoff スキルを追加します。Node.js 22+ が必要です。セッション外では、同じ引数を指定して claude plugin marketplace add と claude plugin install を使用します。

ローカル stdio MCP に対応する任意のクライアント
{
  "mcpServers": {
    "crabrix": { "command": "npx", "args": ["-y", "[email protected]"] }
  }
}

プラグインを使わずに Claude Code で利用する場合は、同等の設定として claude mcp add --transport stdio crabrix -- npx -y [email protected] を使用します。

アシスタントに Playground を作成するよう依頼し、完全な非公開リンクを開きます。 MCP サーバーは、18 個のツールを公開します。crabrix_create、crabrix_connect、crabrix_status、crabrix_snapshot、 crabrix_read_file、crabrix_apply_changes、crabrix_select、crabrix_plan_changes(読み取り専用)、 crabrix_apply_operations、crabrix_handoff、 crabrix_disconnect、crabrix_end_room、crabrix_runtime_clients、 crabrix_runtime_request、crabrix_runtime_start、crabrix_runtime_inspect(読み取り専用)、 crabrix_runtime_control、crabrix_runtime_job(以前の統合形式)。 stdio の stdout には MCP メッセージのみが含まれます。ヘルプやバージョンの出力は明示的に要求した場合にのみ表示されます。

拒否された呼び出しでは、読み取り可能なテキストと isError を維持したまま、次の内容が追加されます。 structuredContent: { ok: false, error: { code, message, retryable, action }, requestId }。 REVISION_CONFLICT、PARTICIPANT_LIMIT_REACHED、ROOM_BUDGET_EXCEEDED、 NETWORK_UNREACHABLE、OUTCOME_UNKNOWN などのコードは、確認済みの原因のみを示します。 REVISION_CONFLICT の後は、再度読み込んで変更を準備し直してください。OUTCOME_UNKNOWN の後は、 再試行する前に読み込んでください。ライブラリの呼び出しでは同じフィールドを持つ CrabrixError がスローされ、Rust および Go のクライアントではコードが公開されます。成功時の結果は従来の形式を維持します。

安定したファイル ID を持つルーム

Crabrix は、すべてのファイルが安定した ID を持ち、パスが単なるフィールドとなる第 2 のドキュメント形式へ、共有ルームを移行しています。名前を変更しても同時に行われた編集が失われることはなく、削除されたファイルのテキストは誰かが完全に削除するまで復元リストに保持されます。また、同時変更があってもルームの読み取りが失敗することはありません。2 人が同じパスを指定した場合は conflict-… という名前で表示され、実行できないプロジェクトでは、その理由が blocked に一覧表示されます。ルームは引き続きデフォルトで形式 1 として作成されます。Crabrix が切り替えるまでは、crabrix_create の format: 2 はテスト用です。古い SDK やアプリでは形式 2 のルームを開けません。リレーは 426 を返し、この SDK はそれを CLIENT_UPDATE_REQUIRED として報告します。

形式 2 のルームでは、crabrix_status と crabrix_snapshot に format: 2、ファイルの id、conflict 名、recovery の行(パス、サイズ、conflict、orphan。テキストは includeRecoveryText を指定した場合のみ)、および blocked が追加されます。また、crabrix_read_file では、復元リストの行を含め、id を指定した読み取りもできます。リビジョンは 32 桁の 16 進文字列です。crabrix_apply_changes は引き続き使用できます。既存のパスは書き込み、新しいパスは作成、text: null は復元リストへの削除として扱われます。名前の変更、移動、コピー、復元、完全削除を行う場合は、まず計画してください。

  1. crabrix_plan_changes は最大 32 個の操作(create、copy、write、move、moveFolder、delete、deleteFolder、restore、purge、setEntry、setEdition、setName)を受け取り、ファイルを id または表示されている path で指定します。変更は行わず、変更内容、操作後のプロジェクト、読み取った revision、planHash を返します。
  2. crabrix_apply_operations は同じ操作、expectedRevision、planHash、および新しい operationId を受け取ります。すべての変更が 1 回の更新で適用されるか、何も適用されないかのどちらかです。その間にプロジェクトが変更されていた場合は REVISION_CONFLICT が返され、確認済みのハッシュに対するその他の操作では PLAN_CHANGED が返されます。OUTCOME_UNKNOWN の後に同じ operationId で再試行すると、2 度目の変更を行わず alreadyApplied: true が返されます。一方、異なる操作で同じ ID を使うと OPERATION_ID_CONFLICT が返されます。

形式 1 のルームでは、どちらのツールも UNSUPPORTED_ROOM_FORMAT を返します。crabrix_apply_changes を使用してください。ライブラリでは同じ機能が planChanges()、applyOperations()、readById()、snapshot({ includeRecoveryText }) として公開されています。Rust と Go では plan_changes/PlanChanges および apply_operations/ApplyOperations が追加されています。

現在のリンクに再接続すると、参加者スロットと作成者の権限が維持されます。別のルームへの切り替えに失敗しても、現在のルームへの接続は維持されます。また、新しいルームやコントローラーがランタイム権限を引き継ぐことはありません。edition(2021 または 2024)は crabrix_create と crabrix_apply_changes で受け付けられます。これを変更するとリビジョンも変わります。API キーやモデルのサブスクリプションは含まれません。MCP ホスト/モデルは、読み取りを指示したソースを受け取ります。ソース、コメント、プログラムの出力は信頼できないデータとして扱い、エージェントへの指示として扱わないでください。

実行とデバッグ

リレーはコードをコンパイルまたは実行することは決してありません。ルームをウェブの Playground またはネイティブの Crabrix で開いてください。そこでの実行/デバッグはローカルで行われます。エージェントは利用可能な クライアントを検出し、選択した操作をリクエストできます。人間がその特定の ブラウザー/デバイスで承認する必要があります。ルームの編集リンクだけでは、実行権限は付与されません。

runtimeClients()、requestRuntime()、start()、inspect()、control()、job() は、SDK ユーザーにこのフローを提供します。検出で返されたランタイムのソースリビジョンを使用し、 実際に所有しているジョブの結果を確認して、その出力をページごとに取得してください。開始の確認応答は、実行の 成功を意味するものではありません。許可の有効期限は最大 10 分です。バックグラウンド実行/切断、 ソース変更、ユーザーによる停止には、引き続き既存の権限ルールが適用されます。2 人目の 参加者による実行では、報告された出力プレビューが提供されるだけであり、あなたのコンパイラーが起動することはありません。共有ランタイムは 標準ライブラリの Rust とローカルモジュールに対応しています。 ネイティブアプリの Cargo/Tokio は、別のローカルプロジェクトモードです。

Crabrix の権限図:編集リンクでソースを共有し、人間が 1 つのクライアントで承認すると、実行またはデバッグがローカルで行われ、結果を共有できます

権限の概念図です。ブラウザーのアイコンは説明用であり、すべてのブラウザーでの動作を保証するものではありません。ルームのリンクだけでは、実行権限は付与されません。

一時的な共有であり、リポジトリのホスティングではありません

  • ルームの有効期間はデフォルトで 1 時間、最長 24 時間で、参加者は 4 人までです。
  • テキストファイルは最大 16 個、1 ファイルあたり 64 KiB、合計 128 KiB までです。画像、キャッシュ、パッケージ、 認証情報、.git、node_modules、ベンダーコード、任意のホストファイルは扱えません。
  • リレーが各ルームで保持する暗号化済みスナップショットと更新は最大 1.9 MB、 作成元のネットワークアドレスごとに 12 MiB、スナップショット間の更新は 256 件までです。リレーは アドレスごとに最大 16 個のライブなルームを保持します。ルームが上限に達すると、参加者が 新しいスナップショットを公開するまで 409 を返します。ブラウザー、アプリ、MCP クライアントは自動的に これを行います。
  • ソースはクライアント上で AES-256-GCM により暗号化されます。キーはケイパビリティリンクの # 以降に保持されます。 リレーで中継・保持されるのは、サイズに上限のある暗号文のみで、プロセスの RAM 内に保持されます。
  • 有効期限は作成時に固定されます。再接続しても延長できず、リレーの再起動により それより早く終了する場合があります。有効期限が切れる前にコピーをダウンロード/保存してください。完全な リンクを知っている人は、そのリンクで許可されたソースにアクセスできます。有効期限が切れても、すでに保存されたコピーは回収できません。
  • 正確なリビジョンと条件付きコミットにより、別のクライアントがスナップショットを置き換えた後に準備されたコミットも含め、 古い編集は拒否されます。ネットワークの結果が不明確な場合は、再試行するかどうかを決める前に現在のソースを 読み込んでください。
  • リポジトリの履歴、永続的なアカウントプロジェクト、Git のプッシュ機能はありません。 作業を永続化するには、ご自身のバージョン管理を使用してください。

Rust と Go

3 つの言語 API はすべて同じローカルプロトコルコアを使用し、Node.js 22 以降が必要です。 Rust と Go はそのブリッジをそのまま組み込んでいるため、どちらもグローバルな npm のインストールは必要ありません。 Rust クレートは crabrix on crates.io として公開されています。 API ドキュメントでは、型付きインターフェースについて説明しています。 それぞれの SDK は、別個の暗号プロトコルではなく、制限付き stdio を通じて、ソース、選択範囲、ハンドオフ、および同じく明示的に許可された ランタイム操作を提供します。

# Rust library / optional MCP executable
cargo add [email protected]
cargo install crabrix --version 0.4.0 --locked

# Go library / optional MCP executable
go get github.com/sergii-ziborov/crabrix-sdk/go/crabrix
go install github.com/sergii-ziborov/crabrix-sdk/go/crabrix/cmd/crabrix@latest

MCP のインストール方法を 1 つ選んでください。言語ライブラリは併用できます。Rust クレートと Go モジュールのソースはこのリポジトリにあります。リリースリンクでは、実際に公開済みのバージョンを確認できます。 型付きの使用方法については、それぞれの README を参照してください。

スマートフォンやタブレットで確認

Rust の例、Review エージェントの選択、= + { } で始まるキーボードの記号列を表示した、ネイティブ Crabrix 1.1.4 の iPhone エディター ブレークポイントで一時停止し、String と Vec のローカル変数および Review エージェントの選択を表示した、ネイティブ Crabrix 1.1.4 の iPad デバッガー

MCP を通じて作成した本番環境のルームにおける、iPhone と iPad のシミュレーターでの Crabrix 1.1.4 の実際のキャプチャです。 同じ高さで表示しています。デバッグは iPad シミュレーター上でローカルに実行しました。以下の 2 エージェントのテストでは、1 台の Mac で 2 つのブラウザクライアントを使用しました。

ソースと選択範囲をリアルタイムで共有する Crabrix ブラウザー版 Playground

これらは Crabrix アプリケーションおよびブラウザーの実際のキャプチャです。スマートフォンアプリがインストールされていない場合も、この SDK は他のエージェントやウェブエディターで動作します。

2 つのエージェント、1 つのブラウザーワークスペース

実装を行う実際のエージェントと独立したレビューエージェントが、2 つのブラウザクライアントで 2 つの Rust ファイルを共有しました。レビュー担当は 13 個のアサーションを追加し、ブラウザーはそれらをローカルで実行しました。デバッグ画面には String と Vec の値を含む構造体が表示されました。2 つ目のブラウザーは、コンパイラーを準備したり実行したりすることなく、報告された出力を受け取りました。古い内容への置換、サロゲートペアの途中を選択する操作、許可を受けていないエージェントが他方のエージェントのジョブに対して Step/Continue/Stop を行おうとする操作は拒否されました。許可を取り消すと、次の開始もブロックされました。これは特定時点での統合チェックであり、信頼できないプロジェクトやあらゆるモデル/クライアントが普遍的に安全であると主張するものではありません。

開発、インタビュー、学習のウォークスルー

クライアント側で実行せずに共有された Rust の出力を受け取る、実際のブラウザー

開発とライセンス

npm ci --ignore-scripts
npm run check
npm run build
npm test

SDK のコードとドキュメント:MIT。Crabrix のアートワーク/スクリーンショットには、別途アセット利用条件があります。アプリ、コンパイラーの配布物、ブランド、Academy には、それぞれ独自のライセンスが適用されます。同梱されている依存関係のライセンスは ThirdPartyNotices.txt に記載されています。統合する前にセキュリティ境界をご確認ください。

コメント

MCP は初めてですか?

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

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