Update and undo
Keep the server, SDK and plugin on one version, update them, and remove Parallax without leaving anything behind.
Keep the versions equal
While the protocol major is 0, the MCP server, the SDK and the build plugin must have the same version. The Parallax versions row of doctor compares the server with the installed packages and the SDK running in the app, and names the older side and the command.
The server is older:
npx -y @parallax-rn/mcp@<newer> setup <claude|codex> --updateRun it in any folder. It shows the change to the registration and the skill first.
The app is older:
npm install -D @parallax-rn/sdk@<server version> @parallax-rn/babel-plugin@<server version>Run it in the app's project root, and use yarn add -D, pnpm add -D or bun add -d to match your lockfile. Then restart Metro with npx react-native start --reset-cache (bare React Native) or npx expo start -c (Expo). setup run in the project prints this note too.
An existing registration of another version of Parallax, or of a development checkout, changes only with --update.
Undo
npx -y @parallax-rn/mcp@0.1.0-beta.2 setup claude --undo # or: setup codex --undoIt shows exactly what it will remove (the registration, the skill, and the directories it made, if empty again) and asks first; --yes skips only the question. It removes nothing that is not Parallax's: a registration whose command is not Parallax's and a skill without Parallax's marker are left alone.
Optional parts are removed only when you add their flag to the undo too:
--hookremoves the hooks (all of Parallax's, and nothing else);--answer-approvalsremoves only the answering entry and puts the observe-only entry back when--hookis installed;--strict-approvalsremoves the strict marker file and the settings it wrote;--allow-read-only-toolsremoves every read-only entry listed in its diff. It cannot tell whether one was there before setup (setup told you when it was).
Expected leftovers, harmless
Claude Code's own claude mcp remove, which undo uses, leaves two things that are its own bookkeeping, not Parallax's:
- an empty
"mcpServers": {}in~/.claude.json(in project scope, a.mcp.jsonholding only that empty object is deleted by undo); - a backup copy of
.claude.jsonin~/.claude/backups/, made whenever Claude Code rewrites that file.
Neither contains anything of Parallax. Codex leaves nothing: an empty config.toml that undo would leave is deleted.
In the app
npm uninstall @parallax-rn/sdk @parallax-rn/babel-pluginRun it in the app's project root. Delete the start() line and the plugin line from babel.config.js, then restart Metro with --reset-cache (see above).