Scaleway MCP server

Scaleway's own CLI run as an MCP server, turning its commands into tools for managing Scaleway cloud resources

Official · Scaleway Go Local · stdio Cloud platformsDevOps and monitoring

84 popularity score ★ 1.0k ⇣ 10.0M pulls

Connect your client

Local (Docker)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs SCW_ACCESS_KEY, SCW_SECRET_KEY. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add scaleway -e SCW_ACCESS_KEY=<SCW_ACCESS_KEY> -e SCW_SECRET_KEY=<SCW_SECRET_KEY> -- docker run -i --rm -e SCW_ACCESS_KEY -e SCW_SECRET_KEY scaleway/cli mcp server serve
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "scaleway": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SCW_ACCESS_KEY",
        "-e",
        "SCW_SECRET_KEY",
        "scaleway/cli",
        "mcp",
        "server",
        "serve"
      ],
      "env": {
        "SCW_ACCESS_KEY": "<SCW_ACCESS_KEY>",
        "SCW_SECRET_KEY": "<SCW_SECRET_KEY>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "scaleway": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SCW_ACCESS_KEY",
        "-e",
        "SCW_SECRET_KEY",
        "scaleway/cli",
        "mcp",
        "server",
        "serve"
      ],
      "env": {
        "SCW_ACCESS_KEY": "<SCW_ACCESS_KEY>",
        "SCW_SECRET_KEY": "<SCW_SECRET_KEY>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "scaleway": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SCW_ACCESS_KEY",
        "-e",
        "SCW_SECRET_KEY",
        "scaleway/cli",
        "mcp",
        "server",
        "serve"
      ],
      "env": {
        "SCW_ACCESS_KEY": "<SCW_ACCESS_KEY>",
        "SCW_SECRET_KEY": "<SCW_SECRET_KEY>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.scaleway]
command = "docker"
args = ["run", "-i", "--rm", "-e", "SCW_ACCESS_KEY", "-e", "SCW_SECRET_KEY", "scaleway/cli", "mcp", "server", "serve"]

[mcp_servers.scaleway.env]
SCW_ACCESS_KEY = "<SCW_ACCESS_KEY>"
SCW_SECRET_KEY = "<SCW_SECRET_KEY>"
Gemini CLITerminal
gemini mcp add --scope user -e SCW_ACCESS_KEY=<SCW_ACCESS_KEY> -e SCW_SECRET_KEY=<SCW_SECRET_KEY> scaleway docker -- run -i --rm -e SCW_ACCESS_KEY -e SCW_SECRET_KEY scaleway/cli mcp server serve
Local (from source)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs SCW_ACCESS_KEY, SCW_SECRET_KEY. Replace each <NAME> with your value.

FirstTerminal
go install github.com/scaleway/scaleway-cli/v2/cmd/scw@v2.65.1
Claude CodeTerminal
claude mcp add scaleway -e SCW_ACCESS_KEY=<SCW_ACCESS_KEY> -e SCW_SECRET_KEY=<SCW_SECRET_KEY> -- scw mcp server serve
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "scaleway": {
      "command": "scw",
      "args": [
        "mcp",
        "server",
        "serve"
      ],
      "env": {
        "SCW_ACCESS_KEY": "<SCW_ACCESS_KEY>",
        "SCW_SECRET_KEY": "<SCW_SECRET_KEY>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "scaleway": {
      "command": "scw",
      "args": [
        "mcp",
        "server",
        "serve"
      ],
      "env": {
        "SCW_ACCESS_KEY": "<SCW_ACCESS_KEY>",
        "SCW_SECRET_KEY": "<SCW_SECRET_KEY>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "scaleway": {
      "type": "stdio",
      "command": "scw",
      "args": [
        "mcp",
        "server",
        "serve"
      ],
      "env": {
        "SCW_ACCESS_KEY": "<SCW_ACCESS_KEY>",
        "SCW_SECRET_KEY": "<SCW_SECRET_KEY>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.scaleway]
command = "scw"
args = ["mcp", "server", "serve"]

[mcp_servers.scaleway.env]
SCW_ACCESS_KEY = "<SCW_ACCESS_KEY>"
SCW_SECRET_KEY = "<SCW_SECRET_KEY>"
Gemini CLITerminal
gemini mcp add --scope user -e SCW_ACCESS_KEY=<SCW_ACCESS_KEY> -e SCW_SECRET_KEY=<SCW_SECRET_KEY> scaleway scw -- mcp server serve

Settings 9

SCW_ACCESS_KEY Required: Access key of a Scaleway API key.
SCW_SECRET_KEY Required: Secret key of the same API key.
SCW_DEFAULT_PROJECT_ID Optional: Project used when a tool is not given one.
SCW_DEFAULT_ORGANIZATION_ID Optional: Organization used when a tool is not given one.
SCW_DEFAULT_REGION Optional: Default region, such as fr-par.
SCW_DEFAULT_ZONE Optional: Default zone, such as fr-par-1.
SCW_PROFILE Optional: Profile to use from the CLI config file.
SCW_CONFIG_PATH Optional: Path to a config file other than ~/.config/scw/config.yaml.
SCW_ENABLE_BETA Optional: Set to 1 to include beta commands as tools.

In a container, a setting goes in with -e NAME=value after docker run.

What it does

The Scaleway MCP server is part of the official Scaleway command-line tool (`scw`), not a separate program. Running `scw mcp server serve` starts it. It takes each CLI command and offers it as a tool named namespace_resource_verb, for example instance_server_list. The tool descriptions and input schemas come from the CLI's own help text and arguments. An assistant can then list, inspect, create, update and delete things across Scaleway's products: Instances, Bare Metal, Kapsule Kubernetes, managed databases, Object Storage, DNS, IAM, Secret Manager, serverless functions and containers, load balancers, VPCs, billing and more. Every list command is also published as a read-only MCP resource.

The tool set is not fixed. It is built at startup from every command the installed CLI version has. The startup filters `--read-only` (only get and list commands), `namespaces=`, `resources=` and `verbs=` (each takes a comma-separated list) narrow it. Without filters, hundreds of tools are registered. The tool names are cut to 64 characters, and tool descriptions are cut after 200 characters of the long help text (internal/namespaces/mcp/server/mcp_tools.go).

It speaks stdio by default. `transport=streamable-http` serves the same tools over HTTP at /mcp, bound to `:8080` unless `address=` is given. The code at v2.65.1 adds no sign-in to that HTTP listener (streamable_http.go). The code also leaves some namespaces out of the tool set: config, alias, autocomplete, shell, login and init, plus the `edit` verb (loader.go).

What it needs

RuntimeDockerorGo 1.27+

A Scaleway account and an API key: the access key and secret key, set as SCW_ACCESS_KEY and SCW_SECRET_KEY or in ~/.config/scw/config.yaml. The `scw` CLI, v2.65.1 or a recent release, installed with Homebrew, Chocolatey, a release binary or `go install` (needs Go 1.27 or later). Or Docker with the scaleway/cli image. Scaleway bills for any resources the tools create.

Limits

Covers only Scaleway. The tools are the CLI's commands, so anything the CLI lacks is missing here too. Beta commands appear only when SCW_ENABLE_BETA=1 is set. The config, init, login, shell, alias and autocomplete commands and every `edit` command are never offered. The streamable HTTP mode binds to all interfaces on :8080 by default and has no authentication of its own. Without filters, the hundreds of tools can fill a client's tool list. The main README does not mention the MCP server: it is documented only in internal/namespaces/mcp/README.md and docs/commands/mcp.md.

Who it suits

Suits developers who already use Scaleway and the `scw` CLI and want an assistant to look at or change their infrastructure with the same API key and profiles. Start it with `--read-only` or a `namespaces=` filter to limit what the assistant can touch and keep the tool list short. It is maintained by Scaleway itself. Pick something else for clouds other than Scaleway. Also skip it if you want a small, fixed set of tools, since this one offers the whole CLI.

Tools 2

instance_server_list
Lists the Instance virtual machines in a zone
iam_user_list
Lists the IAM users of the organization

Similar servers