# Civo MCP

> Civo (Cloud-native Kubernetes Cloud Provider API) connects your agent directly to Civo's infrastructure APIs. Provision K3s clusters, manage compute instances, and configure networking rules—all through natural language chat. Check resource quotas, attach persistent volumes, and monitor usage without leaving your IDE.

## Overview
- **Category:** developer-tools
- **Price:** Free
- **Tags:** kubernetes, k3s, cloud-computing, infrastructure-as-code, vps

## Description

Need to spin up a test environment or scale production resources? This MCP gives you full control over cloud-native infrastructure directly from your agent. You can build out complex microservice architectures by creating dedicated private networks, setting strict firewall rules, and launching multiple compute instances—all without touching the console dashboard. Think of it like having an expert DevOps engineer sitting next to you who can provision any resource instantly just by reading what you need. If you're using Vinkius, this MCP plugs right into your existing catalog so you don't have to juggle dozens of separate APIs or tools. You manage everything from core K3s clusters and attaching persistent volumes to checking your account usage and billing reports, all conversationally.

## Tools

### add_team_member
Adds a specified user account to an existing team structure within Civo.

### attach_volume
Connects a pre-created block storage volume to a running compute instance for persistent data.

### create_cluster
Initiates the process of creating an entirely new Kubernetes cluster within your account.

### create_domain_record
Adds or updates specific records (like A or CNAME) to an existing DNS domain.

### create_domain
Registers a completely new DNS domain name under your Civo account.

### create_firewall_rule
Applies a specific rule (like allowing port 80) within an existing firewall setup.

### create_firewall
Sets up a new, dedicated firewall profile to manage network ingress and egress.

### create_instance
Launches and provisions a new virtual machine compute instance with defined sizes.

### create_network
Builds an isolated private network segment to contain specific resources from external traffic.

### create_team
Creates a new logical team group for managing multiple users and access rights.

### create_volume
Allocates new block storage space that can later be attached to an instance.

### create_webhook
Sets up a URL endpoint that triggers actions when specific events occur within Civo.

### detach_volume
Disconnects an existing volume from its compute instance, making it available for reuse.

### get_charges
Pulls a detailed hourly usage report showing costs incurred by chargeable resources.

### get_quota
Returns the current status of account resource limits and how much you have used.

### list_clusters
Retrieves a list of all Kubernetes clusters currently provisioned in your account.

### list_disk_images
Fetches a catalogue of available operating system and base disk images for new instances.

### list_domains
Lists all DNS domains that are currently registered under your account.

### list_firewall_rules
Displays every active rule configured within a specific firewall profile.

### list_networks
Retrieves an inventory of all existing private network segments.

### list_regions
Shows every geographical region where you can deploy infrastructure resources.

### list_sizes
Provides a list of all available compute instance sizes (e.g., g3.xsmall, m5.large).

### list_ssh_keys
Lists the SSH keys currently stored and associated with your account.

### reboot_instance
Performs a hard restart of a compute instance, simulating pulling the plug and plugging it back in.

### recycle_cluster_node
Restarts an individual node within a Kubernetes cluster to refresh its connection state.

### resize_instance
Increases or decreases the CPU/memory capacity of an existing compute instance.

### retag_instance
Adds or changes descriptive tags on a running instance for organizational purposes.

### soft_reboot_instance
Initiates a graceful software reboot of the compute instance, allowing services to shut down cleanly.

### start_instance
Starts an instance that has been previously stopped and is currently offline.

### stop_instance
Shuts down a running compute instance to save costs and halt operations.

### test_webhook
Sends a test payload through an existing webhook endpoint to verify its functionality.

### update_team_member_status
Changes the operational status (active, suspended) of a specific team member account.

### upload_ssh_key
Upload an SSH key

## Prompt Examples

**Prompt:** 
```
List all my Kubernetes clusters in the lon1 region.
```

**Response:** 
```
I've retrieved your clusters in lon1. You have one active cluster: 'production-k3s' (ID: 8f2d...) with 3 nodes currently running.
```

**Prompt:** 
```
Create a new g3.xsmall instance named 'web-server' in my default network.
```

**Response:** 
```
Starting the provisioning process for 'web-server' (size: g3.xsmall). I'll use your default network ID. The instance is being created now.
```

**Prompt:** 
```
What is my current account quota and total charges for this month?
```

**Response:** 
```
Your current quota shows 8/10 instances used and 24/40 CPU cores. Your estimated charges for this billing cycle are $42.50.
```

## Capabilities

### Provision Kubernetes Clusters
Create new K3s clusters in different regions or list existing ones for auditing.

### Manage Compute Resources
Launch, stop, reboot, resize, or tag virtual machines to fit your workload needs.

### Isolate Networks and Security
Establish private networks and apply granular firewall rules to restrict traffic between resources.

### Handle Data Persistence
Create block storage volumes or attach existing volumes directly to compute instances.

### Check Usage and Billing
Retrieve current account quotas and detailed hourly usage reports for billing purposes.

## Use Cases

### Scaling up for peak traffic
The team's primary database server is running on an instance that can't handle the load. Instead of manually logging in and upgrading, the agent runs `list_sizes` to find a bigger option and uses `resize_instance` to immediately boost the compute resources.

### Debugging a failing service
A developer suspects network bleed-through is causing errors. They ask their agent to list all private networks, then run `create_firewall` rules around the specific service to isolate and test the problem.

### Onboarding a new department
The operations team needs to give Marketing its own siloed resources. They use the agent to execute `create_team`, followed by creating isolated networks using `create_network` for that department's specific compute instances.

### Deploying a test environment
A developer needs an isolated sandbox to test against production data. They ask the agent to create a new cluster using `create_cluster`, and then attach a volume created via `create_volume` for testing purposes.

## Benefits

- Spin up isolated environments quickly. Instead of manually configuring networking, you can use the agent to create a dedicated private network and apply strict rules using `create_firewall` and `create_firewall_rule` for maximum security.
- Stay in control of spending. Check your resource limits anytime with `get_quota`, or review detailed usage costs by calling `get_charges`. You always know where the money's going.
- Handling state changes is easy. Need to scale up? Use `resize_instance` for a quick capacity boost, or if an instance is acting weird, use `reboot_instance` instead of logging into SSH just to restart it.
- Build resilient architectures. You can deploy new compute instances using `create_instance`, and ensure their data persists by immediately attaching persistent storage via `attach_volume`. No more lost state.
- Simplify DNS management. Need a new subdomain? Use the agent to first run `list_domains` to check availability, then use `create_domain` followed by `create_domain_record`.

## How It Works

The bottom line is: you treat complex cloud operations like sending an email, letting your agent handle the underlying infrastructure logic.

1. Subscribe to this MCP on Vinkius and provide your Civo API credentials.
2. Your agent authenticates the connection, making all infrastructure endpoints available via natural language commands.
3. You issue a request (e.g., 'Spin up two web servers in region X with network Y'), and the agent executes the necessary sequence of API calls.

## Frequently Asked Questions

**How do I use the create_cluster tool?**
You ask your agent to run `create_cluster`, specifying the required K3s version and region. The MCP handles the complex, multi-step process of initializing a new Kubernetes environment.

**Can I check my account usage using get_quota?**
Yes, running `get_quota` immediately pulls your current resource utilization against your hard limits. This is essential for preventing unexpected service outages due to over-provisioning.

**What's the difference between reboot_instance and soft_reboot_instance?**
Use `soft_reboot_instance` when you want services to shut down gracefully. Use `reboot_instance` only if a graceful shutdown fails, as it performs a hard restart.

**Do I need create_firewall and create_firewall_rule separately?**
Yes. You must first establish the perimeter by calling `create_firewall`, and then you use `create_firewall_rule` to define exactly what traffic is allowed through that new firewall.

**When should I use the `attach_volume` tool and how do I safely remove a volume using `detach_volume`?**
You must run `detach_volume` before attempting to attach it elsewhere. This prevents resource conflicts. The process ensures the volume is unlinked from its original instance first, making it available for reattachment.

**What's the recommended procedure and impact when I use the `resize_instance` tool?**
Resizing an instance usually requires a brief maintenance window. The MCP handles the upgrade or scale-up process, but your application should be prepared for potential temporary downtime during resource reallocation.

**Before creating a DNS record, how do I check existing domains using `list_domains`?**
You run `list_domains` to see all registered domain names attached to your account. This lets you confirm the correct namespace and prevents errors when defining new records.

**How often should I use the `get_charges` tool to monitor my actual spending?**
You can run `get_charges` at any time for a real-time usage report. It provides an hourly breakdown of charges, helping you pinpoint exactly which resources are costing money.

**Can I create a Kubernetes cluster in a specific region?**
Yes, you can use the `create_cluster` tool and specify the `region` parameter (e.g., 'lon1' or 'nyc1') along with the cluster name and network ID.

**How do I restart a stuck compute instance?**
You can use the `reboot_instance` tool for a hard reboot or `soft_reboot_instance` for a graceful restart by providing the Instance ID.

**Can I check my current cloud spending and limits?**
Absolutely. Use the `get_charges` tool to see your current billing details and `get_quota` to check your account resource limits.