mcpField
C
Crabrix

Crabrix

本地服务
crabrix.com开发工具05 天前更新

关于 Crabrix

Crabrix 是 JavaScript/TypeScript 库和 stdio MCP 服务,用于让 Agent 与人共享临时加密 Rust 工作区。它支持协作编辑和经授权的本地运行与调试;中继端不编译或执行代码。

主要功能

  1. 01创建临时共享 Rust 房间
  2. 02读取和编辑共享源码
  3. 03移交访问链接与权限模式
  4. 04请求获批的本地运行与调试
  5. 05查看房间状态和修订版本

适用场景

  1. 01分享最小化 Bug 复现
  2. 02与其他 Agent 评审 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 🦀

为 Agent 和用户打造的临时 Rust 工作区。
分享链接。协同编辑。在浏览器或 Crabrix 中本地运行。

打开 Playground · 设置与指南 · GitHub

Crabrix 既是一个 JavaScript/TypeScript 库,也是独立的 MCP 服务。 无需 iPhone、应用账号或云端编译器。Agent 可以创建房间、 读取或修改其中的源代码,并将完整链接传给其他 Agent 或用户。 在网页上打开链接即可查看同一个实时编辑器。原生 Crabrix 应用是 适用于 iPhone/iPad 和离线 Rust 项目的可选配套应用。

请参阅双 Agent 实用演练, 了解开发、面试和教学场景,包括实际的本地运行/调试与权限检查。发布资格说明和 公开分发凭证列出了经过测试的范围。

橙色 Crabrix 螃蟹位于实现 Agent、审查 Agent 与一位用户之间,三者共享同一工作区

共享开发与审查工作流示意图。下方展示了实际的编辑器截图。

可以用它做什么?

工作流专注协作的共享工作区
开发分享最小化的错误复现;让另一个 Agent 审查边缘情况。
编码面试使用实时源代码和命名选区,讨论简短的 Rust 练习。
教学讲解所有权或解析,运行测试样例并查看具体值。
Agent 交接将授权链接、访问模式和有效期传给下一位参与者。

安装

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 是名为 crabrix、来自 npm 包 crabrix 的服务。

你的客户端推荐安装方式不要同时
Claude Code使用下方的插件。它已注册 MCP 服务并添加了一个技能。运行 claude mcp add 或全局安装 npm 包。
其他支持本地 stdio MCP 的客户端使用下方的 JSON 配置,并确保 Node.js 版本为 22+。添加第二个 Crabrix 条目或安装插件。
仅支持远程 HTTP MCP 的客户端暂不支持:此服务使用 stdio 通信。不要指望 URL 能正常工作。
你自己的应用程序使用 JavaScript、Rust 或 Go 库。不要为此单独运行 MCP 服务。

使用 crabrix doctor 或 npx -y [email protected] doctor 检查设置。它会报告版本、Node、DNS、TLS、中继可达性和代理变量。它不会打开房间、读取源代码或更改任何设置;添加 --json 可获取机器可读的报告。

历史上的 crabrix-playground-mcp 包是此包的前身。将其单独的注册项替换为下方的配置,并使用 npm uninstall -g crabrix-playground-mcp 移除全局副本,因为两者都会占用 crabrix-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 服务提供十八个工具: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 标准输出仅包含 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,路径只是一个字段。重命名不会丢失同时进行的编辑;已删除文件的文本会保留在恢复列表中,直到有人将其清除;读取房间也不会因并发更改而失败:两个人认领同一路径时,该路径会显示为 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 位十六进制字符。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。所有操作会在一次更新中一并应用,或全部不应用。若项目在此期间发生更改,则会返回 REVISION_CONFLICT;若其他操作使用了经审核的哈希,则会返回 PLAN_CHANGED。在遇到 OUTCOME_UNKNOWN 后重试相同的 operationId,会返回 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 主机/模型会收到你要求其读取的任何源代码。请将源代码、注释和程序输出视为不可信数据,绝不要将其视为给 Agent 的指令。

运行和调试

中继绝不会编译或执行代码。请在 Web Playground 或原生 Crabrix 中打开房间。在那里运行/调试会在本地执行。Agent 可以发现可用 客户端并请求选定的操作;但必须由人类在特定浏览器/设备上批准。仅有房间编辑链接 不会授予任何执行权限。

runtimeClients()、requestRuntime()、start()、inspect()、control() 和 job() 会向 SDK 用户开放此流程。请使用发现时返回的运行时源代码修订版本,检查实际拥有的任务结果,并分页读取其输出。启动确认并不代表运行成功。授权最多十分钟后过期;后台运行/断开连接、 源代码变更和用户点击 Stop 时,仍遵循现有权限规则。另一位参与者点击 Run 只会提供已报告的输出预览;绝不会启动你的编译器。共享运行时支持标准库 Rust 和本地模块; 原生应用中的 Cargo/Tokio 仍属于独立的本地项目模式。

Crabrix 权限示意图:编辑链接用于共享源代码,由人类批准某个客户端;运行或调试会在本地执行,同时可共享结果

权限示意图。浏览器图标仅作说明;并不代表所有浏览器都受支持。仅凭房间链接绝不会授予执行权限。

临时共享,而非代码仓库托管

  • 房间默认有效期为一小时,最长 24 小时,最多四名参与者。
  • 最多 16 个文本文件,每个文件 64 KiB,总计 128 KiB。不支持图像、缓存、软件包、 凭据、.git、node_modules、供应商代码或任意主机文件。
  • 中继每个房间最多保留 1.9 MB 的加密快照和更新,每个创建者网络地址最多保留 12 MiB,且每两个快照之间最多处理 256 次更新。每个地址最多同时持有 16 个活动房间。 房间已满时会返回 409,直到参与者发布新的快照;浏览器、应用和 MCP 客户端会自动完成此操作。
  • 源代码在客户端使用 AES-256-GCM 加密。密钥保存在能力链接中 # 之后;中继只会转发并在进程 RAM 中保留大小受限的密文。
  • 创建时即固定过期时间。重新连接无法延长有效期;中继重启可能使其提前结束。请在过期前下载/保存副本。任何拥有完整链接的人都可以访问链接所允许的源代码。过期无法收回已保存的副本。
  • 精确修订版本和条件提交会拒绝过时编辑,包括在另一客户端替换快照前准备的提交。网络结果不明确时,请先读取当前源代码,再决定是否重试。
  • 不提供仓库历史记录、永久账户项目或 Git 推送。请使用自己的版本控制来持久保存工作。

Rust 和 Go

三种语言 API 都使用相同的本地协议核心,并要求 Node.js 22+。 Rust 和 Go 会嵌入完全相同的桥接程序;两者都不需要全局 npm 安装。 Rust crate 已发布到 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 安装方式。语言库可以共存。Rust crate 和 Go 模块的源代码位于此仓库中;发布链接会标明实际已发布的版本。 有关类型化用法,请参阅各自的 README。

在手机或平板上查看

原生 Crabrix 1.1.4 iPhone 编辑器,显示 Rust 示例、Review Agent 选择项,以及以 = + { } 开头的键盘符号栏 原生 Crabrix 1.1.4 iPad 调试器在断点处暂停,显示 String 和 Vec 局部变量,以及 Review Agent 选择项

实际的 Crabrix 1.1.4 截图,来自生产环境中的 iPhone 和 iPad 模拟器;这些模拟器通过 MCP 创建房间,并以相同高度显示。调试在 iPad 模拟器上本地运行。下方的双 Agent 测试使用同一台 Mac 上的两个浏览器客户端。

Crabrix 浏览器 Playground,显示实时共享的源代码和选区

这些是 Crabrix 应用和浏览器的实际截图。即使没有人安装手机应用,SDK 也能与其他 Agent 及 Web 编辑器配合使用。

两个 Agent,一个浏览器工作区

一个实际的实现 Agent 和一个独立的审查 Agent 通过两个浏览器客户端共享了两个 Rust 文件。审查者添加了 13 条断言;浏览器在本地运行了这些断言,Debug 显示了一个包含 String 和 Vec 值的结构体。第二个浏览器收到了报告的输出,无需准备或运行编译器。系统拒绝了过期替换、半个代理对选区,以及未获授权的 Agent 尝试 Step/Continue/Stop 其他 Agent 作业的请求。撤销授权后,系统阻止了另一次启动。这是一次特定时间点的集成检查,并不代表不可信项目或每个模型/客户端都普遍安全。

开发、访谈和学习指南

实际浏览器接收共享的 Rust 输出,且该客户端未执行任何操作

开发与许可证

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

SDK 代码和文档:MIT。Crabrix 插图/截图适用单独的素材条款。应用、编译器发行版、品牌和 Academy 各自适用其许可证。捆绑依赖项的许可证见 ThirdPartyNotices.txt。集成前请参阅安全边界。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。