Skip to content

MCP 服务器

把 Glac 的产品作为工具交给 AI 智能体:可部署的方块、可在其中工作的沙箱,适用于 Claude Code、Claude Desktop、Cursor 或任何 Model Context Protocol 客户端。

更新于

MCP 服务器让模型能够:把镜像部署为方块,或一起部署多个方块,读取它们的日志,回到更早的版本;创建沙箱,在里面运行命令,读写文件,开放端口,创建快照并回滚;创建云盘(不随沙箱消失的磁盘),挂载云盘,为它们保留快照并备份;把域名指向应用和沙箱;以及查看项目和账户。它自己不保存任何状态:一切都经由 TypeScript SDK 发往 API。

它需要 Node 23.6 或更高版本,通过 npm 以 glac-mcp 运行,并会带上它所基于的官方 MCP TypeScript SDK:

GLAC_API_URL=https://api.glac.ai GLAC_API_KEY=ak_... npx glac-mcp

连接客户端

在 Claude Code 中:

claude mcp add glac -e GLAC_API_URL=https://api.glac.ai -e GLAC_API_KEY=ak_... -- npx glac-mcp

Claude Desktop(claude_desktop_config.json;macOS 上位于 ~/Library/Application Support/Claude/)和 Cursor(~/.cursor/mcp.json,或项目中的 .cursor/mcp.json)使用同样的配置项:

{
  "mcpServers": {
    "glac": {
      "command": "npx",
      "args": ["glac-mcp"],
      "env": { "GLAC_API_URL": "https://api.glac.ai", "GLAC_API_KEY": "ak_..." }
    }
  }
}

通过 HTTP

glac-mcp serve --http 通过 MCP 的 Streamable HTTP 传输在 /mcp 上提供同样的工具,供连接某个地址、而不是启动进程的客户端使用:

npx glac-mcp serve --http 127.0.0.1:7071
claude mcp add --transport http glac http://127.0.0.1:7071/mcp --header "Authorization: Bearer ak_..."

服务器本身不持有密钥:每个请求都以 Bearer 令牌的形式带上一个 API 密钥,服务器向 API 核验它(核验结果缓存 30 秒),各个工具只用这个密钥。没有密钥的请求,或者带着 API 不认识的密钥的请求,会得到 401,并附带一个 WWW-Authenticate: Bearer 质询,指向端点的受保护资源元数据(RFC 9728,位于 /.well-known/oauth-protected-resource/mcp)。每个请求都单独处理,没有会话,所以同一个地址后面可以放任意多台这样的服务器。默认只监听本机;监听其他地址时,要在它前面加上 TLS,并把 GLAC_MCP_PUBLIC_URL 设为客户端使用的地址。

用登录代替粘贴密钥

Glac 提供的端点还接受另一种访问令牌:你通过登录把应用连接到 Glac 后,应用得到的令牌。[TODO: the endpoint’s address and its authorization server’s, once they are served.] 这样,Claude、ChatGPT 或 Cursor 之类的客户端不需要密钥,也不需要任何配置就能连接:把端点的地址添加为远程 MCP 服务器(在 Claude 中是自定义连接器),客户端会读取端点的受保护资源元数据,从中找到 Glac 的授权服务器(Ory Hydra,权限范围见下表),并向它注册自己:优先用自己的 Client ID Metadata Document(MCP 2026-07-28 修订版首选的方式),没有的话就用动态客户端注册 (RFC 7591)。它的重定向地址必须是 https;运行在你自己电脑上的应用也可以用 localhost。浏览器会打开控制台:登录(用密码、GitHub 或 Google)后,控制台会显示应用的名称、它是自行注册的还是发布了描述文档、授权后跳回的地址,以及它请求的权限。选择账户和项目(默认一个,也可以选多个),以及允许它做什么:

权限范围 允许应用做什么
sandboxes:read 查看沙箱及其快照、云盘、备份和 SSH 密钥,以及浏览器会话
sandboxes:write 创建、修改和删除它们;运行命令、读写文件、打开终端和端口链接
apps:read 查看方块上的应用及其版本、日志和指标、部署、域名、共享变量、数据库和托管应用
apps:deploy 对应用、部署、共享变量和数据库执行部署、回滚、扩缩容和删除,以及安装托管应用
billing:read 查看账户的套餐、账单、点数、用量和限制(需由所有者授予)

允许之后,应用会得到一个用于 API 和 MCP 端点的访问令牌(有效期十分钟,应用会自行刷新),之后按你允许的范围工作,只在你选择的项目中。超出这些权限范围的工具会被拒绝,并指明它需要的权限范围 (403 insufficient_scope);有些事无论权限范围如何,任何已连接的应用都不能做,同样会被拒绝:API 密钥、Webhook、审计日志、计费或账户设置的更改、域名、机密、日志目的地。你在账户中的角色不允许做的事,应用也做不了。已连接的应用列在控制台的个人设置下 (Connected apps),每个都显示它能做什么、在哪些项目中、最后一次使用的时间;Revoke 会立即在 API 上停用它的全部令牌,在 MCP 端点上则在 30 秒内停用。

你自己运行的端点不在授权服务器签发令牌的范围内:它只接受 API 密钥。

工具

这 73 个工具按模型需要做的事来设计,而不是逐一对应 REST 调用。它们按产品分组和命名:方块(cube_*;同样的工具也响应 worker_*,但不列出)、沙箱 (sandbox_*)、云盘 (drive_*)、域名 (domain_*)、浏览器 (browser_*)、数据库 (database_*)、托管应用(catalogue_*、installation_*),然后是项目 (project_*) 和账户 (account_*),并按这个顺序列出。

方块

方块把镜像作为服务运行在它自己的地址上,这个服务也叫方块,API 称它为 app,工具的参数 (app) 也一样。下面这七个工具需要平台的控制平面。

工具 作用
cube_deploy 把镜像部署到指定名称的应用,第一次部署时创建该应用;立即生效的设置(public、regions、扩缩容、checkpoint_seconds:键控实例的检查点,0 表示不创建)会先修改。立即生效的设置还包括 concurrency、depends_on、network(别名、访问方式)和 metadata。版本还接受存储卷(在服务器的前缀下)、kind、user、working_dir、stop_signal、stop_grace_ms、hostname 和 runtime(限制、sysctl、tmpfs、解析器、/dev/shm 的大小);但不接受文件,因为文件是给应用传机密的途径。它会等版本一段时间,然后说明版本已就绪、已失败(附镜像自己的输出)还是仍在构建。
cube_list 列出应用,或查看一个应用的详情:它的版本、流量在哪个版本上、它的键控实例、用来签名键的机密(只显示开头几个字符,从不显示值),以及它的日志统计。数据库的应用会说明属于哪个数据库 (managed_by),由那个数据库部署和删除它:在这里部署或回滚它都会被拒绝。
cube_rollback 把应用的流量切回更早的版本。
cube_metrics 为应用提供服务的机器对它的统计,按分钟或按小时:请求数、被拒绝的请求数和按状态码类别统计的请求数、p50 和 p99、运行中和已停止的实例数、唤醒次数、新建的实例数、CPU 和内存;只列出有数据的时间段,以及它们的合计。
cube_logs 读取应用的日志:实例的输出、请求、平台做了什么;可按实例、版本、类型、状态或文本筛选,也可以从某个游标往后读。
cube_instance 创建或删除某个键的实例。把实例原地迁到另一个版本会替换它的机器并断开它的连接,回退也一样:这要由人来发起、取消和跟踪(glac cube upgrade、glac cube upgrades revert|cancel、SDK 的 upgrade 和 revert),对一个应用的所有键批量进行时更是如此(glac cube upgrades batch),没有任何工具会做这件事。
cube_instance_ports 某个键的实例自己的公网 IPv6 地址及其开放的端口,无论实例在哪里:open 向 from 指定的来源(IPv6 前缀或地址;::/0 表示所有人,必须明确写出)开放一个端口(TCP 或 UDP),close 关闭一个。实例休眠时(数据包会唤醒它)和迁移时,开放的端口都保持开放;这个键的新实例则都没有。程序必须在 :: 上监听。

沙箱

工具 作用
sandbox_run 运行一条命令并等待它完成。给出 sandbox 名称时,沙箱在第一次使用时创建并保留;不给出时,使用一次性的沙箱,用完即删。它创建的沙箱(和 sandbox_exec 创建的一样)可以带一个启动时运行的自有服务(start、start_command、ready),以及 project_network、hostname 和 stop。用 init: "systemd" 创建的沙箱是一个完整的系统:镜像自己的 systemd 作为 PID 1(不带 image 时,使用平台带 systemd 和 OpenSSH 的 Ubuntu),所以软件包、用 systemctl 启动的服务、cron 和 journal 都能像在一台普通机器上一样工作;sandbox_exec 也接受它,sandbox_list 会显示每个沙箱的 init。
sandbox_exec, sandbox_output, sandbox_stdin, sandbox_signal 启动一条长时间运行的命令;从某个位置读取它的输出;写入它的输入;向它发送信号。
sandbox_read_file, sandbox_write_file, sandbox_list_files 文件。图片以图片形式返回;其他二进制文件只给出描述。
sandbox_url 端口链接。
sandbox_ports 沙箱自己的公网 IPv6 地址(如果有)及其开放的端口:open 向 from 指定的来源(IPv6 前缀或地址;::/0 表示所有人,必须明确写出)开放一个端口(TCP 或 UDP),close 关闭一个。入站默认关闭;沙箱休眠时(数据包会唤醒它)和迁移时,开放的端口都保持开放。程序必须在 :: 上监听。
sandbox_revoke_tokens 吊销到目前为止为沙箱发出的所有令牌,包括预览链接和 Cookie 中的令牌,以及 SSH 会话持有的令牌(此后返回 401 invalid_token);之后创建的令牌有效。带 token(令牌本身或它的 id)时,只吊销那一个令牌。
sandbox_egress 沙箱能访问互联网上的哪些地方:default、allow 和 deny(默认拒绝再加允许列表,可以把你不信任的代码关在里面),或 clear。第一次指定的沙箱会带着这些规则创建。给请求加入机密、或指定可以向某个主机发送哪些请求的规则属于项目,这里不会改动。
sandbox_checkpoint 查看沙箱运行期间的检查点,并用 every_seconds 设置(1 到 600;0 表示关闭):机器丢失时,沙箱会在别处从最近的检查点带着进程继续运行。默认关闭;第一次指定的沙箱会带着检查点创建。没有机器支持检查点时会被拒绝 (checkpoints_unavailable)。
sandbox_list, sandbox_sleep, sandbox_delete 列出沙箱和快照,或查看一个的详情(如果有检查点,还包括检查点的进行情况);立即休眠;删除。
sandbox_snapshot, sandbox_fork, sandbox_restore 创建快照、分叉,以及原地回到某个快照。
sandbox_add_ssh_key, sandbox_list_ssh_keys, sandbox_delete_ssh_key 单个沙箱的 SSH 密钥,默认有效一天(最多 30 天)。

云盘

云盘是项目的一块磁盘,不随使用它的沙箱消失:同一时间由一个沙箱以读写方式挂载,并连同其中的内容一起保留给下一个沙箱:可以在它的区域,也可以在别的区域,只要那里的机器能读取它归属区域的对象存储。快照把云盘保存为某一时刻的状态,即它在对象存储中的一个版本:不复制任何数据。备份是云盘在某一时刻的副本,保存在对象存储中,直到过期。下面这十六个工具需要平台的控制平面。设置了前缀时,服务器的云盘都带有这个前缀,它也只把这些云盘挂载到它自己的沙箱中,所以创建云盘时要给出名称。

工具 作用
drive_create 按名称、大小(单位 GiB,默认 64,免费版上为 5)和区域创建云盘,可选 standard 或 strict(持有它的沙箱中的 fsync 要等对象存储保存了此前的全部写入才返回;一经设定不再改变)。只按写入的数据计费。
drive_list, drive_get 列出云盘,或查看一个云盘的详情:大小、已写入的数据量、区域、持有它的沙箱及挂载位置、写入它的节点、它的归属区域(保存其副本的对象存储所在的区域)以及迁移进行到哪一步(home_move:云盘到另一个区域一小时后,归属区域会跟过去;没有工具能让它更早迁移,glac drives home 可以),分叉的来源云盘,以及数据库云盘所属的数据库(managed_by:只有数据库的实例能以读写方式挂载它,重命名、恢复或删除它都会被拒绝)。
drive_cache 设置宿主机在 NVMe 上最多保存云盘的多少数据,单位 GiB(cache_gib;null 表示全部缓存,这是默认值;drive_create 也接受 cache_gib):超出的部分在读取时从对象存储读回,速度较慢;缓存按小时、按已填充的量计费,与云盘的数据费用分开。调小缓存后,超出的部分一旦已在对象存储中就会被释放;如果运行中的沙箱挂载云盘时是全部缓存,那么在那个沙箱休眠或停止之前,缓存会一直保持全部。工具返回的每个云盘都会给出它的 cache_bytes 和当前已缓存的量 (cached_bytes)。数据库的云盘有自己的缓存设置。
drive_attach 立即以读写方式把云盘挂载到沙箱的某个路径上;另一个沙箱持有的云盘会被拒绝,结果会说明是哪个沙箱持有它。带 snapshot 时,改为以只读方式挂载它的某个快照,任意多个沙箱都可以同时挂载。
drive_detach 卸载云盘(仍有进程在使用时用 force);云盘保留其中的内容。带 snapshot 时,卸载该快照的只读挂载。
drive_delete 删除云盘及其中的内容;已挂载的云盘不会被删除。它的快照会保留,结果中会列出它们。
drive_snapshot, drive_snapshot_list, drive_snapshot_delete 为云盘创建快照(fs_consistent 会冻结写入它的沙箱的文件系统;否则会把它的机器暂停片刻,相当于断电),列出云盘的快照(不指定云盘时,列出所有云盘的快照,包括已删除云盘的),删除一个快照。
drive_fork 按名称创建一个新云盘,来源是某个快照或云盘当前的状态:不复制任何数据,可以立即挂载。
drive_restore 把云盘恢复到它的某个快照;沙箱持有的云盘会被拒绝:先用 drive_detach 卸载它。
drive_versions 设置了版本窗口的云盘为自己保留的版本(它的 history_seconds:每个有写入的 30 秒一个版本),最新的在前;带 at 时,给出按该时间恢复或分叉时会用到的版本。
drive_backup, drive_backup_list, drive_backup_get, drive_backup_delete 为云盘创建备份(写入它的沙箱的文件系统会被冻结几毫秒,让副本处于静止状态),保留到过期为止(expires_in_days,或云盘的规则:默认 30 天);列出服务器所有云盘或某个云盘的备份,最新的在前,并附上每个备份的创建原因(manual;daily,按云盘的规则;before_version,在服务的新版本之前);查看一个;删除一个。
drive_backup_restore 按名称从一个就绪的备份创建新云盘:大小与备份所来自的云盘相同,位于备份所在的区域,在从对象存储完全取回之前为 restoring,之后为 ready(drive_get 会说明是哪个),在此之前不会被任何东西挂载。如果创建它的机器无法恢复它,平台会在另一台机器上再试一次。

模型用名称或 id (dsnap-…) 指定快照,并且总要带上它的云盘:drive_snapshot 不会在同一个云盘的快照中重复使用名称;设置了前缀时,它给每个快照起的名字都带有这个前缀,没给名称时会自己编一个(云盘名加时间)。快照不随云盘消失:drive_delete 的结果会列出留下的快照,之后按云盘的 id 访问它们。快照按它单独保留的数据计费,价格与云盘的数据相同(每 GB·月 $0.02),直到被删除;分叉和任何云盘一样,按它包含的全部数据计费(从 10 GB 快照分叉出的云盘按 10 GB 的云盘计费);只读挂载从对象存储读取的数据不收费。恢复会保留中间的版本,只要有快照或分叉保留着它们,所以恢复到较旧快照的云盘,之后还可以再恢复到较新的快照;而没有快照保留的内容就没了。

备份不是快照:快照是云盘的一个版本,而备份是一份独立的副本,用 id (bak-…) 指定,没有名称,仅凭它就能创建云盘。云盘的备份只保存自上一个备份以来变化的内容,多个备份都需要的数据块只计费一次,计在最早的备份上:每个备份的计费依据 (stored_bytes)、删除它能省下的量 (own_bytes) 以及它与其他备份共享的量 (shared_bytes) 都在它的那一行里。在对象存储收到全部数据之前它是 making,之后是 ready,从那时起按休眠沙箱所保存内容的价格计费(每 GB·月 $0.02),直到过期或被删除。它不随云盘消失:无论原来的云盘后来怎样,都可以从它创建新云盘。设置了前缀时,服务器只能看到它自己的云盘的备份,从备份创建的云盘也会带上这个前缀。机器不向对象存储复制任何数据的云盘没有备份:drive_backup 会说明这一点。

域名

工具 作用
domain_create 为服务器的应用或其沙箱的某个端口注册用户的自定义域名;在 DNS 上能查到结果中指明的记录(CNAME,它同时把域名指向这里;或 TXT 记录)之前,它的状态是 pending_verification,查到后签发证书。记录由用户在自己的 DNS 服务商那里添加。
domain_list, domain_update, domain_delete 指向服务器的应用和沙箱的域名,以及未验证时证明每个域名所需的记录;把域名指向另一个应用、沙箱或端口;删除域名。

浏览器

尚未开放。浏览器还没有向账户开放:下面是开放之前服务器目前的样子。

会话是一个托管的 Chromium,有 Chrome DevTools Protocol (CDP) 客户端连接时保持运行,最后一个客户端离开几秒后进入休眠,页面会保留。服务器只负责打开和关闭会话;在浏览器中的操作由连接到会话地址的 Playwright MCP 服务器完成 (npx @playwright/mcp --cdp-endpoint <cdp_url>)。下面这三个工具需要平台的控制平面。设置了前缀时,服务器的会话名称都带有这个前缀:它只能看到和关闭自己的会话。

工具 作用
browser_open 打开一个会话(默认无头,带 headful 时为有头),或者唤醒给定名称的会话,页面都在,然后给出它的 CDP 地址 (cdp_url) 和供人实时观看其页面的地址 (live_url)。地址就是凭据:谁拿到它,谁就能驱动这个浏览器。
browser_list 服务器的会话:名称、类型、是否在运行(或 failed,并说明原因:浏览器停止且没有恢复),以及连接着多少个客户端。不含地址。
browser_close 彻底结束一个会话:它的浏览器、页面和连接。

会话和任何实例一样,按它使用的方块资源计费:计算时的 CPU、运行时的内存和出站流量(价格与套餐)。account_usage 会在会话的沙箱旁边给出它的用量。

数据库

数据库是托管的 Postgres,没有任何请求时休眠,有连接时被唤醒,会话都会保留。服务器可以创建数据库和数据库的分支,也可以查看它们;删除数据库或分支、让它休眠、唤醒它以及设置新密码,都要由人来做(glac db rm、glac db branches rm、glac db sleep、glac db wake、glac db reset-password)。下面这四个工具需要平台的控制平面。设置了前缀时,服务器的数据库名称都带有这个前缀:它只能看到自己的数据库。

工具 作用
database_create 创建一个数据库(默认 PostgreSQL 18,可用 version 指定),几秒内就绪,然后给出带所有者密码的连接字符串:这是唯一一次给出密码,所以模型要把它放在连接程序需要的地方(比如 DATABASE_URL 这样的环境变量)。用已有数据库的名称时,返回那个数据库,不带密码。免费版上的 sleep_after_seconds 固定为 1。
database_list 服务器的数据库:名称、版本、状态、是在运行、暂停还是休眠,以及不带密码的连接字符串。
database_get 查看一个数据库及其分支(先是 main,然后是从它创建的分支),每个分支都附带端点、状态和不带密码的连接字符串;带 branch 时只看那一个分支。它会说明数据库的休眠设置(休眠前保持暂停多久、每天的唤醒时间)、根分支最早可以恢复到什么时候,以及 WAL 归档中的缺口(对象存储长时间拒绝接收 WAL、以致 WAL 被放弃的时段;缺口内的时间只能从云盘的版本窗口恢复到整分钟):恢复要由人来做 (glac db restore)。
database_branch_create 数据库的分支:main(或 parent)当前状态的副本,无论多大都立即创建,有自己的 PostgreSQL,用来在真实数据上尝试迁移或修改而不影响原数据。它给出分支的连接字符串,不带密码:分支的角色和密码与父分支相同,所以所有者用 database_create 给出的密码登录。带 expires_in_hours 时,到时会自行删除;否则由人来删除 (glac db branches rm)。

数据库的历史(能往回恢复多远,glac db update --history)和原地恢复(glac db restore:把根分支带回某个时间,断开现有连接,把之前的状态保留为一个分支)都要由人来做:没有工具能做其中任何一件。云盘的版本窗口在 SDK 和 glac drives versions|history 中,还不在这些工具之列。

在项目网络上按名称访问数据库:从用 project_network: true 创建的沙箱(以及项目的应用)访问。

托管应用

目录中的应用(比如 Rivet)以它自己的方块资源安装到项目中,带有该安装的标签,只能通过这个安装修改(托管应用)。服务器可以查看目录、安装应用、查看安装;修改和删除安装(删除会连同内容一起删掉它的存储卷和存储桶)要由人来做(glac installations update、glac installations rm)。下面这五个工具需要平台的控制平面。设置了前缀时,服务器的安装名称都带有这个前缀:它只能看到自己的安装。

工具 作用
catalogue_list 目录中的应用,每个都附带简介、许可证、是否由平台打包,以及它一个月在方块各计量项上的费用。
catalogue_get 查看一个应用(app、version):它的安装接受的参数(一个 JSON Schema)、它的输出,以及它一个月在方块各计量项上的用量。
installation_create 安装它(app、name、version、region、parameters、requires),在服务器的等待时限内等它就绪,然后给出它的输出,包括机密输出,模型要把它们放在使用它的程序需要的地方。
installation_list 服务器的安装:应用、版本、状态、区域、每个安装的组成及其输出。
installation_get 查看一个安装:它的状态(失败时还有原因)、它的应用、存储卷和存储桶,以及它的输出(服务器的密钥无权管理项目时,机密输出会被隐藏)。

项目与账户

工具 作用
project_get, project_set_variable 项目及其事件,每个事件用几个词概括(其中包括运行过之后失败的浏览器会话;数据库的创建、删除、分支或恢复,WAL 归档失败和恢复正常,以及归档中缺口的出现和结束;其他事件则说明它们涉及什么),以及项目的共享变量(应用的 env 会引用它们):这些属于控制平面。project_get 还会显示项目的支出上限和本月已支出的金额、它的 Webhook、API 密钥,以及应用日志导出到哪里(从不显示机密、密钥或请求头的值;Webhook 和密钥需要有 admin 权限范围的密钥才能看到),这些由人来设置:没有工具能创建或修改它们。申请提高账户的某项限制也要由人来做 (glac limits request)。
project_secrets 项目的机密:只有名称和主机,从不包含值。
project_deploy 把服务器的多个应用作为一次项目部署 (/v1/deploys) 一起部署:每个应用都接受 cube_deploy 对版本所接受的内容({}:按原样),按各自等待的对象排序,并一起切换。它会等部署一段时间,然后说明每个应用的版本和状态,或者在哪个应用失败以及原因。属于控制平面。
project_deploys 服务器的应用最近的部署;或者查看一次部署,包括每个应用的版本、每一步用了多久,以及失败时的原因(wait:等到它结束)。属于控制平面。
project_audit 项目审计日志的一页,最新的在前:每一次不是读取的调用(被拒绝的也算),包括时间、调用者(按名称标识的密钥、沙箱的令牌、控制台的用户、平台、运营方)、方法、路径、状态和来源;以及运营方对应用日志的每一次读取。需要有 admin 权限范围的密钥。属于控制平面。
account_billing, account_usage 套餐、账单和用量:只读。账单还包括密钥所属项目在存储卷和云盘上的保有量,按创建时所受限制的数字给出(keeps;需要更多时由人申请)、账户的账单地址和税号,并用要求的原文说明账户的购买是否需要买方明确要求立即提供(欧洲经济区或英国的消费者,可以在 14 天内撤回)。
account_statement 某个月的对账单(period,格式为 YYYY-MM;不指定时为本月):每个计量项一行及其按标价折合的金额,超出付费版各期包含额度的用量合计多少(在余额足够的范围内从余额中扣除),本月的各个时段,各项费用,扣除和核销的点数,账户在月底保有的内容,每个项目的用量,以及每个数据库单独一行(用量按标价折合多少,其中历史和分层数据单列)。只读。
account_documents Stripe 上的发票(附 PDF 链接,退还的扣款还附有贷项通知单)、发给账户的邮件,以及作为欧洲经济区或英国的消费者仍可撤回的购买和已做的撤回。只读:撤回是买方本人的声明,绝不由智能体代为提出 (glac billing withdraw)。
account_settings 账户的通知发往哪里、使用什么语言,以及账户自己设置的每月发往互联网的流量上限:可以查看,在你为之工作的人要求时也可以修改。它会说明地址何时还未验证(email_verified:在发到该地址的链接被打开之前,不会有通知发给它),以及发往它的邮件何时被退回(email_undeliverable:在重新设置地址之前,不会有邮件发给它)。

服务器遵守的几条规则:

  • 状态跟着名称走。模型命名的沙箱一直归模型所有,文件、软件包和进程在多次对话之间都会保留。
  • 命令失败是一个结果,不是错误:非零退出码、超时或信号都会作为普通结果返回,第一行是退出码。找不到沙箱、无法连接 API 或参数错误才是错误,并会说明该怎么办。
  • 过长的输出从中间截断:每次调用最多 16,384 字节,保留开头和结尾,并附上读取其余部分的调用。
  • 一次调用最多等待 45 秒;仍在运行的命令会以 running 返回,附上它的 id,可以用 sandbox_output 继续等待。
  • 付款是人的事。没有用于充值、更换套餐、开启自动充值、撤回购买或保存机密的工具;结果会说明用哪个 glac 命令来做。如果账户以欧洲经济区或英国消费者的身份购买,购买需要买方本人明确要求立即提供:这一要求只能由买方本人提出(glac billing 命令上的 --start-now,或控制台计费页面上的勾选框),绝不由智能体提出,结果中给出的命令也会在那里带上 --start-now。
  • 机密不让模型碰到:在这里部署的应用(cube_deploy、project_deploy)不会从这个服务器得到任何机密或文件,它的 env 只能引用共享变量,拉取镜像的机密只会发给为它配置的镜像仓库 (GLAC_MCP_IMAGE_PULL_SECRETS=GHCR=ghcr.io,HUB=docker.io)。

设置

变量 作用 默认值
GLAC_API_URL, GLAC_API_KEY API 的地址和密钥 https://api.glac.ai;没有密钥
GLAC_MCP_IMAGE 它创建的沙箱所用的镜像 平台的默认镜像
GLAC_MCP_IMAGE_PULL_SECRETS 模型可以指定的拉取机密,每个对应一个镜像仓库 无:只能用公开镜像
GLAC_MCP_PREFIX 它创建的一切(沙箱、快照、云盘、应用)的名称前缀;它只能看到这些 无
GLAC_MCP_WAIT_SECONDS 一次调用等待命令多久 45
GLAC_MCP_OUTPUT_BYTES 一次调用最多返回多少输出或文件内容 16384
GLAC_SSH_GATEWAY SSH 网关,用于它生成的 ssh 命令行 无
GLAC_MCP_LOG 1 表示把每次工具调用记录到 stderr(通过 HTTP 时,每个请求也会记录) 关闭
GLAC_MCP_HTTP_ORIGINS 通过 HTTP 时:除本机外,浏览器可以从哪些网页主机调用它 无
GLAC_MCP_PUBLIC_URL 通过 HTTP 时:客户端访问它所用的地址,会写进受保护资源元数据,访问令牌的受众 (audience) 也必须是这个地址 http://<listen address>/mcp
GLAC_MCP_AUTHORIZATION_SERVER 通过 HTTP 时:除密钥外,它还接受哪个授权服务器签发的访问令牌(即签发方 issuer),会写进受保护资源元数据 无:只接受密钥

它基于官方的 MCP TypeScript SDK 构建,使用 2026-07-28 版协议;为了兼容较旧的客户端,也支持 2025-11-25、2025-06-18、2025-03-26 和 2024-11-05 版的 initialize 握手:每个连接只用一个版本,即客户端建立连接时用的那个。暂不支持:存储卷的工具(云盘底层的磁盘)、终端 (pty)、沙箱自身的环境,以及从快照创建沙箱。

导航

输入以搜索……

↑↓ 切换↵ 选择Esc 关闭