scaleway-mcp
# scaleway-mcp
A comprehensive [Model Context Protocol](https://modelcontextprotocol.io) (MCP)
server for the [Scaleway](https://www.scaleway.com) cloud platform. It exposes
Scaleway's products as MCP tools so an AI agent (Claude Desktop, Claude Code,
Cursor, and any other MCP client) can inspect and manage your cloud
infrastructure.
- **21 products, 155+ tools** spanning compute, containers, storage, databases,
networking, messaging, and platform services — built on the official
[`scaleway-async`](https://github.com/scaleway/scaleway-sdk-python) SDK.
- **Namespaced tools** (`instances_list_servers`, `object_storage_list_buckets`)
so the agent can discover capabilities per product.
- **Safe by default.** Destructive operations are opt-in and, when enabled, only
touch resources this server created.
- **Structured JSON output**, not formatted text, so agents parse results reliably.
- **One small file per product**, with a documented recipe for adding more.
> Beta. The tool surface may change. Review the [security model](docs/security.md)
> before pointing it at a production account.
## Quick start
The server runs with [`uv`](https://docs.astral.sh/uv/) / `uvx` and needs a
Scaleway [API key](https://www.scaleway.com/en/docs/identity-and-access-management/iam/how-to/create-api-keys/).
### Claude Code
```bash
claude mcp add scaleway \
-e SCW_ACCESS_KEY=SCWXXXXXXXXXXXXXXXXX \
-e SCW_SECRET_KEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
-e SCW_DEFAULT_PROJECT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
-- uvx scaleway-mcp
```
### Claude Desktop / Cursor / other clients
Add to the client's MCP config (for Claude Desktop:
`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"scaleway": {
"command": "uvx",
"args": ["scaleway-mcp"],
"env": {
"SCW_ACCESS_KEY": "SCWXXXXXXXXXXXXXXXXX",
"SCW_SECRET_KEY": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"SCW_DEFAULT_PROJECT_ID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}
}
```
Full client instructions: [docs/adding-to-your-agent.md](docs/adding-to-your-agent.md).
## Authentication
The server authenticates exactly like the `scw` CLI and the official SDK: it
reads `~/.config/scw/config.yaml` when present and overlays the standard
environment variables (`SCW_ACCESS_KEY`, `SCW_SECRET_KEY`,
`SCW_DEFAULT_PROJECT_ID`, `SCW_DEFAULT_REGION`, `SCW_DEFAULT_ZONE`, ...). If you
already use the CLI, it works with no extra setup. See
[docs/configuration.md](docs/configuration.md).
## Product coverage
| Bundle | Products |
| --- | --- |
| Compute & Containers | Instances, Elastic Metal, Kubernetes (Kapsule), Serverless Containers, Serverless Functions, Container Registry |
| Storage & Databases | Object Storage (S3), Block Storage, Managed Databases (RDB), Redis |
| Networking | VPC, Load Balancers, Public Gateway, Domains & DNS, Flexible IP |
| Platform & Ops | IAM, Secret Manager, Cockpit (observability), Billing & Account |
| Messaging & Queuing | Queues (SQS), Topics & Events (SNS) |
The complete, always-current tool list with parameters is in
[docs/TOOLS.md](docs/TOOLS.md). Ask the agent to call `scaleway_list_products`
to see what is enabled at runtime.
Enable only the products you need:
```bash
SCW_ENABLED_PRODUCTS=instance,object_storage,rdb
```
## Safety
- **Reads and creates by default; deletes are opt-in.** Delete tools are not
even registered unless `SCW_ENABLE_DELETE=true`.
- Resources created through this server are tagged `created_by=scaleway-mcp`.
With deletes enabled, the server refuses to delete anything lacking that tag
unless `SCW_ALLOW_DELETE_UNTAGGED=true`.
- Use a least-privilege IAM key scoped to the products you enable. Details in
[docs/security.md](docs/security.md).
## Local development
```bash
git clone https://github.com/sndpl/scaleway-mcp
cd scaleway-mcp
uv sync --extra dev
uv run pytest # tests
uv run ruff check . # lint
uv run mypy # types
# Run against your account from a local checkout:
uvx --from . scaleway-mcp
```
## Contributing
Adding a Scaleway product is a small, mechanical task. See
[CONTRIBUTING.md](CONTRIBUTING.md) for the step-by-step recipe.
## License
[Apache-2.0](LICENSE). This is an unofficial, community project and is not
affiliated with or endorsed by Scaleway.
TDQS
Scored across 129 tools
Each tool is clearly scoped to a specific service and action (e.g., baremetal_, instances_, etc.). Within each service, tools like create, get, list, and update are distinct. No two tools could easily be confused for the same operation.
All tools follow a consistent {service}_{verb}_{resource} pattern using snake_case. For example, baremetal_create_server, block_storage_list_volumes. No mixing of styles or inconsistent abbreviations.
129 tools is large but appropriate for a comprehensive cloud MCP covering many services. Each service has a focused set (3-12 tools), so the count reflects the breadth of Scaleway's offerings without feeling bloated for its scope.
Many services lack critical lifecycle operations, notably delete and update tools. For instance, there is no tool to delete a baremetal server, compute instance, Kubernetes cluster, or block volume. Additionally, the functions service has no create_function tool. The toolkit covers basic read and create operations but misses essential management actions.