- Explore MCP Servers
- cloudstack-mcp-server
Cloudstack Mcp Server
What is Cloudstack Mcp Server
The CloudStack MCP Server is a high-performance server designed for integrating with the Apache CloudStack API using the Model Context Protocol (MCP). It provides tools to efficiently manage CloudStack infrastructure and supports integration with AI assistants and automation tools.
Use cases
The CloudStack MCP Server can be utilized for a variety of cloud management tasks, such as lifecycle management of virtual machines (VMs), storage volume operations, network management, monitoring system performance, and user and account management. It caters to both developers and system administrators looking to automate and streamline their cloud infrastructure operations.
How to use
To get started, clone the repository, install dependencies, and configure the necessary environment variables in a .env file. Once the project is built, the server can be run in development or production mode. Additionally, it can be integrated with MCP clients by modifying their configuration to include the server as an endpoint for issuing commands.
Key features
Key features include complete VM lifecycle management, secure authentication with HMAC-SHA1, high performance due to an efficient TypeScript implementation, and extensive type safety. It offers a command-line interface for direct management and a wealth of tools for various cloud management needs, including VM, storage, and networking operations.
Where to use
This MCP server is suitable for organizations using Apache CloudStack that require advanced cloud management functionalities. It is particularly useful in environments that require automation, integration with AI tools, and a robust solution for managing cloud infrastructure, making it applicable in data centers, development operations (DevOps), and IT management.
Overview
What is Cloudstack Mcp Server
The CloudStack MCP Server is a high-performance server designed for integrating with the Apache CloudStack API using the Model Context Protocol (MCP). It provides tools to efficiently manage CloudStack infrastructure and supports integration with AI assistants and automation tools.
Use cases
The CloudStack MCP Server can be utilized for a variety of cloud management tasks, such as lifecycle management of virtual machines (VMs), storage volume operations, network management, monitoring system performance, and user and account management. It caters to both developers and system administrators looking to automate and streamline their cloud infrastructure operations.
How to use
To get started, clone the repository, install dependencies, and configure the necessary environment variables in a .env file. Once the project is built, the server can be run in development or production mode. Additionally, it can be integrated with MCP clients by modifying their configuration to include the server as an endpoint for issuing commands.
Key features
Key features include complete VM lifecycle management, secure authentication with HMAC-SHA1, high performance due to an efficient TypeScript implementation, and extensive type safety. It offers a command-line interface for direct management and a wealth of tools for various cloud management needs, including VM, storage, and networking operations.
Where to use
This MCP server is suitable for organizations using Apache CloudStack that require advanced cloud management functionalities. It is particularly useful in environments that require automation, integration with AI tools, and a robust solution for managing cloud infrastructure, making it applicable in data centers, development operations (DevOps), and IT management.
Content
CloudStack MCP Server
A high-performance MCP (Model Context Protocol) server for Apache CloudStack API integration. This server provides comprehensive tools for managing CloudStack infrastructure through the MCP protocol, enabling seamless integration with AI assistants and automation tools.
Features
- š§ Complete VM Lifecycle Management: Deploy, start, stop, reboot, and destroy virtual machines
- šļø Infrastructure Discovery: List zones, templates, and service offerings
- š Secure Authentication: HMAC-SHA1 signed requests with CloudStack API credentials
- ā” High Performance: Efficient TypeScript implementation with proper error handling
- š”ļø Type Safety: Full TypeScript support with comprehensive interfaces
- š Rich Information: Detailed VM metadata including CPU, memory, network, and status
- š„ļø Command Line Interface: Direct CLI access for interactive CloudStack management
- š¤ MCP Integration: Seamless integration with AI assistants via MCP protocol
Quick Start
Installation
-
Clone and install dependencies:
git clone <repository-url> cd cloudstack-mcp-server npm install
-
Configure environment variables:
Create a.env
file in the project root:CLOUDSTACK_API_URL=https://your-cloudstack-server/client/api CLOUDSTACK_API_KEY=your-api-key CLOUDSTACK_SECRET_KEY=your-secret-key CLOUDSTACK_TIMEOUT=30000
-
Build the project:
npm run build
-
Run the server:
# Development mode (MCP server) npm run dev # Production mode (MCP server) npm start # CLI mode npm run cli -- --help
MCP Client Integration
Add to your MCP client configuration (e.g., Claude Desktop):
{
"mcpServers": {
"cloudstack": {
"command": "node",
"args": [
"/path/to/cloudstack-mcp-server/build/index.js"
],
"env": {
"CLOUDSTACK_API_URL": "https://your-cloudstack-server/client/api",
"CLOUDSTACK_API_KEY": "your-api-key",
"CLOUDSTACK_SECRET_KEY": "your-secret-key"
}
}
}
}
Command Line Interface
For direct command-line access, use the built-in CLI:
# Install globally (optional)
npm link
# Use the CLI
cloudstack-cli list-vms --state Running
cloudstack-cli deploy-vm --service-offering-id 1 --template-id 2 --zone-id 3
cloudstack-cli get-vm --id 12345-67890-abcdef
# See all available commands
cloudstack-cli --help
For detailed CLI documentation, see CLI.md.
Available Tools (45 Tools)
š„ļø Virtual Machine Management (7 Tools)
Tool | Description | Parameters |
---|---|---|
list_virtual_machines |
List VMs with optional filtering | zoneid , state , keyword |
get_virtual_machine |
Get detailed VM information | id (required) |
start_virtual_machine |
Start a stopped virtual machine | id (required) |
stop_virtual_machine |
Stop a running virtual machine | id (required), forced (optional) |
reboot_virtual_machine |
Reboot a virtual machine | id (required) |
destroy_virtual_machine |
Destroy a VM with proper workflow (handles all states) | id (required), confirm (required), expunge (optional) |
deploy_virtual_machine |
Deploy a new VM (auto-selects network for Advanced zones) | serviceofferingid , templateid , zoneid (required), name , displayname , networkids (optional) |
āļø VM Advanced Operations (4 Tools)
Tool | Description | Parameters |
---|---|---|
scale_virtual_machine |
Scale (resize) a virtual machine | id , serviceofferingid , confirm (required) |
migrate_virtual_machine |
Migrate VM to another host | virtualmachineid , confirm (required), hostid (optional) |
reset_password_virtual_machine |
Reset password for a virtual machine | id , confirm (required) |
change_service_offering_virtual_machine |
Change service offering for a VM | id , serviceofferingid (required) |
š¾ Storage Management (7 Tools)
Tool | Description | Parameters |
---|---|---|
list_volumes |
List storage volumes | virtualmachineid , type , zoneid |
create_volume |
Create a new storage volume | name , zoneid (required), diskofferingid , size |
attach_volume |
Attach a volume to a virtual machine | id , virtualmachineid (required) |
detach_volume |
Detach a volume from a virtual machine | id , confirm (required) |
resize_volume |
Resize a storage volume | id , size , confirm (required) |
create_snapshot |
Create a snapshot of a volume | volumeid (required), name |
list_snapshots |
List volume snapshots | volumeid , snapshottype |
š Networking (7 Tools)
Tool | Description | Parameters |
---|---|---|
list_networks |
List networks | zoneid , type |
create_network |
Create a new network | name , networkofferingid , zoneid (required), displaytext |
list_public_ip_addresses |
List public IP addresses | zoneid , associatednetworkid |
associate_ip_address |
Acquire a new public IP address | zoneid (required), networkid |
enable_static_nat |
Enable static NAT for an IP address | ipaddressid , virtualmachineid (required) |
create_firewall_rule |
Create a firewall rule | ipaddressid , protocol (required), startport , endport , cidrlist |
list_load_balancer_rules |
List load balancer rules | publicipid , zoneid |
š Monitoring & Analytics (5 Tools)
Tool | Description | Parameters |
---|---|---|
list_virtual_machine_metrics |
Get virtual machine performance metrics | ids |
list_events |
List CloudStack events | type , level , startdate , pagesize |
list_alerts |
List system alerts | type |
list_capacity |
List system capacity information | zoneid , type |
list_async_jobs |
List asynchronous jobs | jobstatus , jobresulttype |
š„ Account & User Management (4 Tools)
Tool | Description | Parameters |
---|---|---|
list_accounts |
List CloudStack accounts | domainid , accounttype |
list_users |
List users | accountid , username |
list_domains |
List CloudStack domains | name |
list_usage_records |
List resource usage records | startdate , enddate (required), type |
šļø Infrastructure Discovery (2 Tools)
Tool | Description | Parameters |
---|---|---|
list_zones |
List all available zones | available (optional) |
list_templates |
List available VM templates | templatefilter , zoneid (optional) |
š§ System Administration (5 Tools)
Tool | Description | Parameters |
---|---|---|
list_hosts |
List physical hosts | zoneid , type , state |
list_clusters |
List host clusters | zoneid |
list_storage_pools |
List storage pools | zoneid , clusterid |
list_system_vms |
List system virtual machines | zoneid , systemvmtype |
list_service_offerings |
List service offerings | name , domainid |
š Security & Compliance (4 Tools)
Tool | Description | Parameters |
---|---|---|
list_ssh_key_pairs |
List SSH key pairs | name |
create_ssh_key_pair |
Create a new SSH key pair | name (required) |
list_security_groups |
List security groups | securitygroupname |
create_security_group_rule |
Create a security group ingress rule | securitygroupid , protocol (required), startport , endport , cidrlist |
Example Usage
List Virtual Machines
{
"tool": "list_virtual_machines",
"arguments": {
"state": "Running",
"zoneid": "1746ef10-8fa6-40c1-9c82-c3956bf75db8"
}
}
Deploy New Virtual Machine
{
"tool": "deploy_virtual_machine",
"arguments": {
"serviceofferingid": "c6f99499-7f59-4138-9427-a09db13af2bc",
"templateid": "7d4a7bb5-2409-4c8f-8537-6bbdc8a4e5c1",
"zoneid": "1746ef10-8fa6-40c1-9c82-c3956bf75db8",
"name": "my-new-vm",
"displayname": "My New VM"
}
}
Project Structure
āāā src/ ā āāā index.ts # MCP server entry point ā āāā server.ts # Main MCP server implementation ā āāā cli.ts # Command-line interface ā āāā cloudstack-client.ts # CloudStack API client āāā build/ # Compiled JavaScript output āāā CLI.md # CLI documentation āāā package.json # Dependencies and scripts āāā tsconfig.json # TypeScript configuration āāā .env # Environment variables (not in repo)
Architecture Overview
src/index.ts
: MCP server entry point that loads environment variables and starts the serversrc/server.ts
: Comprehensive MCP server implementation with 45+ tool handlers, error management, and CloudStack integrationsrc/cli.ts
: Command-line interface for direct CloudStack management via JSON-RPC communication with the MCP serversrc/cloudstack-client.ts
: Robust CloudStack API client with HMAC-SHA1 authentication, type-safe interfaces, and comprehensive error handling
Configuration
Required Environment Variables
Variable | Description | Example |
---|---|---|
CLOUDSTACK_API_URL |
CloudStack API endpoint | http://cloudstack.example.com:8080/client/api |
CLOUDSTACK_API_KEY |
CloudStack API key | your-32-character-api-key |
CLOUDSTACK_SECRET_KEY |
CloudStack secret key | your-secret-key |
Optional Environment Variables
Variable | Description | Default |
---|---|---|
CLOUDSTACK_TIMEOUT |
Request timeout (milliseconds) | 30000 |
Development
Build Commands
# Build TypeScript to JavaScript
npm run build
# Run MCP server in development mode with hot reload
npm run dev
# Run CLI in development mode
npm run dev:cli -- list-vms --help
# Run compiled MCP server
npm start
# Run compiled CLI
npm run cli -- list-vms --help
# Type checking only
npx tsc --noEmit
Code Quality
- TypeScript: Full type safety with strict mode enabled
- Error Handling: Comprehensive error handling with MCP error types
- Async/Await: Modern async patterns throughout
- Modular Design: Clean separation of concerns
Security
- HMAC-SHA1 Signing: All API requests are cryptographically signed
- No Credential Storage: Credentials read from environment variables only
- Request Validation: Input validation on all tool parameters
- Error Sanitization: Sensitive information filtered from error messages
Compatibility
- CloudStack: Compatible with CloudStack 4.11+
- Node.js: Requires Node.js 18+
- MCP Protocol: Implements MCP SDK 0.5.0+
- TypeScript: Built with TypeScript 5.0+
License
MIT - See LICENSE file for details