Skip to main content
Glama

OVHcloud MCP Server

License: MIT Node.js Version TypeScript

MCP server for OVHcloud. Manage VPS, domains, DNS, billing, and execute SSH commands from any MCP-compatible client.

27 tools, plus search over OVH's published API schemas and a raw API call for anything not covered.

Requirements

Related MCP server: Hetzner Cloud MCP Server — Cloud API + SSH management (60 tools)

Installation

git clone https://github.com/hlebtkachenko/ovhcloud-mcp.git
cd ovhcloud-mcp
npm ci
npm run build

Configuration

Cursor

~/.cursor/mcp.json

{
  "mcpServers": {
    "ovhcloud": {
      "command": "node",
      "args": ["/path/to/ovhcloud-mcp/dist/index.js"],
      "env": {
        "OVH_APPLICATION_KEY": "your_app_key",
        "OVH_APPLICATION_SECRET": "your_app_secret",
        "OVH_CONSUMER_KEY": "your_consumer_key"
      }
    }
  }
}

Claude Desktop

claude_desktop_config.json (location)

{
  "mcpServers": {
    "ovhcloud": {
      "command": "node",
      "args": ["/path/to/ovhcloud-mcp/dist/index.js"],
      "env": {
        "OVH_APPLICATION_KEY": "your_app_key",
        "OVH_APPLICATION_SECRET": "your_app_secret",
        "OVH_CONSUMER_KEY": "your_consumer_key"
      }
    }
  }
}

Claude Code

.mcp.json in your project root, or ~/.claude.json globally:

{
  "mcpServers": {
    "ovhcloud": {
      "command": "node",
      "args": ["/path/to/ovhcloud-mcp/dist/index.js"],
      "env": {
        "OVH_APPLICATION_KEY": "your_app_key",
        "OVH_APPLICATION_SECRET": "your_app_secret",
        "OVH_CONSUMER_KEY": "your_consumer_key"
      }
    }
  }
}

Any MCP client (stdio)

The server uses stdio transport. Point your MCP client to:

node /path/to/ovhcloud-mcp/dist/index.js

With environment variables set for authentication (see below).

Environment Variables

Authentication (one of two modes, auto-detected):

Variable

Mode

Description

OVH_APPLICATION_KEY

API key

Application key

OVH_APPLICATION_SECRET

API key

Application secret

OVH_CONSUMER_KEY

API key

Consumer key

OVH_CLIENT_ID

OAuth2

Service account ID

OVH_CLIENT_SECRET

OAuth2

Service account secret

OVH_ENDPOINT

Both

ovh-eu (default), ovh-ca, ovh-us, or a custom API base URL (API key mode only)

OAuth2 gets its access token the same way as go-ovh: client credentials with scope=all from https://www.ovh.com/auth/oauth2/token (EU), https://ca.ovh.com/auth/oauth2/token (CA) or https://us.ovhcloud.com/auth/oauth2/token (US).

Other (optional):

Variable

Description

OVH_ALLOW_RAW_WRITES

true lets ovh_api_raw send POST, PUT and DELETE. Unset: GET only

OVH_TIMEOUT_MS

HTTP timeout per request (default 30000)

SSH (optional):

Variable

Description

SSH_HOST

Default SSH host. The env credentials below are used only for this host

SSH_PORT

SSH port for SSH_HOST (default: 22)

SSH_USER

Username for SSH_HOST

SSH_PASSWORD

Password for SSH_HOST

SSH_PRIVATE_KEY_FILE

Private key file for SSH_HOST (takes precedence over SSH_PASSWORD)

SSH_HOST_KEY

Pinned host key fingerprint of SSH_HOST, as printed by ssh-keygen -lf (SHA256:...). The connection is refused on mismatch

For any other host, the tool call must pass username and password itself. Without SSH_HOST_KEY (and always for other hosts) the host key is not verified; the result then carries a warning.

Tools

VPS

OVH's public API schema has no VPS CPU or network statistics, so ovh_vps_monitoring covers disks only.

Tool

Description

ovh_vps_list

List all VPS with hardware details

ovh_vps_info

Server state, hardware, IPs, service status

ovh_vps_monitoring

Disk usage statistics (used or max) per disk and period

ovh_vps_ips

List assigned IPs

ovh_vps_reboot

Reboot a VPS

ovh_vps_start

Start a stopped VPS

ovh_vps_stop

Stop a running VPS

ovh_vps_snapshot

Get snapshot info

ovh_vps_create_snapshot

Create a snapshot (needs the snapshot option and no existing snapshot)

Domains & DNS

Tool

Description

ovh_domain_list

List all domains and DNS zones

ovh_domain_zone_info

Nameservers, DNSSEC status

ovh_domain_dns_records

List records with type/subdomain filters

ovh_domain_dns_record_detail

Single record details

ovh_domain_dns_create

Create DNS record, then refresh the zone

ovh_domain_dns_update

Update DNS record, then refresh the zone

ovh_domain_dns_delete

Delete DNS record, then refresh the zone

ovh_domain_dns_refresh

Force zone refresh

Account & Billing

Tool

Description

ovh_account_info

Account details (name, email, country)

ovh_services

All services with state, renewal mode and expiration (/services)

ovh_invoices

Invoices in a date range (default: last 365 days), newest first, with PDF links

ovh_invoice_detail

Invoice with line items (the bill password is left out)

API Explorer

Discover and inspect any OVH API endpoint without writing code.

Tool

Description

ovh_api_catalog

List all API categories (vps, cloud, email, dedicated, etc.)

ovh_api_search

Search endpoints by keyword across all or specific categories

ovh_api_endpoint_detail

Parameters, types, and descriptions for any endpoint

SSH

Tool

Description

ovh_ssh_exec

Execute a command on a remote server; non-zero exit or a signal is an error

ovh_ssh_check

Test SSH connectivity

Raw API

Tool

Description

ovh_api_raw

Call any OVH API endpoint directly; POST/PUT/DELETE need OVH_ALLOW_RAW_WRITES=true

Docker

docker build -t ovhcloud-mcp .
docker run --rm \
  -e OVH_APPLICATION_KEY=... \
  -e OVH_APPLICATION_SECRET=... \
  -e OVH_CONSUMER_KEY=... \
  ovhcloud-mcp

Multi-stage build, runs as non-root node user.

Security

  • API paths are checked before every request: .., ?, # and \ are rejected, also when percent-encoded; tool parameters are encoded as single path segments

  • ovh_api_raw is read-only unless OVH_ALLOW_RAW_WRITES=true

  • SSH env credentials are sent only to SSH_HOST; SSH_HOST_KEY pins its host key

  • A write that times out is reported as "outcome unknown" and never retried

  • Every tool carries MCP annotations (readOnlyHint, destructiveHint, openWorldHint)

  • 30-second timeout on all HTTP requests; error responses truncated to 500 characters

  • SSH output capped at 100 KB

  • Docker container runs as unprivileged user

Testing

npm test                 # build + node:test suite against a fake OVH API and SSH server
npm run check:contract   # validate every tool request against OVH's published API schemas

No OVH credentials are needed for either. Layout and design: ARCHITECTURE.md.

Tech Stack

  • TypeScript

  • @modelcontextprotocol/sdk

  • Zod (schema validation)

  • ssh2 (SSH client)

  • Native fetch

API Reference

License

MIT

Available Tools

27 tools
ovh_account_infoA

Get OVH account details (name, email, country, etc.)

Inputs: no named parameters.

ovh_api_catalogA

List all available OVH API categories (vps, domain, cloud, dedicated, email, etc.)

Inputs: no named parameters.

ovh_api_endpoint_detailB

Get full details for a specific API endpoint (parameters, types, descriptions)

Inputs: path (required), method.

ovh_api_rawB

Call any OVH API endpoint directly (advanced)

Inputs: path (required), method, body, query.

ovh_domain_dns_createB

Create a new DNS record

Inputs: zone (required), fieldType (required), subDomain (required), target (required), +1 more.

ovh_domain_dns_deleteB

Delete a DNS record (careful!)

Inputs: zone (required), recordId (required).

ovh_domain_dns_record_detailA

Get a specific DNS record by ID

Inputs: zone (required), recordId (required).

ovh_domain_dns_recordsA

List DNS records for a zone (optionally filter by type or subdomain)

Inputs: zone (required), fieldType, subDomain.

ovh_domain_dns_refreshC

Force refresh a DNS zone

Inputs: zone (required).

ovh_domain_dns_updateC

Update an existing DNS record

Inputs: zone (required), recordId (required), subDomain, target, +1 more.

ovh_domain_listA

List all domains in your OVH account

Inputs: no named parameters.

ovh_domain_zone_infoC

Get DNS zone details

Inputs: zone (required).

ovh_invoice_detailA

Get full details of a specific invoice

Inputs: billId (required).

ovh_invoicesC

List recent invoices (bills)

Inputs: limit.

ovh_servicesB

List all active OVH services

Inputs: no named parameters.

ovh_ssh_checkB

Test SSH connectivity to a remote server

Inputs: host, port, username, password, +1 more.

ovh_ssh_execA

Execute a command on a remote server via SSH. Uses env defaults (SSH_HOST, SSH_USER, SSH_PASSWORD/SSH_PRIVATE_KEY_FILE) or per-call overrides.

Inputs: command (required), host, port, username, +3 more.

ovh_vps_create_snapshotA

Create a new VPS snapshot (overwrites existing)

Inputs: serviceName (required), description.

ovh_vps_infoB

Get detailed VPS information

Inputs: serviceName (required).

ovh_vps_ipsA

List all IPs assigned to a VPS

Inputs: serviceName (required).

ovh_vps_listA

List all VPS services on your OVH account

Inputs: no named parameters.

ovh_vps_monitoringB

Get VPS usage statistics (CPU, network RX/TX)

Inputs: serviceName (required), type, period.

ovh_vps_rebootC

Reboot a VPS (careful!)

Inputs: serviceName (required).

ovh_vps_snapshotB

Get VPS snapshot information

Inputs: serviceName (required).

ovh_vps_startC

Start a stopped VPS

Inputs: serviceName (required).

ovh_vps_stopA

Stop a running VPS (careful!)

Inputs: serviceName (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 27 tools

    Disambiguation5/5

    Each tool has a clear resource prefix (e.g., ovh_vps_, ovh_domain_dns_) and distinct action suffixes (list, create, delete, etc.), making it easy to differentiate them. No two tools overlap in purpose.

    Naming Consistency5/5

    All tools follow a consistent ovh_<resource>_<action> pattern in snake_case. The naming convention is uniform across all categories, aiding predictability.

    Tool Count4/5

    With 27 tools, the server covers multiple OVH services (account, API, domain, invoices, services, SSH, VPS). While slightly high, each tool serves a distinct purpose within its category, so the count is well-scoped for a comprehensive API wrapper.

    Completeness3/5

    The VPS category lacks lifecycle operations like create, delete, or update VPS instances. Invoices miss a download option. The API tools are thorough, but gaps in VPS management and missing broader OVH services reduce completeness.

    Maintenance

    ActivitySlowing
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Open-source MCP server for managing Hetzner Cloud infrastructure with two management layers: * Layer 1 — Hetzner Cloud API (35 tools): Server power control, metrics, snapshots, backups, firewalls, DNS zones and records, rescue mode, server rebuild and rescale. Works even when the server OS is unresponsive. * Layer 2 — SSH (25 tools): Service management (systemd), Nginx config and reload,
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      MCP server wrapping the full VitoDeploy REST API to manage projects, servers, sites, databases, services, workers, SSL, DNS, and more through any MCP-compatible agent, with 108 tools covering every endpoint.
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Exposes tools to manage and inspect an OpenMediaVault NAS, running on the NAS and communicating over SSH with any MCP-capable coding harness.
      48
      MIT