Control Plane MCP
The control plane MCP server exposes 81 tools that map 1-to-1 with the REST API. Every tool runs through the same shared action layer, so authentication, authorization, and validation are identical on both transports.
Connection
Two ways to connect — use whichever fits your client:
| Method | URL / Command | Auth | Best for |
|---|---|---|---|
| Remote (HTTP) | https://api.oblien.com/mcp | X-Client-ID + X-Client-Secret headers | Web-based MCP clients, CI pipelines, remote agents |
| Local (stdio) | npx oblien-mcp | Saved credentials or env vars | IDE integrations (VS Code, Cursor) |
Both methods hit the same 81 tools with identical auth and validation.
Remote — Streamable HTTP
The control plane MCP server is available as a remote HTTP endpoint. Any MCP client that supports Streamable HTTP transport can connect directly — no local install required.
Endpoint: https://api.oblien.com/mcp
Authentication: Include your API credentials as HTTP headers on every request:
X-Client-ID: your-client-id
X-Client-Secret: your-client-secretOr use a bearer token:
Authorization: Bearer <token>Example — list tools:
curl -X POST https://api.oblien.com/mcp \
-H "X-Client-ID: your-client-id" \
-H "X-Client-Secret: your-client-secret" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}'MCP client config (HTTP transport):
{
"mcpServers": {
"oblien": {
"url": "https://api.oblien.com/mcp",
"headers": {
"X-Client-ID": "your-client-id",
"X-Client-Secret": "your-client-secret"
}
}
}
}Local — Stdio
Run the MCP server as a local subprocess. This is the standard for IDE integrations — the server reads stdin/writes stdout.
Setup credentials (one-time):
npx oblien config set --client-id "your-client-id" --client-secret "your-client-secret"Credentials are stored in ~/.oblien/credentials.json (mode 0600, private to your user). Once saved, oblien-mcp picks them up automatically.
Run the server:
npx oblien-mcpAlternatively, pass credentials via environment variables (useful for CI or ephemeral environments):
export OBLIEN_CLIENT_ID="your-client-id"
export OBLIEN_CLIENT_SECRET="your-client-secret"
npx oblien-mcpCredential priority: environment variables override the saved config file.
IDE configuration
VS Code (Claude / Copilot)
Add to your .vscode/mcp.json:
{
"servers": {
"oblien": {
"command": "npx",
"args": ["oblien-mcp"]
}
}
}If you've already run npx oblien config set, no env block is needed — credentials are read from ~/.oblien/credentials.json automatically.
Alternatively, pass credentials explicitly:
{
"servers": {
"oblien": {
"command": "npx",
"args": ["oblien-mcp"],
"env": {
"OBLIEN_CLIENT_ID": "your-client-id",
"OBLIEN_CLIENT_SECRET": "your-client-secret"
}
}
}
}Cursor
Add to your Cursor MCP settings:
{
"mcpServers": {
"oblien": {
"command": "npx",
"args": ["oblien-mcp"]
}
}
}Or with explicit env vars:
{
"mcpServers": {
"oblien": {
"command": "npx",
"args": ["oblien-mcp"],
"env": {
"OBLIEN_CLIENT_ID": "your-client-id",
"OBLIEN_CLIENT_SECRET": "your-client-secret"
}
}
}
}Tool reference
All 81 tools are listed below, grouped by category. Each tool maps to a REST endpoint documented in the API Reference.
Tools
Core (10 tools)
Workspace CRUD, quota, and usage overview.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_create | Create a new workspace | POST /workspaces |
workspace_list | List workspaces (with filters) | GET /workspaces |
workspace_get | Get a single workspace | GET /workspaces/:id |
workspace_update | Update workspace settings | PUT /workspaces/:id |
workspace_delete | Delete a workspace | DELETE /workspaces/:id |
workspace_images | List available base images | GET /workspaces/images |
workspace_usage_global | Global usage across all workspaces | GET /workspaces/usage |
workspace_activity | Recent activity log | GET /workspaces/activity |
workspace_quota | Account quota and limits | GET /workspaces/quota |
workspace_estimate | Estimate cost before creating | GET /workspaces/estimate |
Overlay / Filesystem (6 tools)
Read, write, and manage the workspace overlay filesystem.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_overlay_list | List files in overlay | GET /workspaces/:id/overlay |
workspace_overlay_usage | Overlay disk usage | GET /workspaces/:id/overlay/usage |
workspace_overlay_read | Read a file from overlay | GET /workspaces/:id/overlay/files |
workspace_overlay_write | Write a file to overlay | POST /workspaces/:id/overlay/files |
workspace_overlay_resize | Resize overlay partition | PUT /workspaces/:id/overlay/resize |
workspace_overlay_sync | Sync overlay to persistent storage | POST /workspaces/:id/overlay/sync |
Power (5 tools)
Start, stop, pause, resume, and restart workspaces.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_start | Start a stopped workspace | POST /workspaces/:id/start |
workspace_stop | Stop a running workspace | POST /workspaces/:id/stop |
workspace_restart | Restart a workspace | POST /workspaces/:id/restart |
workspace_pause | Pause (suspend) a workspace | POST /workspaces/:id/pause |
workspace_resume | Resume a paused workspace | POST /workspaces/:id/resume |
Lifecycle (6 tools)
Control workspace lifetime, TTL, and permanent/temporary status.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_lifecycle_get | Get lifecycle state | GET /workspaces/:id/lifecycle |
workspace_lifecycle_permanent | Make workspace permanent | POST /workspaces/:id/lifecycle/permanent |
workspace_lifecycle_temporary | Make workspace temporary | POST /workspaces/:id/lifecycle/temporary |
workspace_lifecycle_ttl | Set TTL duration | PUT /workspaces/:id/lifecycle/ttl |
workspace_ping | Renew TTL (keep alive) | POST /workspaces/:id/ping |
workspace_lifecycle_destroy | Destroy and clean up | DELETE /workspaces/:id/lifecycle |
Logs (5 tools)
Retrieve and manage workspace logs.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_logs | Get recent logs | GET /workspaces/:id/logs |
workspace_logs_clear | Clear log buffer | DELETE /workspaces/:id/logs |
workspace_logs_list | List log files | GET /workspaces/:id/logs/list |
workspace_logs_file | Get a specific log file | GET /workspaces/:id/logs/file/:name |
workspace_logs_boot | Get boot logs (SSE stream) | GET /workspaces/:id/logs/stream/boot |
Metrics (3 tools)
System info, config, and real-time stats.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_stats | CPU, memory, disk stats | GET /workspaces/:id/stats |
workspace_info | System information | GET /workspaces/:id/info |
workspace_config | Running configuration | GET /workspaces/:id/config |
Network (3 tools)
Network policy and outbound IP configuration.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_network_get | Get network settings | GET /workspaces/:id/network |
workspace_network_update | Update network policy | PATCH /workspaces/:id/network |
workspace_network_ip | Assign outbound IP | POST /workspaces/:id/network/ip |
Snapshots & Archives (7 tools)
Point-in-time snapshots and long-term archives.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_snapshot_create | Create a snapshot | POST /workspaces/:id/snapshot |
workspace_snapshot_restore | Restore from snapshot | POST /workspaces/:id/restore |
workspace_archive_create | Create an archive | POST /workspaces/:id/archives |
workspace_archive_list | List archives | GET /workspaces/:id/archives |
workspace_archive_get | Get archive details | GET /workspaces/:id/archives/:archiveId |
workspace_archive_delete | Delete an archive | DELETE /workspaces/:id/archives/:archiveId |
workspace_archive_delete_all | Delete all archives | DELETE /workspaces/:id/archives |
SSH (5 tools)
SSH access management.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_ssh_status | Get SSH status | GET /workspaces/:id/ssh |
workspace_ssh_enable | Enable SSH | POST /workspaces/:id/ssh/enable |
workspace_ssh_disable | Disable SSH | POST /workspaces/:id/ssh/disable |
workspace_ssh_password | Set SSH password | POST /workspaces/:id/ssh/password |
workspace_ssh_key | Set authorized key | POST /workspaces/:id/ssh/key |
Workloads (11 tools)
Manage long-running processes inside workspaces.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_workload_create | Create a workload | POST /workspaces/:id/workloads |
workspace_workload_list | List workloads | GET /workspaces/:id/workloads |
workspace_workload_get | Get workload details | GET /workspaces/:id/workloads/:wid |
workspace_workload_update | Update a workload | PATCH /workspaces/:id/workloads/:wid |
workspace_workload_delete | Delete a workload | DELETE /workspaces/:id/workloads/:wid |
workspace_workload_delete_all | Delete all workloads | DELETE /workspaces/:id/workloads |
workspace_workload_start | Start a workload | POST /workspaces/:id/workloads/:wid/start |
workspace_workload_stop | Stop a workload | POST /workspaces/:id/workloads/:wid/stop |
workspace_workload_status | Get workload status | GET /workspaces/:id/workloads/:wid/status |
workspace_workload_logs | Get workload logs | GET /workspaces/:id/workloads/:wid/logs |
workspace_workload_stats | Get workload resource stats | GET /workspaces/:id/workloads/:wid/stats |
Metadata (2 tools)
Custom key-value metadata on workspaces.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_metadata_get | Get all metadata | GET /workspaces/:id/metadata |
workspace_metadata_update | Set/update metadata | PATCH /workspaces/:id/metadata |
Resources (2 tools)
CPU, memory, and disk resource allocation.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_resources_get | Get resource allocation | GET /workspaces/:id/resources |
workspace_resources_update | Update resources (hot resize) | PATCH /workspaces/:id/resources |
Usage (6 tools)
Per-workspace billing, usage tracking, and credits.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_usage | Get usage breakdown | GET /workspaces/:id/usage |
workspace_usage_totals | Get usage totals | GET /workspaces/:id/usage/totals |
workspace_usage_tracking_start | Start usage tracking | POST /workspaces/:id/usage/tracking/start |
workspace_usage_tracking_stop | Stop usage tracking | POST /workspaces/:id/usage/tracking/stop |
workspace_credits_chart | Credits usage chart data | GET /workspaces/:id/usage/credits/chart |
workspace_usage_wipe | Wipe usage data | DELETE /workspaces/:id/usage |
Public Access (3 tools)
Expose workspace ports to the internet.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_public_access_list | List exposed ports | GET /workspaces/:id/public-access |
workspace_public_access_expose | Expose a port publicly | POST /workspaces/:id/public-access |
workspace_public_access_revoke | Revoke public access | DELETE /workspaces/:id/public-access/:port |
Runtime API Access (6 tools)
Enable and manage the HTTP API running inside workspaces.
| Tool | Description | REST equivalent |
|---|---|---|
workspace_api_access_status | Get API access status | GET /workspaces/:id/runtime-api-access |
workspace_api_access_enable | Enable Runtime API | POST /workspaces/:id/runtime-api-access/enable |
workspace_api_access_disable | Disable Runtime API | POST /workspaces/:id/runtime-api-access/disable |
workspace_api_access_token | Get gateway connection token | GET /workspaces/:id/runtime-api-access/token |
workspace_api_access_token_rotate | Rotate connection token | POST /workspaces/:id/runtime-api-access/token |
workspace_api_access_token_raw | Get raw connection token | GET /workspaces/:id/runtime-api-access/token/raw |
Details (1 tool)
| Tool | Description | REST equivalent |
|---|---|---|
workspace_details | Full workspace details (combined info) | GET /workspaces/:id/details |
Namespaces
All tools operate within the authenticated user's namespace by default. To target a specific namespace, pass namespace as a tool parameter:
{
"name": "workspace_list",
"arguments": {
"namespace": "team-backend"
}
}The API key must have permission on the target namespace.
Error handling
Tool calls that fail return a standard MCP error object:
{
"isError": true,
"content": [
{
"type": "text",
"text": "{\"error\":\"workspace_not_found\",\"message\":\"Workspace ws_abc123 not found\"}"
}
]
}HTTP status codes from the underlying API are mapped to descriptive error messages. Common errors:
| Error | Cause |
|---|---|
auth_failed | Missing or invalid credentials |
workspace_not_found | Invalid workspace ID or no access |
forbidden | Key lacks required scope |
quota_exceeded | Account resource limit reached |