From bd289f33502a49121166ebbba2bbd3b349f5fe17 Mon Sep 17 00:00:00 2001 From: chenchen Date: Wed, 4 Nov 2026 12:33:09 +0800 Subject: [PATCH 1/2] Move box to https://mcp.box.simular.ai/mcp and migrate old relay entries The box MCP server moved from relay.simular.cloud to mcp.box.simular.ai. The old address now returns protected-resource metadata naming the new URL, so MCP clients refuse to sign in through it. - CLI default URL, Claude Code / Hermes / dsh plugin configs and docs point at the new URL; plugin versions bumped (claude 0.1.1, hermes 0.1.1, dsh 0.2.1). - connect rewrites a box entry at the old address (it stays "ours"), and says the app may ask to sign in again. For Claude Code it runs `claude plugin marketplace update` + `claude plugin update` when the installed plugin still points at the old URL. - doctor flags an entry at the old address, and an endpoint whose metadata names a different resource. - Install matrix seeds a box at the old address for every client and, for Claude Code, installs the old plugin from a local git marketplace built from this checkout, so it tests this branch's plugin and the update path. Refs #18 Co-Authored-By: Claude Opus 5.5 --- README.md | 8 +-- claude/.claude-plugin/plugin.json | 2 +- claude/.mcp.json | 2 +- cli/README.md | 10 ++-- cli/e2e/install-matrix.mjs | 81 ++++++++++++++++++++++++------ cli/src/cli.js | 17 ++++++- cli/src/clients/claude-code.js | 23 +++++++-- cli/src/constants.js | 25 +++++++-- cli/src/probe.js | 11 ++++ cli/test/cli.test.js | 52 +++++++++++++++++-- cli/test/clients.test.js | 27 +++++++++- cli/test/fixtures/codex.after.toml | 2 +- cli/test/helpers.js | 8 ++- dsh/README.md | 4 +- dsh/cordis.patch.yml | 2 +- dsh/package.json | 2 +- hermes/README.md | 4 +- hermes/mcp.json | 2 +- hermes/plugin.json | 2 +- 19 files changed, 232 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index ee75146..5a5df3e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [box](https://box.simular.ai) gives your AI agent a computer of its own: a cloud Linux desktop with Chrome and a shell that it drives over MCP, while your own computer stays free. You can watch it live and take over at https://box.simular.ai/box. -Most agents need no plugin: add the MCP server `https://relay.simular.cloud/mcp` and sign in once (see https://box.simular.ai/install). This repository holds a package for each agent that installs box its own way. Each folder stands alone and is released through that agent's channel. +Most agents need no plugin: add the MCP server `https://mcp.box.simular.ai/mcp` and sign in once (see https://box.simular.ai/install). This repository holds a package for each agent that installs box its own way. Each folder stands alone and is released through that agent's channel. | Agent | Folder | Sign-in | Install | | --- | --- | --- | --- | @@ -13,11 +13,11 @@ Most agents need no plugin: add the MCP server `https://relay.simular.cloud/mcp` ## Adding an agent -Add a folder named after the agent with its own manifest, MCP config and, where the agent supports skills, a copy of `claude/skills/box/SKILL.md`. Point it at `https://relay.simular.cloud/mcp`. Use OAuth sign-in where the agent supports it; otherwise read a personal key from an environment variable or the agent's own credentials store, never from a file in the package. Add a row above. +Add a folder named after the agent with its own manifest, MCP config and, where the agent supports skills, a copy of `claude/skills/box/SKILL.md`. Point it at `https://mcp.box.simular.ai/mcp`. Use OAuth sign-in where the agent supports it; otherwise read a personal key from an environment variable or the agent's own credentials store, never from a file in the package. Add a row above. ## Releasing -- `claude/`: bump `version` in `claude/.claude-plugin/plugin.json`; Claude Code picks it up from the marketplace. +- `claude/`: bump `version` in `claude/.claude-plugin/plugin.json`. Claude Code doesn't auto-update third-party marketplaces: users get it with `/plugin marketplace update simular-box` and `/plugin update box@simular-box`, or with `npx @simular-ai/box connect`. - `dsh/`: bump `version` in `dsh/package.json`, then push a tag `dsh-vX.Y.Z`. The release workflow attaches `dsh-box.tgz`. - `hermes/`: bump `version` in `hermes/plugin.json`. Users copy the folder by hand until box is in the Hermes plugin catalog. -- `cli/`: bump `version` in `cli/package.json`, then push a tag `cli-vX.Y.Z`. The `publish-cli.yml` workflow tests it and publishes `@simular-ai/box` to npm through trusted publishing (OIDC), with provenance; the one-time npm setup is in [cli/README.md](cli/README.md#releasing). When the box endpoint moves, change `DEFAULT_MCP_URL` in `cli/src/constants.js` and release. +- `cli/`: bump `version` in `cli/package.json`, then push a tag `cli-vX.Y.Z`. The `publish-cli.yml` workflow tests it and publishes `@simular-ai/box` to npm through trusted publishing (OIDC), with provenance; the one-time npm setup is in [cli/README.md](cli/README.md#releasing). When the box endpoint moves, change `DEFAULT_MCP_URL` in `cli/src/constants.js`, add the old host to `OLD_HOSTS` there, change the URL in every plugin folder, and release each one. diff --git a/claude/.claude-plugin/plugin.json b/claude/.claude-plugin/plugin.json index 1f6ac39..b512aab 100644 --- a/claude/.claude-plugin/plugin.json +++ b/claude/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "box", "displayName": "box by Simular", - "version": "0.1.0", + "version": "0.1.1", "description": "Give Claude a computer of its own: a cloud Linux desktop with Chrome and a shell that it drives over MCP, while your own computer stays free. You sign in once in the browser; no key to paste.", "author": { "name": "Simular", diff --git a/claude/.mcp.json b/claude/.mcp.json index 4453c09..25bd95c 100644 --- a/claude/.mcp.json +++ b/claude/.mcp.json @@ -2,7 +2,7 @@ "mcpServers": { "box": { "type": "http", - "url": "https://relay.simular.cloud/mcp" + "url": "https://mcp.box.simular.ai/mcp" } } } diff --git a/cli/README.md b/cli/README.md index bc67cbd..7604d7e 100644 --- a/cli/README.md +++ b/cli/README.md @@ -6,7 +6,7 @@ Connect [box](https://box.simular.ai) to your AI apps in one command. box gives npx @simular-ai/box connect ``` -The CLI finds the AI apps on this computer, asks which ones should use box, and adds the box MCP server (`https://relay.simular.cloud/mcp`) to each one in its own format. Other servers and settings in those files are left alone, each changed file gets a backup next to it (`*.box-backup-