VPS4You provides native support for Anthropic's open Model Context Protocol (MCP). You can connect your AI coding assistants (such as Cursor, Claude Desktop, Antigravity, or custom LLM agents) directly to your infrastructure to query status, restart VPS instances, check balances, or manage services using natural language.
The MCP server supports both Server-Sent Events (SSE) streaming and direct JSON-RPC 2.0 requests:
https://vps4you.hu/mcp.php
You can authenticate your MCP requests in three ways:
https://vps4you.hu/mcp.php?apikey=YOUR_API_KEY&email=your@email.com
Authorization: Bearer YOUR_API_KEY and X-API-Email: your@email.comAuthorization: Bearer your@email.com:YOUR_API_KEY)
"apikey" and "email" inside the tool call's argument parameters or under "_auth".
In Cursor (Settings → Features → MCP → Add New MCP Server):
VPS4Youssehttps://vps4you.hu/mcp.php?apikey=YOUR_API_KEY&email=your@email.comAdd the following to your claude_desktop_config.json file:
{
"mcpServers": {
"vps4you": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://vps4you.hu/mcp.php?apikey=YOUR_API_KEY&email=your@email.com"
]
}
}
}
Once connected, the AI model gains access to the following built-in tools:
| Tool Name | Description | Arguments |
|---|---|---|
list_services |
Lists all services (VPS, web hosting, game servers, domains) of your account with their status, expiration dates, and IP addresses. | type (optional: vps, games, web, domain), service_id (optional) |
get_service_status |
Returns real-time operational status (power state, CPU usage %, memory usage, disk usage, uptime, Proxmox node) of a VPS. | service_id (required) |
control_vps |
Executes power actions on a VPS instance. | service_id (required), command (required: start, stop, restart, shutdown, reset, force-shutdown) |
get_vps_templates |
Fetches the list of available OS reinstallation templates (Debian, Ubuntu, AlmaLinux, Windows, etc.) compatible with the VPS. | service_id (required) |
reinstall_vps |
Triggers an operating system reinstallation for a VPS. (Erases disk data) | service_id (required), template_id (required) |
get_account_balance |
Retrieves current account balance and currency (HUF). | None |
set_reverse_dns |
Configures PTR (Reverse DNS) record for a VPS IP address. | service_id (required), reverse (required), ip (optional) |
list_packages |
Lists available hosting packages, specifications, and prices (public, works without auth). | type (required: vps, games, web, domain) |
get_dnssec_status |
Checks DNSSEC status and DS/DNSKEY records for registered domains. | service_id (required) |
pay_service |
Renews or extends an active or suspended service from the account balance. Supports price_check: true to preview costs without paying. |
service_id (required), days (optional, 1-365), price_check (optional, boolean) |
order_service |
Orders and instantly provisions a new service (VPS, Game server, Web hosting, Domain) using account balance. Supports price_check: true. |
type (required: vps, games, web, domain), package_id (required), template_id (optional), days (optional), price_check (optional), domain_name/domain_tld/domain_contact (for domains) |
change_vps_package |
Upgrades, downgrades, or adds extra resources (CPU, RAM, SSD, network) to an active VPS. Supports price_check: true for previewing prorated charges. |
service_id (required), new_package_id (optional), extra_cpu (optional), extra_ram_gb (optional), extra_ssd_gb (optional), extra_disk_gb (optional), extra_network (optional), price_check (optional) |
set_ssh_public_key |
Updates the user's default OpenSSH public key (supports ed25519, RSA, ECDSA) for automatic Cloud-Init injection on new VPS installs. | ssh_public_key (required) |
toggle_dnssec |
Enables or disables DNSSEC for a registered .hu or international domain. | service_id (required), enabled (required, boolean) |
set_vps_custom_name |
Sets or clears a friendly custom display name for a VPS. | service_id (required), custom_name (optional, string) |
list_vps_ips |
Lists all assigned IPv4 and IPv6 addresses and their reverse DNS settings for a VPS. | service_id (required) |
reset_vps_password |
Resets the Proxmox control panel / root password of a VPS and emails the new credentials. | service_id (required) |
list_vps_isos |
Lists all available installation ISO images and shows the currently mounted ISO for a VPS. | service_id (required) |
mount_vps_iso |
Mounts an ISO installation image into the virtual CD-ROM drive of a VPS. | service_id (required), iso (required, filename) |
unmount_vps_iso |
Ejects and unmounts the ISO image from the virtual CD-ROM drive of a VPS. | service_id (required) |
get_vps_firewall |
Retrieves extra DDoS / application firewall settings (Metin2 or FiveM protection) for a VPS. | service_id (required) |
set_vps_firewall |
Configures extra DDoS / application firewall protection (Metin2 or FiveM) on a VPS. | service_id (required), type (required: metin2 or fivem), metin2_ports (for metin2), fivem_port & txadmin_port (for fivem) |
delete_vps_firewall |
Removes extra DDoS / application firewall protection from a VPS. | service_id (required) |
get_domain_nameservers |
Retrieves the current authoritative nameservers for a registered domain. | service_id (required) |
set_domain_nameservers |
Updates the authoritative nameservers for a registered domain. | service_id (required), nameservers (required, array of hostnames or glue records) |
get_domain_authcode |
Fetches or requests the transfer authorization code (EPP / Auth code) for an active domain. | service_id (required) |
list_dns_records |
Lists all DNS zone records for a registered domain or DNS zone. | service_id (required) |
add_dns_record |
Adds a new DNS record (A, AAAA, CNAME, MX, TXT, SRV, etc.) to a domain zone. | service_id (required), name (required), type (required), content (required), ttl (optional), prio (optional) |
delete_dns_record |
Deletes a specific DNS record from a domain zone. | service_id (required), record_id (required) |
get_web_info |
Retrieves connection details, control panel URL, FTP/phpMyAdmin/Webmail links, and quotas for a web hosting service. | service_id (required) |
reset_web_password |
Resets the ISPConfig web hosting control panel password and emails new credentials to the user. | service_id (required) |
set_web_subdomain |
Assigns or updates a free .v4y.hu subdomain for a web hosting service. | service_id (required), subdomain (required) |
delete_web_subdomain |
Removes the free .v4y.hu subdomain from a web hosting service. | service_id (required) |
set_web_custom_name |
Sets or clears a friendly custom display name for a web hosting service. | service_id (required), custom_name (required) |
get_s3_info |
Retrieves S3 Object Storage credentials (Access Key, Secret Key, Endpoint URL) and storage quotas. | service_id (required) |
list_s3_buckets |
Lists all S3 object buckets and their sizes for a storage service. | service_id (required) |
create_s3_bucket |
Creates a new S3 object storage bucket with optional quota and access policies. | service_id (required), bucket_name (required), quota_gb (optional), policy (optional: none, download, public) |
delete_s3_bucket |
Deletes an S3 object storage bucket (must be empty). | service_id (required), bucket_name (required) |
list_invoices |
Lists billing invoices with download URLs, payment status, issue/due dates, and amounts. | limit (optional, default 50) |
list_transactions |
Lists financial transactions, balance top-ups, service debits, and payment method details. | limit (optional, default 50) |
All API requests must be made via POST to the following URL:
https://vps4you.hu/api.php
Use the API key found in your profile settings. This key does not expire unless regenerated.
| Parameter | Description |
|---|---|
email |
Your registered email address. |
apikey |
Your persistent API key. |
Login with your email to receive a temporary API key valid for 24 hours. This method requires 2FA.
POST action=login
| Parameter | Description |
|---|---|
email |
Your registered email address. |
Response (2FA Required):
{"success":false, "error":"2FA required", "2fasent":true}. An email with the code
will
be sent. If a code was already sent recently, 2fasent will be false.
POST action=login
| Parameter | Description |
|---|---|
email |
Your registered email address. |
token |
The 6-digit code received in email. |
Success Response:
{"success":true, "apikey":"TEMPORARY_KEY_HERE", "temporary":true}
Use this temporary apikey for subsequent requests (valid for 24 hours).
<?php
$url = 'https://vps4you.hu/api.php';
$fields = [
'email' => 'your@email.com',
'apikey' => 'your_api_key',
'json' => 1,
'action' => 'service-list'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result);
?>
All API responses are returned in JSON format.
| Field | Type | Description |
|---|---|---|
success |
boolean | Indicates if the request was successful (true) or failed
(false). |
logged_in |
boolean | Indicates if the user is currently authenticated. Useful for checking session status even if an error occurred. |
version |
string | The current API version (e.g., "1.6"). |
error |
string | (Only on failure) A human-readable error message describing why the request failed. |
{
"success": true,
"logged_in": true,
"version": "1.6",
"packages": { ... }
}
{
"success": false,
"logged_in": false,
"version": "1.6",
"error": "Invalid login"
}
POST action=get-packages
Retrieve a list of available service packages.
| Parameter | Description |
|---|---|
type |
Service type: vps, games, web, or
domain.
|
POST action=service-list
List your active services.
| Parameter | Description |
|---|---|
id |
(Optional) Filter by specific service ID. |
POST action=service-order
Order a new service (VPS, Web, Games).
| Parameter | Description |
|---|---|
type |
vps, web, games. |
packageid |
ID of the package to order. |
templateid |
(For VPS/Games) ID of the OS template or game version. |
days |
(Optional) Number of days to order for. |
POST action=service-pay
Extend a service using your balance.
| Parameter | Description |
|---|---|
serviceid |
ID of the service to pay for. |
days |
(Optional) Number of days to extend. |
POST action=vps-get-templates
Get available OS templates for a package or existing service.
| Parameter | Description |
|---|---|
packageid |
ID of the package (for new orders). |
serviceid |
ID of the service (for reinstall). |
POST action=vps-get-status
Get the current status of a VPS or Game server.
| Parameter | Description |
|---|---|
serviceid |
ID of the service. |
POST action=vps-change-status
Start, stop, or restart a server.
| Parameter | Description |
|---|---|
serviceid |
ID of the service. |
command |
start, stop, shutdown, reset,
force-shutdown.
|
POST action=vps-reinstall
Reinstall a server with a specific template.
| Parameter | Description |
|---|---|
serviceid |
ID of the service. |
templateid |
ID of the template to use. |
POST action=vps-set-reverse
Set the reverse DNS record for an IP.
| Parameter | Description |
|---|---|
serviceid |
ID of the service. |
ip |
(Optional) Specific IP address. |
reverse |
The reverse hostname. |
POST action=vps-change-package
Change VPS package or add extra resources.
| Parameter | Description |
|---|---|
serviceid |
ID of the service. |
newpackage |
(Optional) ID of the new package. If omitted, uses current package (resource upgrade). |
extracpu |
(Optional) Number of extra vCPUs. |
extraram |
(Optional) Amount of extra RAM in GB. |
extrassd |
(Optional) Amount of extra SSD storage in GB. |
extradisk |
(Optional) Amount of extra HDD storage in GB. |
extranet |
(Optional) Extra network bandwidth in Mbit/s (values: 50, 100, 200, 500, 1000). |
agent |
(Optional) Enable (1) or disable (0) QEMU Guest Agent on the VPS. |
pricecheck |
(Optional) Set to 1 to calculate price without executing changes. |
paymentmethod |
balance (default) or date (adjusts expiration date). |
Price Check Response:
{
"success": true,
"paydiff": 1500,
"currency": "HUF",
"new_package_name": "EPYC VPS 4GB",
"new_price": 5000,
"datediff": 1709856000,
"new_cpu": 4,
"new_ram": 4096,
"new_ssd": 80,
"new_disk": [],
"new_extranet": 0
}
POST action=vps-get-rrd-data
Get CPU, Memory, Network, and Disk RRD resource statistics for a VPS.
| Parameter | Description |
|---|---|
serviceid |
ID of the VPS service. |
timeframe |
(Optional) hour (default), day, week, month, or year. |
cf |
(Optional) AVERAGE (default) or MAXIMUM. |
Success Response:
{
"success": true,
"labels": ["22:00", "22:05", "22:10", ...],
"cpu_points": [0.25, 0.44, 0.31, ...],
"mem_points": [45.2, 45.3, 45.2, ...],
"netin_points": [1.2, 0.8, 1.5, ...],
"netout_points": [0.5, 0.6, 0.7, ...],
"diskread_points": [0.0, 0.1, 0.0, ...],
"diskwrite_points": [0.2, 0.5, 0.3, ...],
"latest": {
"cpu": 0.35,
"mem_total_gb": 4.0,
"mem_used_gb": 1.8,
"mem_pct": 45.2,
"netin": 1.25,
"netout": 0.55,
"diskread": 0.05,
"diskwrite": 0.25
}
}
POST action=vps-set-customname
Set or remove a friendly custom display name for a VPS.
| Parameter | Description |
|---|---|
serviceid |
ID of the VPS service. |
customname |
New display name (or leave empty to clear). Max 100 characters. |
POST action=vps-list-ips
Get all assigned IPv4 and IPv6 addresses and their reverse DNS (PTR) records.
| Parameter | Description |
|---|---|
serviceid |
ID of the VPS service. |
POST action=vps-reset-password
Generate a new secure Proxmox control panel password for the VPS and email it to the user.
| Parameter | Description |
|---|---|
serviceid |
ID of the VPS service. |
POST action=vps-iso-list
List all available OS installation ISO images and check the currently mounted ISO.
| Parameter | Description |
|---|---|
serviceid |
ID of the VPS service. |
POST action=vps-iso-mount
Mount an installation ISO image into the virtual CD-ROM drive.
| Parameter | Description |
|---|---|
serviceid |
ID of the VPS service. |
iso |
ISO filename (obtained from vps-iso-list). |
POST action=vps-iso-unmount
Eject / unmount the ISO image from the virtual CD-ROM drive.
| Parameter | Description |
|---|---|
serviceid |
ID of the VPS service. |
POST action=vps-firewall-status
Check the active extra DDoS / application firewall configuration (Metin2 or FiveM protection).
| Parameter | Description |
|---|---|
serviceid |
ID of the VPS service. |
POST action=vps-firewall-set
Enable and configure application-specific DDoS firewall protection.
| Parameter | Description |
|---|---|
serviceid |
ID of the VPS service. |
fwtype |
Protection profile: metin2 or fivem. |
metin2_ports |
(If fwtype=='metin2') Comma-separated list of game ports (e.g. 13000,13001,13002). Ports 22 and 3306 are not allowed. |
fivem_port |
(If fwtype=='fivem') Primary FiveM server port (default: 30120). |
txadmin_port |
(If fwtype=='fivem') txAdmin management web port (default: 40120). |
POST action=vps-firewall-delete
Remove extra DDoS / application firewall protection from the VPS.
| Parameter | Description |
|---|---|
serviceid |
ID of the VPS service. |
POST action=web-change-package
Change the package of a web hosting service. This action performs strict validation to ensure that the currently allocated storage (Web, Email, Database) does not exceed the limits of the new package.
| Parameter | Description |
|---|---|
serviceid |
ID of the web hosting service. |
newpackage |
ID of the new package to switch to. |
Note: If the current usage exceeds the new package limits, the request will fail with a specific error message.
POST action=web-get-info
Get connection info, control panel URL, server IP/FQDN, FTP port, phpMyAdmin and Webmail URLs, email settings, and storage quota.
| Parameter | Description |
|---|---|
serviceid |
ID of the web hosting service. |
POST action=web-reset-password
Generate a new secure ISPConfig control panel password and send it to the user's email address.
| Parameter | Description |
|---|---|
serviceid |
ID of the web hosting service. |
POST action=web-set-subdomain
Configure a free .v4y.hu subdomain for the website (e.g. mytest -> mytest.v4y.hu).
| Parameter | Description |
|---|---|
serviceid |
ID of the web hosting service. |
subdomain |
Desired subdomain name (without .v4y.hu). |
POST action=web-delete-subdomain
Remove the assigned .v4y.hu subdomain and delete its DNS A records.
| Parameter | Description |
|---|---|
serviceid |
ID of the web hosting service. |
POST action=web-set-customname
Assign a friendly custom label/name to the web hosting service.
| Parameter | Description |
|---|---|
serviceid |
ID of the web hosting service. |
customname |
Custom name string (max 20 characters). |
POST action=domain-check
Check if a domain is available for registration.
| Parameter | Description |
|---|---|
domain |
Full domain name (e.g., example.hu). |
Success Response:
{
"success": true,
"available": true
}
POST action=domain-order
Register or transfer a domain.
| Parameter | Description |
|---|---|
domain |
Full domain name (e.g., example.hu). |
type |
reg or transfer. |
owner |
newperson, neworg, or existing owner ID. |
authcode |
(Required for transfer) Transfer authorization code. |
dnsserver |
defaultdns or customdns. |
nameservers |
(If dnsserver=='customdns') Array of nameservers. Can be a simple list
of hostnames or an array of objects for glue records.Example (JSON): {
"nameservers": [
{
"hostname": "ns1.example.com",
"ipv4": "1.2.3.4",
"ipv6": "2001:db8::1"
},
"ns2.example.com"
]
}
|
defaultdnsArecord |
(If dnsserver=='defaultdns') IP address for the default A record. |
defaultdnsMXrecord |
(If dnsserver=='defaultdns') FQDN for the default MX record. |
New Owner Fields (if owner is newperson/neworg):
email, phone, country, zipcode,
city, address
|
firstname, lastname, birthdate (for
newperson) |
companyname, vatid (for neworg) |
POST action=domain-set-transfer-authcode
Submit an auth code for a pending transfer.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
authcode |
The authorization code. |
POST action=domain-update-ns
Update nameservers for a domain.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
nameservers |
Array of nameservers. Can be a simple list of hostnames or an array of objects for
glue records. Example (JSON): {
"nameservers": [
{
"hostname": "ns1.example.com",
"ipv4": "1.2.3.4",
"ipv6": "2001:db8::1"
},
"ns2.example.com"
]
}
|
POST action=domain-dnssec-status
Get the current DNSSEC status and active cryptographic keys (DS or DNSKEY records) for a domain.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
Success Response (Openprovider domain):
{
"success": true,
"provider": "openprovider",
"is_dnssec_enabled": true,
"keys": [
{
"flags": 257,
"protocol": 3,
"algorithm": 13,
"public_key": "..."
}
]
}
POST action=domain-dnssec-toggle
Enable or disable DNSSEC for a domain. If the domain is hosted on our nameservers, the system automatically configures the local BIND zone and submits keys to the registry.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
enabled |
1 to enable, 0 to disable. |
POST action=domain-dnssec-add-key
Manually add a DNSSEC key or DS record to the registry for domains using custom nameservers.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
| For non-.hu domains (Openprovider): | |
flags |
Key flags: 257 (KSK) or 256 (ZSK). |
protocol |
Protocol number (default is 3). |
algorithm |
Algorithm type (e.g. 8 for RSASHA256, 13 for ECDSAP256SHA256). |
public_key |
The public key string. |
| For .hu domains (ngDRR): | |
key_tag |
Key tag integer value. |
alg |
Algorithm integer value. |
digest_type |
Digest type integer value. |
digest |
The hex-encoded digest string. |
POST action=domain-dnssec-delete-key
Remove a specific DNSSEC key or DS record from the registry.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
| For non-.hu domains (Openprovider): | |
key_index |
The 0-based index of the key to delete. |
| For .hu domains (ngDRR): | |
index |
The 1-based index (1-8) of the DS record to delete. |
POST action=domain-get-nameservers
Retrieve authoritative nameservers currently configured at the registry for the domain.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
POST action=domain-set-nameservers
Update authoritative nameservers at the registry.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
nameservers |
Array of nameservers (hostnames or objects with hostname, ipv4, ipv6 for glue records). |
POST action=domain-get-authcode
Fetch or request the transfer authorization code (EPP code) for the domain.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
POST action=domain-dns-list
List all DNS records for a domain.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
POST action=domain-dns-add
Add a new DNS record.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
type |
A, AAAA, CNAME, MX, TXT, SRV, ALIAS, CAA, DMARC, DNAME, DS, HINFO, LOC, NAPTR, PTR, RP, SPF, SSHFP, TLSA.
|
name |
Subdomain name. |
data |
Record value (e.g., IP address). |
prio |
(Optional) Priority for MX/SRV. |
ttl |
(Optional) Time-To-Live in seconds. Default is 3600. |
POST action=domain-dns-delete
Delete a DNS record.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
recordid |
ID of the record to delete. |
POST action=domain-dns-edit
Edit an existing DNS record by removing the old record and adding the new one with updated values.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
recordid |
ID of the record to edit (will be deleted first). |
type |
A, AAAA, CNAME, MX, TXT, SRV, ALIAS, CAA, DMARC, DNAME, DS, HINFO, LOC, NAPTR, PTR, RP, SPF, SSHFP, TLSA.
|
name |
Subdomain name. |
data |
Record value (e.g., IP address). |
prio |
(Optional) Priority for MX/SRV. |
weight |
(Optional) Weight for SRV. |
port |
(Optional) Port for SRV. |
ttl |
(Optional) Time-To-Live in seconds. Default is 3600. |
POST action=domain-dns-export
Export all DNS records as BIND zone file format.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
POST action=domain-dns-import
Import DNS records from BIND zone file content. Existing NS records are always overwritten/replaced during this process.
| Parameter | Description |
|---|---|
serviceid |
ID of the domain service. |
zone_text |
Raw text content of the BIND zone file. |
clear_existing |
(Optional) Set to 1 to delete all existing non-NS records first. Default is 0. |
POST action=s3-get-info
Retrieve S3 Object Storage API credentials (endpoint URL, access key, secret key) and current storage usage/quotas.
| Parameter | Description |
|---|---|
serviceid |
ID of the S3 storage service. |
POST action=s3-buckets-list
List all storage buckets under the S3 account, along with their size and object count.
| Parameter | Description |
|---|---|
serviceid |
ID of the S3 storage service. |
POST action=s3-bucket-create
Create a new S3 object storage bucket with optional quota and access policy.
| Parameter | Description |
|---|---|
serviceid |
ID of the S3 storage service. |
bucket_name |
Bucket name (DNS compliant: lowercase letters, numbers, hyphens). |
quota_gb |
(Optional) Bucket storage quota in Gigabytes. |
policy |
(Optional) Access policy: none (private, default), download (public read), or public (public read/write). |
POST action=s3-bucket-delete
Delete an S3 object storage bucket (the bucket must be empty).
| Parameter | Description |
|---|---|
serviceid |
ID of the S3 storage service. |
bucket_name |
Name of the bucket to delete. |
POST action=user-get-balance
Get your current account balance.
| Parameter | Description |
|---|---|
currency |
HUF. |
POST action=user-set-sshpubkey
Update your SSH public key.
| Parameter | Description |
|---|---|
sshpubkey |
The SSH public key string. |
POST action=user-get-invoices
Get billing invoices issued to your account, including PDF download links, payment statuses, and amounts.
| Parameter | Description |
|---|---|
limit |
(Optional) Number of records to return (1-200, default: 50). |
POST action=user-get-transactions
Get your financial transaction log (balance top-ups, service renewals/orders, refunds, etc.).
| Parameter | Description |
|---|---|
limit |
(Optional) Number of records to return (1-200, default: 50). |