Skip to main content
Glama
Civo MCP Server

Civo MCP Server

Civo MCP Server

Civo

CI Node.js Version License

An MCP server implementation that integrates with the Civo cloud platform API, providing capabilities to manage cloud instances, networks, and Kubernetes clusters.

Demo

Civo MCP Demo

Or you can also view the details of each step through this public Amp thread.

Related MCP server: poly-cloud-mcp

Getting Started

Requirements

  • Node.js 20 or newer

  • Claude Desktop, VS Code, Cursor, or any other MCP client

  • A Civo account with API key

Installation

First, install the Civo MCP server with your client. A typical configuration looks like this:

{
  "mcpServers": {
    "civo": {
      "command": "npx",
      "args": ["civo-mcp"],
      "env": {
        "CIVO_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

You can install the Civo MCP server using the VS Code CLI:

# For VS Code
code --add-mcp '{"name":"civo","command":"npx","args":["civo-mcp"],"env":{"CIVO_API_KEY":"YOUR_API_KEY_HERE"}}'

After installation, the Civo MCP server will be available for use with your GitHub Copilot agent in VS Code.

Follow Amp MCP documentation. Use following configuration:

"amp.mcpServers": {
  "civo": {
      "command": "npx",
      "args": ["civo-mcp"],
      "env": {
        "CIVO_API_KEY": "YOUR_API_KEY_HERE"
      }
  }
}

Use the Claude Code CLI to add the Civo MCP server:

claude mcp add civo npx civo-mcp

Then set your API key as an environment variable:

export CIVO_API_KEY="your_api_key_here"

Follow the MCP install guide, use following configuration:

{
  "mcpServers": {
    "civo": {
      "command": "npx",
      "args": ["civo-mcp"],
      "env": {
        "CIVO_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Go to Cursor Settings → MCP → Add new MCP Server. Name to your liking, use command type with the command npx civo-mcp. You can also verify config or add command like arguments via clicking Edit.

{
  "mcpServers": {
    "civo": {
      "command": "npx",
      "args": ["civo-mcp"],
      "env": {
        "CIVO_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Follow Windsurf MCP documentation. Use following configuration:

{
  "mcpServers": {
    "civo": {
      "command": "npx",
      "args": ["civo-mcp"],
      "env": {
        "CIVO_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Follow the MCP install guide, use following configuration:

{
  "mcpServers": {
    "civo": {
      "command": "npx",
      "args": ["civo-mcp"],
      "env": {
        "CIVO_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Features

  • Instance Management: Create, manage, resize, start, stop, reboot, and delete cloud instances.

  • Disk Image Operations: List and get details of available disk images.

  • Network Management: Create, rename, and delete networks.

  • Kubernetes Support: Create, list, and delete Kubernetes clusters and list available versions.

  • Flexible Configuration: Set instance size, region, and other parameters.

  • Rate Limiting: Built-in rate limiting to prevent API abuse.

Tools

Instance Management

  • create_instance

    • Create new cloud instances on Civo

    • Inputs:

      • hostname (string): Fully qualified domain name

      • size (string): Instance size (e.g. 'g2.small')

      • template_id (string): Disk image ID

      • count (number, optional): Number of instances to create (default: 1)

      • region (string, optional): Region identifier (default: 'LON1')

  • list_instances

    • List all instances on Civo

    • Inputs:

      • region (string, optional): Filter by region

      • page (number, optional): Pagination page (default: 1)

      • per_page (number, optional): Results per page (default: 20)

  • reboot_instance

    • Reboot an existing instance

    • Inputs:

      • id (string): Instance ID

      • region (string): Region identifier

  • shutdown_instance

    • Shutdown an existing instance

    • Inputs:

      • id (string): Instance ID

      • region (string): Region identifier

  • start_instance

    • Start a stopped instance

    • Inputs:

      • id (string): Instance ID

      • region (string): Region identifier

  • resize_instance

    • Resize an existing instance

    • Inputs:

      • id (string): Instance ID

      • size (string): New instance size

      • region (string): Region identifier

  • delete_instance

    • Delete an existing instance

    • Inputs:

      • id (string): Instance ID

      • region (string): Region identifier

Disk Images

  • list_disk_images

    • List available disk images on Civo

    • Inputs:

      • region (string, optional): Region identifier

  • get_disk_image

    • Get details of a specific disk image

    • Inputs:

      • id (string): Disk image ID

      • region (string, optional): Region identifier

Network Management

  • list_networks

    • List all available networks

    • Inputs: None

  • create_network

    • Create a new network

    • Inputs:

      • label (string): Network label

      • region (string, optional): Region identifier

  • rename_network

    • Rename an existing network

    • Inputs:

      • id (string): Network ID

      • label (string): New network label

      • region (string, optional): Region identifier

  • delete_network

    • Delete an existing network

    • Inputs:

      • id (string): Network ID

      • region (string): Region identifier

Kubernetes Management

  • list_kubernetes_clusters

    • List all Kubernetes clusters

    • Inputs:

      • region (string, optional): Filter by region

      • page (number, optional): Pagination page

      • per_page (number, optional): Results per page

  • create_kubernetes_cluster

    • Create a new Kubernetes cluster

    • Inputs:

      • name (string): Cluster name

      • region (string): Region identifier

      • network_id (string): Network ID for the cluster

      • nodes (number): Number of worker nodes

      • node_size (string): Size of each node

      • kubernetes_version (string): Kubernetes version

  • delete_kubernetes_cluster

    • Delete a Kubernetes cluster

    • Inputs:

      • id (string): Cluster ID

      • region (string): Region identifier

  • list_kubernetes_versions

    • List available Kubernetes versions

    • Inputs: None

Resource Information

  • list_sizes

    • List all available instance sizes

    • Inputs: None

  • list_regions

    • List all available regions

    • Inputs: None

Configuration

Environment Variables

  • CIVO_API_KEY: Your Civo API Key (required)

  • NODE_ENV: Set to production to disable debug logging (optional)

Getting an API Key

  1. Sign up for a Civo account if you don't have one.

  2. Generate your API key following the API keys documentation

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature-name

  3. Make your changes and add tests

  4. Run the test suite: npm run test:ci

  5. Submit a pull request

Development Setup

git clone https://github.com/tao12345666333/civo-mcp.git
cd civo-mcp
npm install
npm run build

Running Tests

# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Generate coverage report
npm run test:coverage

License

This MCP server is licensed under the MIT License. See the LICENSE file for details.

Available Tools

19 tools
create_instanceC

Create a new cloud instance on Civo

Inputs: hostname (required), size (required), template_id (required), count, +1 more.

create_kubernetes_clusterC

Create a new Kubernetes cluster on Civo

Inputs: name (required), region (required), network_id (required), nodes (required), +2 more.

create_networkB

Create a new network on Civo

Inputs: label (required), region.

delete_instanceB

Delete a cloud instance on Civo

Inputs: id (required), region (required).

delete_kubernetes_clusterB

Delete a Kubernetes cluster on Civo

Inputs: id (required), region (required).

delete_networkB

Delete a network on Civo

Inputs: id (required), region.

get_disk_imageA

Get details of a specific disk image

Inputs: id (required), region.

list_disk_imagesA

List available disk images on Civo

Inputs: region.

list_instancesB

List all instances on Civo

Inputs: region, page, per_page.

list_kubernetes_clustersA

List all Kubernetes clusters on Civo

Inputs: region.

list_kubernetes_versionsA

List available Kubernetes versions on Civo

Inputs: no named parameters.

list_networksA

List available networks on Civo

Inputs: no named parameters.

list_regionsB

List available regions on Civo

Inputs: no named parameters.

list_sizesA

List available instance sizes on Civo

Inputs: no named parameters.

reboot_instanceB

Reboot a cloud instance on Civo

Inputs: id (required), region (required).

rename_networkB

Rename a network on Civo

Inputs: id (required), label (required), region.

resize_instanceB

Resize a cloud instance on Civo

Inputs: id (required), size (required), region (required).

shutdown_instanceB

Shutdown a cloud instance on Civo

Inputs: id (required), region (required).

start_instanceB

Start a cloud instance on Civo

Inputs: id (required), region (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 19 tools

    Disambiguation5/5

    Each tool targets a distinct resource-action pair: instances, Kubernetes clusters, networks, disk images, and metadata. No overlaps exist, as operations like create, list, delete, and specific actions (reboot, resize) are clearly separated.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern with snake_case (e.g., create_instance, list_networks). No deviations or mixed conventions, making the pattern predictable.

    Tool Count4/5

    19 tools cover multiple resource types (instances, clusters, networks, disk images, metadata) without being excessive. While slightly above the typical 3-15 range, the count is justified given the scope.

    Completeness3/5

    Basic CRUD and lifecycle operations exist for instances, clusters, and networks, but notable gaps include missing get_instance, get_kubernetes_cluster, update_instance (except resize), and no support for volumes, firewalls, or advanced cluster management.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      C
      quality
      B
      maintenance
      A Model Context Protocol server for the Hetzner Cloud API that enables natural language management of cloud infrastructure. Users can list, create, and modify servers, networks, volumes, and load balancers through MCP-compatible clients.
      162
      844 npm
      MIT