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
    ResponsivenessNo recent community issues

    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