Model Context Protocol (MCP)
The Sitequest MCP endpoint lets AI assistants like GitHub Copilot, Claude, or other MCP-compatible clients interact with your infrastructure directly.
Overview
MCP (Model Context Protocol) is an open standard that allows AI applications to securely connect to external tools and data sources. Sitequest implements a stateless Streamable HTTP MCP server.
- Endpoint:
POST https://hosting.site.quest/mcp - Protocol version:
2025-03-26 - Transport: Streamable HTTP (stateless, JSON responses)
- Authentication: Same API keys as the REST API
Available Tools
VPS tools
| Tool | Required Scope | Description |
|---|---|---|
list_vms |
vps:read |
List all VPS instances with status, specs, and usage metrics |
get_vm |
vps:read |
Get detailed VPS info including live config and status |
get_vm_monitoring |
vps:read |
CPU/memory/ping history and downtime stats |
get_vm_traffic |
vps:read |
Current-month bandwidth usage and daily traffic log |
list_ssh_keys |
vps:read |
List all SSH keys on a VPS |
vm_power |
vps:manage |
Start, stop, or restart a VPS |
vm_reinstall_os |
vps:manage |
Reinstall the operating system (destructive, requires confirm) |
vm_mount_iso |
vps:manage |
Mount or unmount an ISO image |
vm_reset_password |
vps:manage |
Generate a new root password (destructive, requires confirm) |
rename_vm |
vps:manage |
Update the display name of a VPS |
list_backups |
vps:manage |
List all backups for a VPS |
create_backup |
vps:manage |
Create a new backup (requires confirm) |
restore_backup |
vps:manage |
Restore a VPS from a backup (destructive, requires confirm) |
delete_backup |
vps:manage |
Delete a backup (destructive, requires confirm) |
get_firewall |
vps:manage |
Get firewall status and rules |
manage_firewall |
vps:manage |
Add/remove rules, enable/disable firewall |
exec_command |
vps:manage |
Execute a one-shot SSH command on a VPS |
list_files |
vps:manage |
List directory contents via SFTP |
read_file |
vps:manage |
Read file content via SFTP |
write_file |
vps:manage |
Write file content via SFTP |
ssh_security |
vps:manage |
Get or update SSH security settings |
generate_ssh_key |
vps:manage |
Generate an SSH key pair, optionally store for web terminal |
upload_ssh_key |
vps:manage |
Upload a public SSH key, optionally store for web terminal |
delete_ssh_key |
vps:manage |
Delete an SSH key from a VPS |
create_vm |
vps:provision |
Create a new VPS (creates order + charges mandate) |
delete_vm |
vps:provision |
Delete a VPS at the provider (destructive, requires confirm) |
upgrade_vm |
vps:provision |
Upgrade VPS resources (CPU, RAM, disk, etc.) |
Domain tools
| Tool | Required Scope | Description |
|---|---|---|
list_domains |
domains:read |
List all domains with registration status and DNS record count |
get_domain |
domains:read |
Get detailed domain info including DNS records and registrar data |
list_dns_records |
domains:read |
List DNS records for a domain |
add_dns_record |
domains:manage |
Create a DNS record |
edit_dns_record |
domains:manage |
Update an existing DNS record |
delete_dns_record |
domains:manage |
Remove a DNS record |
set_nameservers |
domains:manage |
Update domain nameservers |
set_transfer_lock |
domains:manage |
Enable or disable transfer lock |
set_whois_privacy |
domains:manage |
Enable or disable WHOIS privacy |
set_dnssec |
domains:manage |
Enable or disable DNSSEC |
get_authcode |
domains:manage |
Get the domain auth code (transfer key) |
register_domain |
domains:provision |
Register a new domain (creates order + charges mandate) |
transfer_domain |
domains:provision |
Transfer a domain to Sitequest (creates order + charges mandate) |
cancel_domain |
domains:provision |
Cancel a domain at the registrar (destructive, requires confirm) |
Order tools
| Tool | Required Scope | Description |
|---|---|---|
get_order_status |
vps:provision or domains:provision |
Get order status by ID or token |
Webspace tools
Shared web hosting with isolated PHP/MariaDB sites. SFTP and exec tools operate as the unprivileged site Linux user, jailed to the site's home directory.
| Tool | Required Scope | Description |
|---|---|---|
webspace_list |
webspace:read |
List all webspaces with status, plan, CMS, and quota usage |
webspace_get |
webspace:read |
Get a webspace including linked domains and live disk usage |
webspace_get_ssh_info |
webspace:read |
SSH connection details (host, port, username, host key fingerprint) |
webspace_list_ssh_keys |
webspace:read |
List authorized SSH keys |
webspace_create |
webspace:provision |
Provision a paid webspace (creates order + charges mandate) |
webspace_claim_free |
webspace:provision |
Claim the one-shot free-tier webspace for the account |
webspace_upgrade |
webspace:provision |
Increase disk and/or database count (no downgrades) |
webspace_delete |
webspace:provision |
Delete a webspace permanently (destructive, requires confirm) |
webspace_set_label |
webspace:manage |
Update the display name |
webspace_set_php |
webspace:manage |
Change the PHP version (8.1 – 8.5, requires confirm) |
webspace_install_cms |
webspace:manage |
Install/reinstall WordPress, Joomla, TYPO3 or static (wipes docroot, requires confirm) |
webspace_link_domain |
webspace:manage |
Attach a user-owned domain and issue a Let's Encrypt cert |
webspace_unlink_domain |
webspace:manage |
Detach a previously linked domain (requires confirm) |
webspace_reset_db_password |
webspace:manage |
Reset the MariaDB password (returns new password once, requires confirm) |
webspace_exec |
webspace:manage |
Execute a one-shot SSH command in the jailed shell |
webspace_list_files |
webspace:manage |
List directory contents via jailed SFTP |
webspace_read_file |
webspace:manage |
Read a file via jailed SFTP (max 10 MB) |
webspace_write_file |
webspace:manage |
Write a file via jailed SFTP (max 10 MB) |
webspace_mkdir |
webspace:manage |
Create a new directory in the jail |
webspace_rename |
webspace:manage |
Rename / move within the jail |
webspace_delete_path |
webspace:manage |
Delete a file or directory (requires confirm) |
webspace_chmod |
webspace:manage |
Change permissions of a file/directory |
webspace_add_ssh_key |
webspace:manage |
Upload an authorized SSH public key |
webspace_delete_ssh_key |
webspace:manage |
Remove an authorized SSH key by fingerprint (requires confirm) |
Pricing for webspaces is not yet exposed via MCP. Use the REST endpoint
GET /api/v1/webspaces/pricinguntil aget_webspace_pricingtool is added.
Setup for VS Code / GitHub Copilot
Create a .vscode/mcp.json file in your workspace:
{
"servers": {
"sitequest": {
"type": "http",
"url": "https://hosting.site.quest/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Replace YOUR_API_KEY with an API key that has the scopes you need (e.g. vps:read, domains:read).
After saving the file, VS Code will detect the MCP server automatically. You can then ask Copilot questions like:
- "List my VPS instances"
- "What domains do I have?"
- "Show me the details for server X"
Setup for Other MCP Clients
Any MCP client that supports the Streamable HTTP transport can connect. Configure:
- URL:
https://hosting.site.quest/mcp - Method:
POSTonly (GET returns 405) - Headers:
Authorization: Bearer YOUR_API_KEYContent-Type: application/jsonAccept: application/json, text/event-stream
Manual JSON-RPC Example
Initialize:
curl -X POST https://hosting.site.quest/mcp \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-03-26",
"capabilities": {},
"clientInfo": { "name": "my-client", "version": "1.0" }
}
}'
List available tools:
curl -X POST https://hosting.site.quest/mcp \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}'
Call a tool:
curl -X POST https://hosting.site.quest/mcp \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "list_vms",
"arguments": {}
}
}'
Authentication
MCP uses the same API key system as the REST API. See Authorization for details on creating keys and managing scopes.
Rate Limiting
MCP requests share the same rate limit as the REST API: 60 requests per minute per API key. Rate limit headers are included in every response.
Differences from REST API
| Feature | REST API | MCP |
|---|---|---|
| Protocol | HTTP REST | JSON-RPC 2.0 over HTTP |
| Methods | Standard HTTP verbs | POST only |
| Response format | { "data": ... } |
JSON-RPC result/error |
| Sessions | Stateless | Stateless (no SSE streaming) |
| Use case | Direct integration | AI assistant integration |
Source code & client examples
The Sitequest MCP server listing, sample client configurations (VS Code, Claude Desktop, Cursor, and more), and the directory listing for MCP catalogs are maintained in the public repository: