Burntberry-Enterprises

lunanode-mcp

Updated

lunanode-mcp

MCP server for the LunaNode VPS API.

Features

  • 43 tools covering VMs, images, volumes, floating IPs, SSH keys, and plans/regions.
  • Tiered safety gating: read operations are always available; write and delete operations must be explicitly enabled.

Configuration

Set these environment variables:

Variable Required Description
LUNANODE_API_ID Yes Your LunaNode API ID.
LUNANODE_API_KEY Yes Your LunaNode API key (128 characters).
LUNANODE_ENABLE_WRITES No Enables write-tier tools. Unset = off. true/1 = all write tools. Comma-separated tool names = only those tools.
LUNANODE_ENABLE_DELETES No Enables delete-tier tools. Unset = off. true/1 = all delete tools. Comma-separated tool names = only those tools.

Read-tier tools are always enabled. Enabling writes does not imply deletes โ€” each tier is gated independently.

Using a .env file

Instead of putting credentials in your MCP client config, you can keep them in a .env file and load it with Node's built-in --env-file flag (Node 20.6+). Copy .env.example to .env (git-ignored), fill in your values, and restrict access with chmod 600 .env. Full-line and inline # comments are supported.

{
  "mcpServers": {
    "lunanode": {
      "command": "node",
      "args": [
        "--env-file=/path/to/lunanode-mcp/.env",
        "/path/to/lunanode-mcp/dist/index.js"
      ]
    }
  }
}

The smoke test can use the same file: npx tsx --env-file=.env scripts/smoke.ts

Client setup

Example configuration for Claude Code / Claude Desktop:

{
  "mcpServers": {
    "lunanode": {
      "command": "npx",
      "args": ["-y", "github:Burntberry-Enterprises/lunanode-mcp"],
      "env": {
        "LUNANODE_API_ID": "your-api-id",
        "LUNANODE_API_KEY": "your-128-char-api-key",
        "LUNANODE_ENABLE_WRITES": "true",
        "LUNANODE_ENABLE_DELETES": "vm_delete,volume_delete"
      }
    }
  }
}

Tool reference

Read tools (always enabled)

Tool Description
vm_list List all virtual machines on the LunaNode account.
vm_info Get detailed configuration and live status for a virtual machine.
vm_iplist List all IP addresses assigned to a virtual machine.
image_list List images available to the account, optionally filtered by region.
image_details Get metadata for a specific image.
volume_list List block storage volumes, optionally filtered by region.
volume_info Get details for a specific volume.
volume_snapshot_list List volume snapshots in a region.
floating_ip_list List all floating IPs on the account.
ssh_key_list List stored SSH public keys with their IDs.
plan_list List available LunaNode VM plans with pricing, CPU, RAM, storage, and regional availability.
region_list List all LunaNode regions where services can be deployed.

Write tools (require LUNANODE_ENABLE_WRITES)

Tool Description
vm_create Provision a new virtual machine. Requires a hostname and plan_id; boot from image_id or volume_id.
vm_action Perform a VM state action: start, stop, reboot, diskswap, rescue, shelve, or unshelve.
vm_reimage Reinstall a VM from an image. Destroys the VM's current disk contents.
vm_resize Change a VM's plan (CPU/RAM/storage).
vm_rename Change a VM's hostname label.
vm_snapshot Create a disk image snapshot of a VM.
vm_vnc Generate a temporary noVNC console URL for a VM. Grants console access, so it is write-gated.
vm_floating_ip_attach Attach a floating (public) IP to a VM.
vm_ip_add Allocate an additional internal IP address on a VM.
vm_securitygroup_add Add a VM to an existing security group.
vm_securitygroup_remove Remove a VM from a security group.
image_fetch Add a new image by fetching it from an HTTP, HTTPS, or FTP URL.
image_replicate Copy an image to another region.
image_rename Change an image's label.
volume_create Create a block storage volume, optionally pre-populated from an image or snapshot.
volume_attach Attach a volume to a virtual machine.
volume_detach Detach a volume from its virtual machine.
volume_extend Increase the size of an unattached volume.
volume_rename Change a volume's label.
volume_snapshot_create Take a snapshot of a volume.
volume_snapshot_replicate Convert a volume snapshot into an image, optionally in another region.
floating_ip_add Provision a new unattached floating IP in a region.
ssh_key_add Store an SSH public key for provisioning VMs with key-based authentication.

Delete tools (require LUNANODE_ENABLE_DELETES)

Tool Description
vm_delete Permanently delete a virtual machine.
vm_ip_delete Remove an internal IP address from a VM.
vm_floating_ip_detach Detach a floating IP from a VM. By default the IP is destroyed; set keep to retain it unattached.
image_delete Permanently delete an image.
volume_delete Permanently delete a volume.
volume_snapshot_delete Permanently delete a volume snapshot.
floating_ip_delete Release an unattached floating IP from the account.
ssh_key_remove Delete a stored SSH key.

Development

npm install
npm test
npm run build
npm run smoke   # needs real LunaNode credentials

API keys

API keys are created in the LunaNode panel under API. See https://www.lunanode.com/api/overview for details.

MCP Server ยท Populars

MCP Server ยท New

    OyadotAI

    Oya Browser

    The browser control plane for AI agents. One API over Oya Cloud, Browserbase, Steel, Anchor, Browser Use and your own Chrome, with persistent personas, CAPTCHA and MFA handling, and live human takeover.

    Community OyadotAI
    unibaseio

    Membase

    Memory layer for AI agents โ€” SDKs, CLI and MCP server for Membase

    Community unibaseio
    EternalNight996

    ๐Ÿง  memory-eternal โ€” a second brain for your AI

    Your AI forgets every session. Give it a memory you can audit: local-first, review-gated agent memory โ€” one SQLite vault for DSH, Claude Code, Codex, Cursor, OpenClaw, Hermes and MengBot (any MCP client), with an immutable audit log and a token ledger. Agents propose, humans approve. MIT, self-hosted, no cloud.

    Community EternalNight996
    quarkiverse

    Model Context Protocol Servers in Quarkus/Java

    Model Context Protocol Servers in Quarkus

    Community quarkiverse
    magiksoft

    AiderDesk

    Platform for AI-powered software engineers

    Community magiksoft