basicdeploy-mcp
Advanced tools
+1
-1
| { | ||
| "name": "basicdeploy-mcp", | ||
| "version": "1.0.6", | ||
| "version": "1.0.7", | ||
| "description": "MCP server for BasicDeploy - lets AI coding agents deploy and manage containers", | ||
@@ -5,0 +5,0 @@ "type": "module", |
+20
-0
@@ -52,2 +52,20 @@ <p align="center"><img src="./logo.svg" width="96" alt="BasicDeploy"></p> | ||
| OpenAI Codex CLI: | ||
| ```bash | ||
| codex mcp add basicdeploy \ | ||
| --env BASICDEPLOY_API_KEY=bd_your_api_key \ | ||
| --env BASICDEPLOY_URL=https://basicdeploy.com \ | ||
| -- npx -y basicdeploy-mcp@latest | ||
| ``` | ||
| or add it directly to `~/.codex/config.toml`: | ||
| ```toml | ||
| [mcp_servers.basicdeploy] | ||
| command = "npx" | ||
| args = ["-y", "basicdeploy-mcp@latest"] | ||
| env = { BASICDEPLOY_API_KEY = "bd_your_api_key", BASICDEPLOY_URL = "https://basicdeploy.com" } | ||
| ``` | ||
| ### Environment variables | ||
@@ -71,2 +89,4 @@ | ||
| | `set_always_on` | `containerId`, `enabled` | Turn a container's 24/7 always‑on flag on/off. | | ||
| | `wake_container` | `containerId` | Wake a slept container so it serves traffic again. | | ||
| | `sleep_container` | `containerId` | Sleep a running container to free memory (wakes on next request). | | ||
| | `get_account` | — | Your plan, container limit (plan + add‑ons), selectable memory sizes, storage limit, and add‑ons. | | ||
@@ -73,0 +93,0 @@ | `share_container` | `containerId`, `email`, `expiresInHours?` | Share a container with another user by email (they get a sign‑in link). Omit `expiresInHours` for an unlimited share. | |
+18
-0
@@ -100,2 +100,20 @@ // Thin REST client for the BasicDeploy API. | ||
| /** | ||
| * Wake a slept container (POST /api/containers/{id}/wake): start it so it serves | ||
| * traffic again. A no-op if already running. Returns the updated container. | ||
| * (Any web request to its public URL also wakes it automatically.) | ||
| */ | ||
| export function wakeContainer(containerId) { | ||
| return request(`/api/containers/${encodeURIComponent(containerId)}/wake`, { method: "POST" }); | ||
| } | ||
| /** | ||
| * Sleep a running container (POST /api/containers/{id}/sleep): stop it to free RAM | ||
| * while keeping its volume and routing, so it wakes again on the next request. | ||
| * Returns the updated container. | ||
| */ | ||
| export function sleepContainer(containerId) { | ||
| return request(`/api/containers/${encodeURIComponent(containerId)}/sleep`, { method: "POST" }); | ||
| } | ||
| /** | ||
| * The account's plan, limits and add-ons (GET /api/auth/me): plan tier, container | ||
@@ -102,0 +120,0 @@ * limit (base + add-ons), selectable memory sizes, storage limit, and how many |
+40
-1
@@ -77,2 +77,31 @@ #!/usr/bin/env node | ||
| { | ||
| name: "wake_container", | ||
| description: | ||
| "Wake a slept container so it serves traffic again (start it). A no-op if it is already " + | ||
| "running. Note: any web request to the container's public URL also wakes it automatically. " + | ||
| "Returns the updated container.", | ||
| inputSchema: { | ||
| type: "object", | ||
| properties: { | ||
| containerId: { type: "string", description: "The container's UUID." }, | ||
| }, | ||
| required: ["containerId"], | ||
| additionalProperties: false, | ||
| }, | ||
| }, | ||
| { | ||
| name: "sleep_container", | ||
| description: | ||
| "Sleep a running container: stop it to free memory while keeping its volume, database, and " + | ||
| "public URL, so it wakes again on the next request. Returns the updated container.", | ||
| inputSchema: { | ||
| type: "object", | ||
| properties: { | ||
| containerId: { type: "string", description: "The container's UUID." }, | ||
| }, | ||
| required: ["containerId"], | ||
| additionalProperties: false, | ||
| }, | ||
| }, | ||
| { | ||
| name: "get_account", | ||
@@ -236,2 +265,12 @@ description: | ||
| case "wake_container": { | ||
| const c = await api.wakeContainer(args.containerId); | ||
| return text(`Woke ${c.subdomain} (status: ${c.status}).\n${containerSummary(c)}`); | ||
| } | ||
| case "sleep_container": { | ||
| const c = await api.sleepContainer(args.containerId); | ||
| return text(`Slept ${c.subdomain} (status: ${c.status}).\n${containerSummary(c)}`); | ||
| } | ||
| case "get_account": { | ||
@@ -329,3 +368,3 @@ const me = await api.getAccount(); | ||
| const server = new Server( | ||
| { name: "basicdeploy-mcp", version: "1.0.2" }, | ||
| { name: "basicdeploy-mcp", version: "1.0.7" }, | ||
| { capabilities: { tools: {} } } | ||
@@ -332,0 +371,0 @@ ); |
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
27029
11.17%520
11.35%108
22.73%