Operate Nora over MCP
Run the Nora MCP server so Claude Code, Claude Desktop, Cursor, or any MCP client can deploy, inspect, and operate your agent fleet — “Claude, why is my agent stopped?” becomes a tool call against your own control plane.The
@noraai/mcp-server package exposes Nora’s public REST API as Model Context Protocol tools over stdio. It authenticates with the same workspace API keys the REST API and CLI use, so workspace scoping and scope-based permissions apply unchanged.
Prerequisites
- A running Nora control plane reachable over HTTPS.
- A workspace API key (Workspace → API Keys, or via the admin API). Scopes determine what the MCP tools can do:
agents:read+monitoring:read— all read toolsagents:write— deploy and lifecycle tools
- Node.js 20+ on the machine running the MCP client.
Connect a client
Configuration
| Variable | Required | Purpose |
|---|---|---|
NORA_API_URL | yes | Base URL of your Nora deployment (the public origin, e.g. https://nora.example.com) |
NORA_API_KEY | yes | Workspace API key (nora_…) |
NORA_MCP_ALLOW_DESTRUCTIVE | no | Set true to register the delete_agent tool. Off by default. |
NORA_API_URL/NORA_API_KEY are unset, the server falls back to NORA_HOST/NORA_TOKEN and then to the CLI’s ~/.nora/config.json, so nora login is sufficient setup for local use.
Tools
Read (requireagents:read / monitoring:read):
| Tool | What it returns |
|---|---|
list_agents | All agents in the key’s workspace with status, runtime family, deploy target, resources |
get_agent | One agent with live-reconciled container status |
get_agent_versions | Configuration version history |
get_platform_metrics | Fleet counts by status plus provisioning queue depth |
list_monitoring_events | Recent platform/agent events with type, search, and time filters |
get_agent_metrics | Time-series CPU/memory/network/disk/token metrics |
get_agent_metrics_summary | Aggregated metrics for one agent |
get_agent_cost | Pricing-aware token-cost rollup (default last 30 days) |
agents:write):
| Tool | Effect |
|---|---|
deploy_agent | Provision a new runtime (name, runtime family, deploy target, sandbox profile, vCPU/RAM/disk) |
start_agent / stop_agent / restart_agent | Lifecycle control |
redeploy_agent | Re-provision the container with current config |
delete_agent | Permanent removal — only registered when NORA_MCP_ALLOW_DESTRUCTIVE=true |
Example prompts
- “List my agents and tell me which ones aren’t running.”
- “Deploy an OpenClaw agent named research-assistant with 2 vCPU and 4 GB RAM, then watch it until it’s running.”
- “What did agent X cost in the last 7 days, and what model was the spend on?”
- “Show the last 20 events for the fleet and summarize anything unusual.”
Security notes
- The MCP server is a pure client of the REST API — it adds no endpoints and stores nothing. Revoking the API key cuts off access immediately.
- Use a key with only the scopes you need; a read-only key (
agents:read,monitoring:read) makes every tool safe. delete_agentstays unregistered unless explicitly enabled, so a model can’t be talked into destroying an agent by default.

