{"_id":"@andinolabs/nebula-mcp","name":"@andinolabs/nebula-mcp","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@andinolabs/nebula-mcp","version":"1.0.0","publishConfig":{"access":"public"},"description":"MCP server for the Nebula Control Plane API","type":"module","main":"dist/index.js","bin":{"nebula-mcp":"dist/index.js"},"engines":{"node":">=18"},"repository":{"type":"git","url":"git+https://github.com/andinolabs-tech/ai-agent-army.git"},"license":"MIT","keywords":["mcp","nebula","claude"],"scripts":{"build":"tsc","prepublishOnly":"pnpm run build","dev":"tsx index.ts","start":"node dist/index.js"},"dependencies":{"@modelcontextprotocol/sdk":"^1.12.0","zod":"^3.23.8"},"devDependencies":{"@types/node":"^22.0.0","tsx":"^4.19.0","typescript":"^5.5.0"},"gitHead":"441c4bc8cf7553baf386fac398f45f493f0645fc","_id":"@andinolabs/nebula-mcp@1.0.0","bugs":{"url":"https://github.com/andinolabs-tech/ai-agent-army/issues"},"homepage":"https://github.com/andinolabs-tech/ai-agent-army#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-lupgmRSnoCNaLMlFTeAfSHixfO5zCZOfTU4F7Vio8iT8k8kptvJW46eK0p7jBx148U1FkBM2rS7jpT/hrs8z3A==","shasum":"fed8846813ca3e7dc474f3605f62c24d6a3d5c62","tarball":"https://registry.npmjs.org/@andinolabs/nebula-mcp/-/nebula-mcp-1.0.0.tgz","fileCount":3,"unpackedSize":30582,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDcYVzbVBLOosIKezlZshEx/N01vI3I5+WOIYBaKEv+6wIhANM5VRm7rM4BM7TOaPD+FeSAc2WcAvlw38uPEI617Fjy"}]},"_npmUser":{"name":"seadiaz_andinolabs","email":"sebastian@andinolabs.com"},"directories":{},"maintainers":[{"name":"seadiaz_andinolabs","email":"sebastian@andinolabs.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nebula-mcp_1.0.0_1779463438166_0.4576034463345986"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-22T15:23:58.037Z","1.0.0":"2026-05-22T15:23:58.305Z","modified":"2026-05-22T15:23:58.489Z"},"maintainers":[{"name":"seadiaz_andinolabs","email":"sebastian@andinolabs.com"}],"description":"MCP server for the Nebula Control Plane API","homepage":"https://github.com/andinolabs-tech/ai-agent-army#readme","keywords":["mcp","nebula","claude"],"repository":{"type":"git","url":"git+https://github.com/andinolabs-tech/ai-agent-army.git"},"bugs":{"url":"https://github.com/andinolabs-tech/ai-agent-army/issues"},"license":"MIT","readme":"# nebula-mcp\n\nMCP server for the **Nebula Control Plane API**. Install via npm — no clone or local build required.\n\n## Quick start\n\nAdd one entry to your MCP config (Claude Desktop, Claude Code `.mcp.json`, or Cursor):\n\n```json\n{\n  \"mcpServers\": {\n    \"nebula\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@andinolabs/nebula-mcp\"],\n      \"env\": {\n        \"NEBULA_API_URL\": \"https://admin.nebula.andinolabs.ai\"\n      }\n    }\n  }\n}\n```\n\n`npx -y` fetches and caches the package on first use.\n\nOr via Claude Code CLI:\n\n```bash\nclaude mcp add nebula -- npx -y @andinolabs/nebula-mcp\n```\n\nSet `NEBULA_API_URL` in the environment when adding if your control plane URL differs.\n\n## Environment variables\n\n| Var | Default | Description |\n|---|---|---|\n| `NEBULA_API_URL` | `http://localhost:8080` | Nebula Control Plane base URL |\n| `NEBULA_API_TOKEN` | _(empty)_ | Bearer token for headless/CI (optional) |\n\n## Authentication\n\n### Interactive login (default)\n\nWhen `NEBULA_API_TOKEN` is not set, the server opens your browser to complete an\nOAuth 2.0 + PKCE login on the first request. Tokens are persisted to\n`~/.config/nebula/tokens.json` and refreshed automatically. The browser only\nre-opens when the refresh token expires (~30–90 days).\n\n### Headless / CI\n\nSet `NEBULA_API_TOKEN` to a long-lived API key. This bypasses the browser flow\nentirely and no token file is read or written.\n\n## Tools exposed\n\n| Tool | Domain |\n|---|---|\n| `login` | Auth |\n| `health_check` | Health |\n| `list_apps` / `get_app` | Platform apps |\n| `list_clusters` / `get_cluster` | Platform clusters |\n| `list_tenants` / `get_tenant` / `create_tenant` | Catalog – Tenants |\n| `get_tenant_github_status` / `list_tenant_github_repos` | Catalog – GitHub |\n| `get_tenant_jira_status` / `list_tenant_jira_projects` | Catalog – Jira |\n| `list_environments` / `get_environment` | Catalog – Environments |\n| `list_applications` / `get_application` | Catalog – Applications |\n| `list_application_jira_issues` | Catalog – Jira Issues |\n| `list_cd_clusters` / `get_cd_cluster` | CD – Clusters |\n| `list_cd_pipelines` / `get_cd_pipeline` | CD – Pipelines |\n| `list_cloud_providers` | Cloud – Providers |\n| `list_cloud_resources` / `provision_cloud_resource` / `preview_terraform` | Cloud – Resources |\n| `list_capture_topics` / `get_capture_topic` | Capture – Topics |\n| `list_capture_sessions` / `get_capture_session_summary` | Capture – Sessions |\n\n## Development\n\nFor contributors working from this repository:\n\n```bash\npnpm install\npnpm run build\n```\n\nRegister a local build in MCP config:\n\n```json\n{\n  \"mcpServers\": {\n    \"nebula\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/claude-mcp/dist/index.js\"],\n      \"env\": {\n        \"NEBULA_API_URL\": \"http://localhost:8080\"\n      }\n    }\n  }\n}\n```\n\nHot-reload during development:\n\n```bash\nNEBULA_API_URL=http://localhost:8080 pnpm run dev\n```\n\n## Publishing\n\nPublished to the public npm registry under **@andinolabs** (`@andinolabs/nebula-mcp`).\n\nPublishing uses an **npm access token** only — no interactive login or 2FA OTP at publish time.\n\n### Create a publish token (one-time)\n\n1. Join the [andinolabs](https://www.npmjs.com/org/andinolabs) org on npm with publish permission.\n2. Open [Access Tokens](https://www.npmjs.com/settings/~/tokens) → **Generate New Token** → **Granular Access Token**.\n3. Configure:\n   - **Organizations:** `andinolabs` — **Read and write**\n   - **Packages:** `@andinolabs/nebula-mcp` (or all org packages)\n   - **Expiration:** per your security policy\n   - **Bypass 2FA for automation:** enabled (required for non-interactive publish)\n4. Copy the token (`npm_…`) — it is shown only once.\n\nStore the token in your password manager or CI secret `NPM_TOKEN`. Never commit it.\n\n### Publish locally\n\n```bash\nexport NPM_TOKEN=npm_xxxxxxxx\njust publish\n```\n\n### CI\n\nSet the same granular token as the `NPM_TOKEN` repository/organization secret; the publish recipe writes a temporary `.npmrc` and removes it on exit.\n","readmeFilename":"README.md","_rev":"1-f7fba74982cb6a02df50021e9716174c"}