MCP server for Vultr VPS hosting API
| .env.example | ||
| .gitignore | ||
| README.md | ||
| requirements.txt | ||
| server.py | ||
Vultr MCP Server
A Model Context Protocol server for the Vultr VPS API.
Tools
| Tool | Description |
|---|---|
list_regions |
List all available Vultr regions |
list_plans |
List plans, optionally filtered by region |
list_os |
List available OS images |
list_instances |
List all instances on the account |
get_instance |
Get details for a specific instance |
create_instance |
Create a new instance |
destroy_instance |
Permanently destroy an instance |
start_instance |
Power on an instance |
stop_instance |
Power off an instance |
reboot_instance |
Reboot an instance |
list_ssh_keys |
List SSH keys on the account |
create_ssh_key |
Add a new SSH key |
list_firewalls |
List firewall groups |
get_firewall |
Get rules for a firewall group |
create_firewall |
Create a new firewall group |
create_firewall_rule |
Add a rule to a firewall group |
get_account |
Get account info and current balance |
Setup
1. Install dependencies
cd /tmp/vultr-mcp
pip install -r requirements.txt
2. Set the API key
Get your API key from the Vultr control panel.
export VULTR_API_KEY=your_api_key_here
Or copy .env.example to .env and fill it in, then source it:
cp .env.example .env
# edit .env
source .env
3. Run the server
python server.py
Adding to Claude Code
Add the following to your Claude Code MCP config (typically ~/.claude/claude_desktop_config.json or via claude mcp add):
{
"mcpServers": {
"vultr": {
"command": "python",
"args": ["/tmp/vultr-mcp/server.py"],
"env": {
"VULTR_API_KEY": "your_api_key_here"
}
}
}
}
Or using the Claude Code CLI:
claude mcp add vultr \
--command "python /tmp/vultr-mcp/server.py" \
--env VULTR_API_KEY=your_api_key_here
Notes
destroy_instanceis irreversible — double-check the instance ID before calling it.- Newly created instances may show
pendingas their main IP for a minute or two while they provision. - Firewall rules default to inbound IPv4 (
ip_type: v4,direction: in). Use0.0.0.0withsubnet_size: 0to match all sources.