2026-07-28 and the 2025 revisions, and none of the commands below carry a protocol version, so none of them change with the revision your client picks. See The asobeast MCP server.
Either way the Settings card writes the configuration for you. The manual path is the same thing typed by hand.
Connect to the hosted endpoint
Mint a read only token
Copy the hosted snippet
- Claude Code command
- Claude Code JSON
- Claude Desktop
- Codex
- Cursor
- VS Code
- Gemini CLI
- Windsurf
- Any other client
asob_ token as the REST API, so there is no second credential to manage. Every request is authenticated, entitled and rate limited exactly like a REST call. See Rate limits and quotas.
A token is the only credential it takes. A browser session cookie is answered with 401 even when it belongs to a signed in owner, so the endpoint carries no ambient authority a page could borrow.
The quick path for the stdio server
Open the MCP server card in Settings
Click connect an agent and name a token
Replace the entrypoint with an absolute path
apps/mcp/dist/index.js.The manual path
Build the server
apps/mcp/dist/index.js.Mint a personal API token
Register the server with your client
Client configuration for stdio
- Claude Code
- Claude Desktop
- Codex
- Cursor
- Any stdio client
Choosing ASOBEAST_API_URL
ASOBEAST_API_URL is resolved on the machine the agent runs on, not by a browser. That is the second most common failure, because the value that works in your address bar is often not the value the agent needs.
https://your-host/api/backend is the only route in from another machine. The proxy forwards the bearer header to the API unchanged. See How asobeast works.
It defaults to http://localhost:4000, and an empty value counts as unset, so a template that leaves it blank still gets the default. There is no default for the token.
The value is the REST API, so it never ends in /mcp. The hosted endpoint is a different transport, and the server refuses a URL copied from its snippet with the value to set instead.
Plain http:// to a host other than this machine logs a warning at startup, because the token travels unencrypted. It still connects, since a private network you trust is a legitimate place to run it. Use https:// everywhere else.
Verify the connection
At startup the server checks its configuration and calls/auth/me on your instance before it registers a single tool. Each of these outcomes ends the process with a non zero exit status and a message that names the variable to change.
Troubleshooting
MODULE_NOT_FOUND on startup
MODULE_NOT_FOUND on startup
pnpm build and register the absolute path to apps/mcp/dist/index.js.Invalid configuration: : Invalid input from claude mcp add-json
Invalid configuration: : Invalid input from claude mcp add-json
"type": "http", as the Claude Code JSON tab shows.spawn npx ENOENT in Claude Desktop
spawn npx ENOENT in Claude Desktop
PATH, so it cannot find npx when Node was installed by a version manager. Install Node system wide, or set command to the absolute path that which npx prints in your terminal.The server shows but has no tools
The server shows but has no tools
mcpServers object pasted inside an existing mcpServers object. Keep a single mcpServers key with asobeast directly inside it.spawn node ENOENT
spawn node ENOENT
PATH, so they cannot find node when it was installed by a version manager. Set command to the absolute path that which node prints in your terminal.The process exits immediately
The process exits immediately
The tools do not appear in the client
The tools do not appear in the client
The agent cannot reach localhost
The agent cannot reach localhost
localhost there means that machine. Set ASOBEAST_API_URL to your public web origin plus /api/backend, or use the hosted endpoint instead, which needs no local process at all.Connecting spends requests from the MCP budget
Connecting spends requests from the MCP budget
server/discover request before anything else, and it counts against your workspace’s mcpRequestsPerMinute budget like any other request. Connecting and listing the tools costs two requests, so a client that reconnects often spends more of the budget than one that stays connected. See Rate limits and quotas.The hosted endpoint answers 401, 402, 403, 405 or 429
The hosted endpoint answers 401, 402, 403, 405 or 429
401 means the token is missing, revoked or expired, and it carries a WWW-Authenticate: Bearer challenge. A 402 means the workspace has no live plan. A 403 means the workspace is suspended. A 405 means the client used GET or DELETE, which a stateless server does not offer. The response names POST in its Allow header, and a conforming client carries on over POST. A 429 means a rate limit is spent, and the response says when it reopens. See Rate limits and quotas.The client asks you to sign in, or says OAuth discovery failed
The client asks you to sign in, or says OAuth discovery failed
401 and the client went looking for OAuth metadata, which every /.well-known path on your instance answers with a JSON 404. Check that the header is named Authorization, that its value starts with Bearer followed by the asob_ token, and, for a .mcp.json that reads the token from a variable, that the variable is exported in the shell that starts the client.