{"serverInfo":{"name":"massed-compute-vm-marketplace","version":"1.0.0","title":"Massed Compute VM Marketplace"},"protocol":{"name":"Model Context Protocol","version":"2026-07-28","supportedVersions":["2026-07-28","2025-06-18"],"transport":"http"},"authentication":{"required":true,"schemes":["bearer"],"description":"Send your Massed Compute account API key as a Bearer token in the 'Authorization' header. Get one from your account at https://vm.massedcompute.com. Use a key with user_api_key_readonly=1 for analysis-only clients to prevent destructive tool calls."},"documentation":{"api":"https://vm-docs.massedcompute.com/api/v1"},"tools":[{"name":"gpu_inventory_list","title":"List GPU inventory","description":"Retrieve the comprehensive list of available GPU configurations, their specs, pricing, and current capacity per region.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"title":"List GPU inventory","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"images_list","title":"List VM images","description":"Retrieve the catalog of preconfigured VM images available for deployment.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"title":"List VM images","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"instances_list","title":"List running instances","description":"Retrieve all running VM instances for the authenticated account. Sensitive credentials (e.g. cleartext VM password) are redacted; fetch them through the REST API if needed.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"title":"List running instances","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"instances_get","title":"Get a running instance","description":"Retrieve a single running VM instance by its UUID. Sensitive credentials (e.g. cleartext VM password) are redacted; fetch them through the REST API if needed.","inputSchema":{"type":"object","properties":{"uuid":{"type":"string","description":"UUID of the running instance."}},"required":["uuid"],"additionalProperties":false},"annotations":{"title":"Get a running instance","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"instances_launch","title":"Launch a new instance","description":"Deploy a new VM instance. Requires billing to be configured (recharge amount and threshold). This action incurs cost.","inputSchema":{"type":"object","properties":{"imageId":{"type":"integer","description":"ID of the VM image to deploy."},"productName":{"type":"string","description":"Product name of the GPU instance to deploy, e.g. 'gpu_1x_l40'."},"regionName":{"type":"string","description":"Region name. Use 'any' to let us choose."},"instanceName":{"type":"string","description":"Optional human-readable name for the instance."},"coupon":{"type":"string","description":"Optional coupon code to apply at deploy time."},"command":{"type":"string","description":"Optional startup command to run on boot."},"sshKeys":{"type":"array","items":{"type":"string"},"description":"Optional list of SSH key names to attach to the instance."},"instanceGroup":{"type":"string","description":"Optional instance group uuid to launch into. Must be a group this key's member can manage; omitted means the account's default group."}},"required":["imageId","productName","regionName"],"additionalProperties":false},"annotations":{"title":"Launch a new instance","readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}},{"name":"instances_restart","title":"Restart instances","description":"Restart one or more VM instances by UUID, including instances that are stopped — this is also how a stopped instance is started again. Already-deleted instances are rejected.","inputSchema":{"type":"object","properties":{"instanceUuids":{"type":"array","items":{"type":"string"},"description":"UUIDs of instances to restart."}},"required":["instanceUuids"],"additionalProperties":false},"annotations":{"title":"Restart instances","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":true}},{"name":"instances_terminate","title":"Terminate instances","description":"Terminate one or more VM instances by UUID, including instances that are still initializing or stopped. DESTRUCTIVE: this stops billing for the listed instances and permanently deletes their data; the action cannot be undone. Confirm with the user before invoking.","inputSchema":{"type":"object","properties":{"instanceUuids":{"type":"array","items":{"type":"string"},"description":"UUIDs of instances to terminate."}},"required":["instanceUuids"],"additionalProperties":false},"annotations":{"title":"Terminate instances","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":true}},{"name":"coupon_information","title":"Get coupon information","description":"Look up information about a coupon by code.","inputSchema":{"type":"object","properties":{"coupon":{"type":"string","description":"Coupon code to look up."}},"required":["coupon"],"additionalProperties":false},"annotations":{"title":"Get coupon information","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"coupon_accepted_products","title":"List products a coupon is valid for","description":"Look up which products a coupon code can be applied to, with current inventory availability.","inputSchema":{"type":"object","properties":{"coupon":{"type":"string","description":"Coupon code to look up."}},"required":["coupon"],"additionalProperties":false},"annotations":{"title":"List products a coupon is valid for","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"account_token_validation","title":"Validate API token","description":"Confirm that the Bearer token used to call this MCP server is a valid Massed Compute user API key.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"title":"Validate API token","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"account_billing","title":"Get account billing snapshot","description":"Retrieve billing settings for the account, including billing method and recharge configuration.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"title":"Get account billing snapshot","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"ssh_keys_list","title":"List SSH keys","description":"List SSH keys associated with the authenticated account.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"title":"List SSH keys","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"ssh_keys_create","title":"Add an SSH key","description":"Add a new SSH public key to the authenticated account. Key names may only contain letters, digits and spaces — hyphens, underscores and other punctuation are rejected — e.g. 'codex_ed25519' or 'my-laptop'.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Name for the SSH key. Letters, digits and spaces only. Hyphens, underscores, dots and other punctuation are rejected. Must be unique within the account."},"publicKey":{"type":"string","description":"OpenSSH-format public key contents on a single line, e.g. 'ssh-ed25519 AAAA... user@host'. Send the .pub file, not the private key; surrounding whitespace is trimmed."}},"required":["name","publicKey"],"additionalProperties":false},"annotations":{"title":"Add an SSH key","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},{"name":"ssh_keys_delete","title":"Delete an SSH key","description":"Remove an SSH key from the account. DESTRUCTIVE: any instances relying on this key may lose access. Confirm with the user before invoking.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Identifier of the SSH key to remove."}},"required":["id"],"additionalProperties":false},"annotations":{"title":"Delete an SSH key","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":true}},{"name":"recipes_list","title":"List setup recipes","description":"List every step-by-step setup recipe currently available for Massed Compute VMs. Prefer recipes_search when the user has a specific intent — call this only when the user asks open-ended questions like 'what can I set up on a VM?', 'what recipes do you have?', or wants to browse the catalogue. Returns metadata (slug, title, description, tags) only; call recipes_get for the full body.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"title":"List setup recipes","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"recipes_search","title":"Search setup recipes","description":"Find an official setup recipe for software the user wants on a Massed Compute VM they already have or have explicitly asked to provision (web servers, databases, ML stacks, and similar). Prefer this when they want a recipe. Do not skip clarifying questions they still need. Do not skip confirmation on destructive or paid actions. An empty result means fall back to ad-hoc instructions.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Natural-language description of what the user wants to set up."},"limit":{"type":"number","description":"Maximum number of matches to return (default 3, max 10).","minimum":1}},"required":["query"],"additionalProperties":false},"annotations":{"title":"Search setup recipes","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"recipes_get","title":"Fetch a recipe by slug","description":"Fetch the full markdown body of a setup recipe by slug (from recipes_search or recipes_list). Follow it on a VM the user already has or has explicitly asked to provision. Do not launch infrastructure unless they explicitly asked to launch.","inputSchema":{"type":"object","properties":{"slug":{"type":"string","description":"The kebab-case slug of the recipe (from recipes_list or recipes_search)."}},"required":["slug"],"additionalProperties":false},"annotations":{"title":"Fetch a recipe by slug","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}}],"resources":[{"uri":"recipe://blackwell-musicgen","name":"blackwell-musicgen","title":"MusicGen on Blackwell GPU","description":"Provision an NVIDIA RTX PRO 6000 Blackwell VM on Massed Compute, install\nPyTorch 2.10.0+cu130 and Hugging Face Transformers MusicGen, and generate a WAV\nsmoke clip with a Blackwell-compatible CUDA stack.","mimeType":"text/markdown"},{"uri":"recipe://caddy-reverse-proxy-tls","name":"caddy-reverse-proxy-tls","title":"Caddy Reverse Proxy with TLS","description":"Launch a CPU VM via Massed Compute MCP `instances_launch` / `instances_list` flow, install Caddy, and reverse-proxy\nHTTPS on port 443 to an upstream service on <UPSTREAM_PORT> with stop-on-failure checks.","mimeType":"text/markdown"},{"uri":"recipe://collect-debug-bundle","name":"collect-debug-bundle","title":"Collect Redacted Debug Bundle (L40)","description":"Build a single small, redacted, self-contained tar.gz of host, GPU, and workload\ndiagnostics on an NVIDIA L40 (Ubuntu 24.04) that can be attached to an escalation\nticket without leaking secrets, using an inline Python redactor for IPs, MACs,\ntokens, and sensitive home-dir paths.","mimeType":"text/markdown"},{"uri":"recipe://cuda-version-check","name":"cuda-version-check","title":"CUDA Version Check (Driver vs Toolkit vs Runtime)","description":"Reconcile the three CUDA \"versions\" on an Ubuntu GPU host — driver-advertised,\ntoolkit (nvcc), and Python-runtime (torch.version.cuda) — and detect mismatches\nbefore a workload fails. Fully read-only; no approval gate.","mimeType":"text/markdown"},{"uri":"recipe://cursor-skills-mcp-work-genre-packs","name":"cursor-skills-mcp-work-genre-packs","title":"Cursor Skills & MCP Work-Genre Packs","description":"Ask which work genre the user is in (data center, website, ML/GPU, finance, sales,\ncreative, security, startup), provision a CPU VM, install a genre-specific pack manifest\nwith curated Cursor skills, MCP servers, and related recipes, and write a Mac checklist.","mimeType":"text/markdown"},{"uri":"recipe://docker-installed","name":"docker-installed","title":"Install Docker Engine","description":"Install Docker Engine and the docker-compose plugin on a fresh Ubuntu VM, add the SSH user to the docker group, and verify with a hello-world container.","mimeType":"text/markdown"},{"uri":"recipe://firewall-ui-lab","name":"firewall-ui-lab","title":"Firewall UI Lab (CPU)","description":"Provision a cpu_mini_amd_epyc VM on Massed Compute, deploy a minimal\nnginx status UI on port 8080, and apply a strict UFW + fail2ban host firewall that\nrestricts SSH and the UI to a single trusted IP.","mimeType":"text/markdown"},{"uri":"recipe://gpu-container-access-check","name":"gpu-container-access-check","title":"GPU Container Access Check (Docker/Podman on L40)","description":"Confirm that Docker or Podman on an Ubuntu L40 host can pass the NVIDIA GPU through\nto a container via the NVIDIA Container Toolkit, and identify which of the three layers\n(host driver, toolkit, runtime config) is the blocker if it cannot.","mimeType":"text/markdown"},{"uri":"recipe://gpu-ollama-llm","name":"gpu-ollama-llm","title":"Ollama LLM on GPU","description":"Provision a GPU VM on Massed Compute, install Ollama via bootstrap\nscript, ask the user to choose a model from the comparison chart, pull the chosen\nmodel, run a smoke completion, and terminate the VM when done.","mimeType":"text/markdown"},{"uri":"recipe://install-lance-on-l40","name":"install-lance-on-l40","title":"Lance Multimodal Model on L40","description":"Set up Lance (ByteDance 3B native unified multimodal model) on a remote NVIDIA L40\n(48 GB VRAM) via SSH: install Miniconda, create a Python 3.11 conda env, install\nPyTorch 2.8.0+cu126 and flash-attn 2.8.3 via prebuilt wheel, download the\nLance-3B and Lance-3B_Video weights (~30 GB), run a noninteractive inference\nsmoke test, and optionally launch the Gradio UI via SSH tunnel.","mimeType":"text/markdown"},{"uri":"recipe://jupyter-server","name":"jupyter-server","title":"Jupyter Notebook Server","description":"Install JupyterLab and run it as a service accessible from the user's browser over the public network, with token authentication.","mimeType":"text/markdown"},{"uri":"recipe://l40-gpu-health-check","name":"l40-gpu-health-check","title":"L40 GPU Health Check","description":"Fast read-only confirmation that an NVIDIA L40 (48 GB VRAM) is detected, the driver\nis loaded, ECC is clean, and CUDA is reachable from Python. Emits a machine-parseable\nCSV line for AI-parseable pass/fail. No approval gate.","mimeType":"text/markdown"},{"uri":"recipe://local-agi-hermes-llama-team","name":"local-agi-hermes-llama-team","title":"Local AGI — Hermes Kanban + Ollama Llama Team","description":"Deploys a local multi-agent AGI stack on a GPU VM: Ollama runs a large Llama brain,\nHermes Agent orchestrates researcher/writer/reviewer workers via Kanban, and a systemd\ngateway dispatches tasks. Outcome is a verified smoke test and running agent team.","mimeType":"text/markdown"},{"uri":"recipe://massed-compute-llm-lora-training","name":"massed-compute-llm-lora-training","title":"LLM LoRA Training (QLoRA Smoke)","description":"Launch an L40 GPU VM, bootstrap a pinned Hugging Face PEFT/bitsandbytes QLoRA\nenvironment on Ubuntu 24.04, run a short LoRA fine-tune, and verify adapter artifacts.","mimeType":"text/markdown"},{"uri":"recipe://massed-compute-local-datacenter-supabase","name":"massed-compute-local-datacenter-supabase","title":"Massed Compute Local Datacenter (Supabase)","description":"Turn a Massed Compute CPU VM into a protected, hardened local backend datacenter using\nself-hosted Supabase (Postgres, Auth, REST, Realtime, Storage, Studio). UFW, fail2ban,\nSSH key-only, and protected-registry registration survive reset-thee-mcp teardown.","mimeType":"text/markdown"},{"uri":"recipe://massed-compute-new-project-onboarding","name":"massed-compute-new-project-onboarding","title":"New Project VM Onboarding","description":"Start a new project by asking what the user is building, provision the right\nMassed Compute SKU(s) via Massed Compute MCP `instances_launch` / `instances_list` flow, run a security pass on each guest, connect\nmultiple VMs when requested, then apply kernel and service optimizations before\nhanding off to stack-specific child runbooks.","mimeType":"text/markdown"},{"uri":"recipe://massed-compute-systematic-debug","name":"massed-compute-systematic-debug","title":"Systematic Debug Workflow","description":"Structured nine-step debug workflow for Massed Compute VMs and deployed stacks:\nfreeze scope, reproduce, gather read-only inventory evidence, one hypothesis at a time,\nminimal fix, verify, and record — without leaking secrets.","mimeType":"text/markdown"},{"uri":"recipe://massed-compute-vllm-openai-api","name":"massed-compute-vllm-openai-api","title":"vLLM OpenAI-Compatible API","description":"Launch a GPU VM, bootstrap vLLM with an OpenAI-compatible /v1 API,\nrun chat-completions smoke tests, and verify GPU inference with stop-on-failure checks.","mimeType":"text/markdown"},{"uri":"recipe://massed-compute-vm-hardening-protection","name":"massed-compute-vm-hardening-protection","title":"VM Hardening & Protection","description":"Harden a running Massed Compute VM (SSH keys, firewall, host updates), keep API keys\nand passwords in gitignored client machine files only, and register the instance in the protected\nregistry so Massed Compute MCP `instances_terminate` flow and teardown helpers cannot terminate it without explicit override.","mimeType":"text/markdown"},{"uri":"recipe://massed-compute-vm-health-inventory-context","name":"massed-compute-vm-health-inventory-context","title":"VM Health & Workload Inventory (Context)","description":"Read-only health and inventory on a running Massed Compute VM (GPU or CPU): SSH,\nresources, GPU visibility, disk hotspots, venvs, services, and listening ports —\nstructured report for debugging without reinstalling stacks.\nContext-optimized variant: inline rationale and fallbacks for the executing agent.","mimeType":"text/markdown"},{"uri":"recipe://massed-compute-vm-lifecycle","name":"massed-compute-vm-lifecycle","title":"VM Lifecycle & Profiles","description":"","mimeType":"text/markdown"},{"uri":"recipe://massed-compute-vm-network-connectivity-context","name":"massed-compute-vm-network-connectivity-context","title":"VM Network Connectivity Debug (Context)","description":"Read-only network diagnostics on a running Massed Compute VM: DNS, routing, egress\nHTTP(S), listening ports, and firewall snapshot — structured report when workloads\nfail on egress or port reachability.\nContext-optimized variant: inline rationale and fallbacks for the executing agent.","mimeType":"text/markdown"},{"uri":"recipe://massed-compute-vm-service-journal-audit-context","name":"massed-compute-vm-service-journal-audit-context","title":"VM Service & Journal Audit (Context)","description":"Read-only systemd and journal audit on a running Massed Compute VM: failed units,\nerror-priority journal excerpts, workload service status, and listening ports —\nfor debugging service crashes without restarting stacks blindly.\nContext-optimized variant: inline rationale and fallbacks for the executing agent.","mimeType":"text/markdown"},{"uri":"recipe://massed-compute-vm-setup-ssh","name":"massed-compute-vm-setup-ssh","title":"VM Setup & SSH","description":"Launch a Massed Compute VM, wait until SSH is ready, connect with API-backed credentials, run baseline GPU/Docker checks, optional Swarm prep.","mimeType":"text/markdown"},{"uri":"recipe://multi-modality-ai-stack","name":"multi-modality-ai-stack","title":"Multi-Modality AI Stack (Image + Coding + Chat + Embed + Speech)","description":"Provision a GPU VM and install one optimized stack per AI modality: Ollama coding\nand chat LLMs, embeddings, SDXL-Turbo image generation, and faster-whisper speech.\nVerify each modality with stop-on-failure smoke checks.","mimeType":"text/markdown"},{"uri":"recipe://nginx-auth-gate","name":"nginx-auth-gate","title":"Nginx Auth Gate","description":"Add a login prompt to protect any web dashboard or web app using Nginx HTTP Basic Auth (htpasswd). Visitors must enter a username and password before they can access the site. Also supports IP allowlist to restrict access by source IP. Use this to protect a dashboard, admin panel, monitoring tool, or any internal web app that lacks its own login screen.","mimeType":"text/markdown"},{"uri":"recipe://nginx-load-balancer","name":"nginx-load-balancer","title":"Nginx HTTP Load Balancer","description":"Load-balance HTTP traffic across two or more existing upstream services using Nginx. Supports round-robin (default), least-connections, and IP-hash sticky sessions. Passive health checks via max_fails and fail_timeout; for active health checks you need nginx-plus.","mimeType":"text/markdown"},{"uri":"recipe://nginx-reverse-proxy","name":"nginx-reverse-proxy","title":"Nginx Reverse Proxy","description":"Install nginx and configure it as an HTTP reverse proxy. The nginx reverse proxy listens on port 80 and forwards requests via proxy_pass to a local backend service. This is a plain HTTP nginx reverse proxy — unencrypted, no certificate needed. Use when you need a basic nginx reverse proxy for HTTP traffic.","mimeType":"text/markdown"},{"uri":"recipe://nginx-ssl","name":"nginx-ssl","title":"Nginx HTTPS Reverse Proxy with TLS","description":"Configure Nginx as an HTTPS reverse proxy with a TLS certificate for encrypted traffic. Install a trusted TLS cert using Let's Encrypt certbot (free, auto-renewing via ACME, requires a domain) or a self-signed certificate. Nginx listens on port 443 with SSL/TLS cert termination. HTTP port 80 redirects to HTTPS. Adds certificate-based HTTPS encryption to an nginx reverse proxy.","mimeType":"text/markdown"},{"uri":"recipe://nginx-static-server","name":"nginx-static-server","title":"Nginx Static File Server","description":"Serve a directory of static files (HTML, CSS, JS, images, downloads) over HTTP via Nginx. Includes sensible cache headers and gzip compression for text content. Single document root, no virtual hosts.","mimeType":"text/markdown"},{"uri":"recipe://nginx-websocket-proxy","name":"nginx-websocket-proxy","title":"Nginx WebSocket Proxy","description":"Configure Nginx as a WebSocket proxy for persistent full-duplex WebSocket connections. The WebSocket protocol uses an HTTP Upgrade handshake to switch from HTTP to the ws:// protocol; a WebSocket proxy must forward this Upgrade header. This WebSocket proxy configuration enables real-time bidirectional communication over ws:// and wss://, supporting Socket.IO, MQTT-over-WebSocket, and any WebSocket server. Prevents WebSocket connection drops with long idle timeouts.","mimeType":"text/markdown"},{"uri":"recipe://nvidia-smi-troubleshooting","name":"nvidia-smi-troubleshooting","title":"nvidia-smi Troubleshooting","description":"Diagnose and recover from common nvidia-smi failures on an Ubuntu host with an\nNVIDIA L40 (or other Ada/Hopper GPU): error-string lookup table, read-only diagnostic\nladder, and four gated remediation steps (persistence mode, full module reload,\nnvidia_uvm-only reload, daemon restart).","mimeType":"text/markdown"},{"uri":"recipe://server-preflight-check","name":"server-preflight-check","title":"Server Preflight Check","description":"One-shot identity-and-state sanity check to run immediately after SSH-ing into any\nhost where you intend to do work. An 8-check bash function emits PASS/WARN/FAIL\nper check to catch wrong host, clock skew, disk full, foreign GPU workloads, and\nnetwork failures before they waste an hour.","mimeType":"text/markdown"},{"uri":"recipe://ubuntu-network-debug","name":"ubuntu-network-debug","title":"Ubuntu Network Debug","description":"Layered diagnostic ladder for IP, route, DNS, outbound TCP, MTU, and firewall\nproblems on an Ubuntu host. Run each layer in order — the first FAIL is the cause.\nTwo approval gates: one for firewall rule mutations, one for NIC/route resets.","mimeType":"text/markdown"},{"uri":"recipe://vm-mysql","name":"vm-mysql","title":"MySQL Server","description":"Install MySQL 8 on an Ubuntu 24.04 CPU VM with localhost-only listening, UFW default-deny, root cleanup, and a scoped app user.","mimeType":"text/markdown"},{"uri":"recipe://vm-postgresql","name":"vm-postgresql","title":"PostgreSQL Server","description":"Install PostgreSQL 16 on an Ubuntu 24.04 CPU VM with localhost-only listening, UFW default-deny, and a least-privilege app role.","mimeType":"text/markdown"},{"uri":"recipe://vm-redis","name":"vm-redis","title":"Redis Server","description":"Install Redis 7 on an Ubuntu 24.04 CPU VM with requirepass, protected mode, disabled dangerous commands, localhost-only listening, and UFW default-deny.","mimeType":"text/markdown"}],"prompts":[]}