The Nimbus Land connector lets Claude see and operate your apps from inside a conversation: on claude.ai, in Claude Desktop, on mobile and in Claude Code. Ask "is the shop app up?", "what did the last build say?" or "deploy main", and Claude answers from your real apps, acting as you, in one organization you choose.
The connector is a remote MCP server at https://nimbusland.ca/mcp. You sign in with your Nimbus Land account on a standard consent page; no API key is copied anywhere.
Claude runs on Anthropic's infrastructure, outside Canada. What the connector returns becomes part of your conversation with Claude; see What is sent to Anthropic.
Adding the connector#
On claude.ai and Claude Desktop. If Nimbus Land appears in Claude's connector directory, choose Connect there. Otherwise add it by URL:
- Settings → Connectors → Add custom connector.
- Name it
Nimbus Land, URLhttps://nimbusland.ca/mcp. Leave the OAuth client fields empty: Claude identifies itself automatically. - Choose Connect and sign in to Nimbus Land in the window that opens. If you are already signed in to the console, you go straight to the consent page.
In Claude Code:
claude mcp add --transport http nimbus https://nimbusland.ca/mcp
Then run /mcp in Claude Code and choose nimbus to sign in. Your browser opens the consent page, and Claude Code receives the result on a localhost callback.
The Nimbus Land Claude plugin adds the same connector plus a skill that teaches Claude Code the nimbus CLI, for work that needs your local project.
The consent page#
The consent page in the Nimbus Land console shows:
- Which client is asking, by its own name (for example "Claude" or "Claude Code"), and where it will send you back to.
- An organization picker. Your current organization is preselected. A connection acts in exactly one organization.
- What it will be able to do, in plain language:
- See your apps, builds, logs and variable names
- Deploy and rebuild apps
- Change environment variables and run one-off commands
- See your managed databases and their status
- Run read-only queries against your managed databases
- A warning for Claude Code. When the sign-in can only return to
localhost, the page says the connection returns to an app running on your own computer. Only continue if you started that sign-in yourself.
Approving the same client for the same organization again reuses your existing grant. A connection approved before the database tools existed doesn't have database access: Connected apps in your account settings says so, and reconnecting from Claude adds it. Approvals are recorded in your organization's audit log.
Approving never widens what you can do. Every tool call is checked against both the access you approved and your current role in the organization, so a Member who approves everything still can't run commands.
What Claude can do#
Read-only tools never change anything. Tools that make changes are marked as such, so Claude asks you before calling them.
| Tool | What it does | |
|---|---|---|
list_apps | read-only | Every app in the organization: status, address, stack, last deploy |
get_app | read-only | One app: status, address, live release, instances, connected repository and branch, custom domain, recent builds, console link |
get_app_logs | read-only | Recent runtime log lines (at most 200), optionally for one environment and one instance, with a console link for more |
list_builds | read-only | An app's builds: status, source, times, failure reason |
get_build | read-only | One build: status, source, start and finish, failure reason, console link |
get_build_logs | read-only | The end of a build's log, with a console link for the full log |
get_env | read-only | Environment variable names and values; secret values are masked |
get_app_health | read-only | A one-call summary: open incidents, alert rules, traffic figures, error groups and the slowest and failing operations |
get_traffic | read-only | Request rate, error rate, response times and the most recent failed requests |
get_analytics | read-only | Visitors and page views for today, 7d, 30d or 12m: top pages, sources and devices |
get_browser_vitals | read-only | Core Web Vitals, page-load phases and the slowest resources, when browser measurement is on |
list_errors | read-only | The error groups seen in a time window: title, kind, location, counts, state |
get_error | read-only | One error group: its trend and recent samples with stack traces |
list_traces | read-only | The newest traces, optionally filtered by operation or to failures only |
get_trace | read-only | One trace as a tree of spans, with durations, failures and attributes |
list_incidents | read-only | An app's recent alert incidents, open ones first |
list_databases | read-only | Every managed Postgres database: status, Postgres version, connected apps, console link |
query_database | read-only | Runs one read-only SQL statement on a managed database and returns the rows (see Limits) |
deploy_app | makes changes | Builds the app's connected repository and branch, or a Git URL and revision you give |
rebuild | makes changes | Re-runs the app's newest build with the same source |
set_env | makes changes | Sets one or more variables, optionally as secrets; never echoes secret values |
run_command | makes changes | Starts a one-off command; returns its output if it finishes within about 10 seconds, otherwise the run id |
Apps are named the way the console names them. The monitoring tools read the same figures as the app's Monitoring and Analytics tabs (see Traffic and analytics and Errors) and answer for production unless you name another environment. Answers include a console link, so you can jump from the conversation to the full page.
Activity started from Claude shows in the console and the audit log as you "via Claude" (or whichever client you approved). Refusals use the console's own words: no permission for your role, app suspended, subscription past due, build queue full.
Limits#
- No source uploads. Deploys from Claude come from the app's connected repository or a Git URL. To deploy files that exist only on your machine, use
nimbus deploy. - One organization per connection. To work in another organization, connect again and pick it.
- Logs are capped at 200 lines per answer; the console has the rest.
- Secret values are never returned by any tool.
- Same permissions as your role. Owners and Admins can change variables, run commands, deploy and query databases. Members can read, deploy from a Git URL, and see databases, but not query them (deploying the connected repository needs the Manage apps permission, as in the console). A custom role gets exactly what it holds.
- Database queries are read-only and bounded.
query_databaseneeds the Connect to databases permission. It runs one statement in a read-only transaction, through a 15-minute database session opened for you "via Claude", which shows on the database's page and ends on its own. Writes are refused, results stop at 200 rows and about 64 KB, values longer than 500 characters are shortened, and a statement is cancelled after 15 seconds. Each query is recorded in the audit log with its statement and row count, never the rows. - Rate limits. Each connection has its own request budget, about two requests a second. Past it, calls are briefly refused and Claude retries.
- Not covered yet: writing to databases, volumes, buckets, custom domains, non-production environments (other than reading their logs and monitoring data), process types and billing. Use the console or the CLI for those.
Revoking access#
Connected apps in your account settings lists every grant: the client, the organization, the access granted, when it was created and last used. Revoke cuts it off immediately; Claude has to sign in again. Revoking is recorded in the audit log.
Organization owners and admins see every member's grants under Connected apps in the organization settings, and can revoke any of them. A grant also stops working when you leave the organization or your account is deactivated.
Removing the connector in Claude does not revoke the grant on our side. Revoke it in Nimbus Land as well.
What is sent to Anthropic#
Everything a tool returns goes to Claude as part of the conversation: app names, statuses, addresses, log lines, build logs, variable names and plain variable values, command output, query results. Anything you put in a tool argument (a variable value, a command, a SQL statement) does too.
- Secret values are never returned.
get_envmasks them andset_envnever echoes them. A value you ask Claude to set as a secret still passes through the conversation on its way in, so set real credentials in the console or withnimbus env set KEY=- --secretin your own terminal. - Logs are your app's own output. If your app logs personal data or credentials, those lines reach Claude when you ask for logs.
- Monitoring data is your app's and your visitors' content. Error messages, stack traces, span names and attributes, request paths, page URLs and referrers go to Claude when you ask about errors, traces or traffic. Lists are capped, each line is cut at 2,048 bytes, and a stack trace is cut at 50 lines.
- Database rows you query go to Claude. Whatever the selected columns hold (personal data, password hashes, tokens your app stores) reaches Anthropic. Select only the columns you need, or query from your own machine with
nimbus db shell. - Log, build and query output is data, not instructions. Claude is told so, but treat a conversation that suddenly wants to deploy or change variables after reading logs with suspicion.
- Nothing else. No bucket contents or volume data are exposed by the connector.
For anything sensitive, use the console. Nimbus Land's privacy policy is at nimbusland.ca/privacy.
For developers: the protocol#
Nimbus Land is an OAuth 2.1 authorization server for one resource, the MCP endpoint. Any MCP client that implements the standard discovery flow can connect.
| Method | Path | Purpose |
|---|---|---|
GET | /.well-known/oauth-authorization-server | Authorization-server metadata (RFC 8414) |
GET | /.well-known/oauth-protected-resource/mcp | Protected-resource metadata (RFC 9728) |
POST | /oauth/register | Dynamic Client Registration (RFC 7591) |
GET | /oauth/authorize | The consent page (authorization code with PKCE S256) |
POST | /oauth/token | Code exchange and refresh |
POST | /mcp | The MCP endpoint (Streamable HTTP, stateless) |
All URLs are on https://nimbusland.ca.
- Scopes:
apps:read,apps:deploy,apps:operate,databases:read,databases:query. A token's effective permissions are its granted scopes intersected with the user's current role, checked on every request. - Clients are public clients, registered dynamically or identified by a client ID metadata document. Redirect URIs must be
https://claude.ai/api/mcp/auth_callbackor a loopbackhttp://localhost/callbackorhttp://127.0.0.1/callbackon any port. - Tokens: the access token is valid for one hour and works only on
/mcp; the refresh token is valid for thirty days and rotates on every use. Presenting a code or refresh token twice revokes the whole grant. - Tools: each tool carries
readOnlyHintordestructiveHint. A tool that can't do what was asked answers a normal result withisError: trueand the console's wording. Requests over a grant's rate limit get429.
Questions: support@nimbusland.ca.
Also available as Markdown.