Scaleway · Capability

Scaleway Cloud Infrastructure

Unified workflow capability for managing Scaleway cloud infrastructure including virtual machine instances, Kubernetes clusters, node pools, and secret management. Used by cloud engineers and DevOps teams to provision and manage European cloud resources programmatically through a single interface.

Run with Naftiko Cloud ComputingComputeDevOpsInfrastructureKubernetesScalewaySecurity

What You Can Do

GET
List instances — List all Instances in a zone
/v1/instances
POST
Create instance — Create a new Instance
/v1/instances
GET
Get instance — Get Instance details
/v1/instances/{id}
DELETE
Delete instance — Delete an Instance
/v1/instances/{id}
POST
Execute instance action — Execute a lifecycle action (poweron, poweroff, reboot)
/v1/instances/{id}/action
GET
List clusters — List Kubernetes clusters
/v1/clusters
POST
Create cluster — Create a Kubernetes cluster
/v1/clusters
GET
Get cluster — Get cluster details
/v1/clusters/{id}
GET
Get cluster kubeconfig — Get cluster kubeconfig
/v1/clusters/{id}/kubeconfig
GET
List node pools — List node pools
/v1/clusters/{id}/pools
POST
Create node pool — Create a node pool
/v1/clusters/{id}/pools
GET
List secrets — List secrets
/v1/secrets
POST
Create secret — Create a secret
/v1/secrets

MCP Tools

list-instances

List all Scaleway virtual machine instances in a zone

read-only
create-instance

Create a new Scaleway virtual machine instance

get-instance

Get details of a specific Scaleway instance

read-only
delete-instance

Delete a Scaleway instance

idempotent
execute-instance-action

Execute a lifecycle action on an instance (poweron, poweroff, reboot)

list-instance-images

List available OS images for Scaleway instances

read-only
list-clusters

List Scaleway managed Kubernetes clusters

read-only
create-cluster

Create a new managed Kubernetes cluster on Scaleway

get-cluster

Get details of a Scaleway Kubernetes cluster

read-only
delete-cluster

Delete a Scaleway Kubernetes cluster

idempotent
get-cluster-kubeconfig

Download kubeconfig for a Scaleway Kubernetes cluster

read-only
list-node-pools

List node pools in a Kubernetes cluster

read-only
create-node-pool

Add a node pool to a Kubernetes cluster

list-nodes

List nodes in a Kubernetes cluster

read-only
list-secrets

List secrets in Scaleway Secret Manager

read-only
create-secret

Create a new secret in Scaleway Secret Manager

get-secret

Get a secret from Scaleway Secret Manager

read-only
delete-secret

Delete a secret from Scaleway Secret Manager

idempotent

APIs Used

scaleway-instance scaleway-kubernetes scaleway-secrets

Capability Spec

cloud-infrastructure.yaml Raw ↑
naftiko: "1.0.0-alpha1"

info:
  label: "Scaleway Cloud Infrastructure"
  description: >-
    Unified workflow capability for managing Scaleway cloud infrastructure including
    virtual machine instances, Kubernetes clusters, node pools, and secret management.
    Used by cloud engineers and DevOps teams to provision and manage European cloud resources
    programmatically through a single interface.
  tags:
    - Cloud Computing
    - Compute
    - DevOps
    - Infrastructure
    - Kubernetes
    - Scaleway
    - Security
  created: "2026-05-02"
  modified: "2026-05-02"

binds:
  - namespace: env
    keys:
      SCALEWAY_API_KEY: SCALEWAY_API_KEY

capability:
  consumes:
    - import: scaleway-instance
      location: ./shared/instance.yaml
    - import: scaleway-kubernetes
      location: ./shared/kubernetes.yaml
    - import: scaleway-secrets
      location: ./shared/secret-manager.yaml

  exposes:
    - type: rest
      port: 8080
      namespace: scaleway-cloud-infra-api
      description: "Unified REST API for Scaleway cloud infrastructure management."
      resources:
        - path: /v1/instances
          name: instances
          description: "Virtual machine instance management"
          operations:
            - method: GET
              name: list-instances
              description: "List all Instances in a zone"
              call: "scaleway-instance.list-servers"
              with:
                zone: "rest.zone"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: create-instance
              description: "Create a new Instance"
              call: "scaleway-instance.create-server"
              with:
                zone: "rest.zone"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/instances/{id}
          name: instance
          description: "Manage a specific Instance"
          operations:
            - method: GET
              name: get-instance
              description: "Get Instance details"
              call: "scaleway-instance.get-server"
              with:
                zone: "rest.zone"
                server_id: "rest.id"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: DELETE
              name: delete-instance
              description: "Delete an Instance"
              call: "scaleway-instance.delete-server"
              with:
                zone: "rest.zone"
                server_id: "rest.id"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/instances/{id}/action
          name: instance-action
          description: "Execute instance lifecycle actions"
          operations:
            - method: POST
              name: execute-instance-action
              description: "Execute a lifecycle action (poweron, poweroff, reboot)"
              call: "scaleway-instance.execute-server-action"
              with:
                zone: "rest.zone"
                server_id: "rest.id"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/clusters
          name: clusters
          description: "Kubernetes cluster management"
          operations:
            - method: GET
              name: list-clusters
              description: "List Kubernetes clusters"
              call: "scaleway-kubernetes.list-clusters"
              with:
                region: "rest.region"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: create-cluster
              description: "Create a Kubernetes cluster"
              call: "scaleway-kubernetes.create-cluster"
              with:
                region: "rest.region"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/clusters/{id}
          name: cluster
          description: "Manage a specific Kubernetes cluster"
          operations:
            - method: GET
              name: get-cluster
              description: "Get cluster details"
              call: "scaleway-kubernetes.get-cluster"
              with:
                region: "rest.region"
                cluster_id: "rest.id"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/clusters/{id}/kubeconfig
          name: cluster-kubeconfig
          description: "Cluster access credentials"
          operations:
            - method: GET
              name: get-cluster-kubeconfig
              description: "Get cluster kubeconfig"
              call: "scaleway-kubernetes.get-cluster-kubeconfig"
              with:
                region: "rest.region"
                cluster_id: "rest.id"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/clusters/{id}/pools
          name: node-pools
          description: "Cluster node pool management"
          operations:
            - method: GET
              name: list-node-pools
              description: "List node pools"
              call: "scaleway-kubernetes.list-pools"
              with:
                region: "rest.region"
                cluster_id: "rest.id"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: create-node-pool
              description: "Create a node pool"
              call: "scaleway-kubernetes.create-pool"
              with:
                region: "rest.region"
                cluster_id: "rest.id"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/secrets
          name: secrets
          description: "Secret management"
          operations:
            - method: GET
              name: list-secrets
              description: "List secrets"
              call: "scaleway-secrets.list-secrets"
              with:
                region: "rest.region"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: create-secret
              description: "Create a secret"
              call: "scaleway-secrets.create-secret"
              with:
                region: "rest.region"
              outputParameters:
                - type: object
                  mapping: "$."

    - type: mcp
      port: 9090
      namespace: scaleway-cloud-infra-mcp
      transport: http
      description: "MCP server for AI-assisted Scaleway cloud infrastructure management."
      tools:
        - name: list-instances
          description: "List all Scaleway virtual machine instances in a zone"
          hints:
            readOnly: true
            openWorld: true
          call: "scaleway-instance.list-servers"
          with:
            zone: "tools.zone"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-instance
          description: "Create a new Scaleway virtual machine instance"
          hints:
            readOnly: false
            destructive: false
            idempotent: false
          call: "scaleway-instance.create-server"
          with:
            zone: "tools.zone"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-instance
          description: "Get details of a specific Scaleway instance"
          hints:
            readOnly: true
            openWorld: false
          call: "scaleway-instance.get-server"
          with:
            zone: "tools.zone"
            server_id: "tools.server_id"
          outputParameters:
            - type: object
              mapping: "$."
        - name: delete-instance
          description: "Delete a Scaleway instance"
          hints:
            readOnly: false
            destructive: true
            idempotent: true
          call: "scaleway-instance.delete-server"
          with:
            zone: "tools.zone"
            server_id: "tools.server_id"
          outputParameters:
            - type: object
              mapping: "$."
        - name: execute-instance-action
          description: "Execute a lifecycle action on an instance (poweron, poweroff, reboot)"
          hints:
            readOnly: false
            destructive: false
            idempotent: false
          call: "scaleway-instance.execute-server-action"
          with:
            zone: "tools.zone"
            server_id: "tools.server_id"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-instance-images
          description: "List available OS images for Scaleway instances"
          hints:
            readOnly: true
            openWorld: true
          call: "scaleway-instance.list-images"
          with:
            zone: "tools.zone"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-clusters
          description: "List Scaleway managed Kubernetes clusters"
          hints:
            readOnly: true
            openWorld: true
          call: "scaleway-kubernetes.list-clusters"
          with:
            region: "tools.region"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-cluster
          description: "Create a new managed Kubernetes cluster on Scaleway"
          hints:
            readOnly: false
            destructive: false
            idempotent: false
          call: "scaleway-kubernetes.create-cluster"
          with:
            region: "tools.region"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-cluster
          description: "Get details of a Scaleway Kubernetes cluster"
          hints:
            readOnly: true
            openWorld: false
          call: "scaleway-kubernetes.get-cluster"
          with:
            region: "tools.region"
            cluster_id: "tools.cluster_id"
          outputParameters:
            - type: object
              mapping: "$."
        - name: delete-cluster
          description: "Delete a Scaleway Kubernetes cluster"
          hints:
            readOnly: false
            destructive: true
            idempotent: true
          call: "scaleway-kubernetes.delete-cluster"
          with:
            region: "tools.region"
            cluster_id: "tools.cluster_id"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-cluster-kubeconfig
          description: "Download kubeconfig for a Scaleway Kubernetes cluster"
          hints:
            readOnly: true
            openWorld: false
          call: "scaleway-kubernetes.get-cluster-kubeconfig"
          with:
            region: "tools.region"
            cluster_id: "tools.cluster_id"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-node-pools
          description: "List node pools in a Kubernetes cluster"
          hints:
            readOnly: true
            openWorld: false
          call: "scaleway-kubernetes.list-pools"
          with:
            region: "tools.region"
            cluster_id: "tools.cluster_id"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-node-pool
          description: "Add a node pool to a Kubernetes cluster"
          hints:
            readOnly: false
            destructive: false
            idempotent: false
          call: "scaleway-kubernetes.create-pool"
          with:
            region: "tools.region"
            cluster_id: "tools.cluster_id"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-nodes
          description: "List nodes in a Kubernetes cluster"
          hints:
            readOnly: true
            openWorld: false
          call: "scaleway-kubernetes.list-nodes"
          with:
            region: "tools.region"
            cluster_id: "tools.cluster_id"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-secrets
          description: "List secrets in Scaleway Secret Manager"
          hints:
            readOnly: true
            openWorld: true
          call: "scaleway-secrets.list-secrets"
          with:
            region: "tools.region"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-secret
          description: "Create a new secret in Scaleway Secret Manager"
          hints:
            readOnly: false
            destructive: false
            idempotent: false
          call: "scaleway-secrets.create-secret"
          with:
            region: "tools.region"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-secret
          description: "Get a secret from Scaleway Secret Manager"
          hints:
            readOnly: true
            openWorld: false
          call: "scaleway-secrets.get-secret"
          with:
            region: "tools.region"
            secret_id: "tools.secret_id"
          outputParameters:
            - type: object
              mapping: "$."
        - name: delete-secret
          description: "Delete a secret from Scaleway Secret Manager"
          hints:
            readOnly: false
            destructive: true
            idempotent: true
          call: "scaleway-secrets.delete-secret"
          with:
            region: "tools.region"
            secret_id: "tools.secret_id"
          outputParameters:
            - type: object
              mapping: "$."