Vagrant · Capability

Vagrant Box Lifecycle

Unified workflow capability for managing the complete Vagrant box lifecycle - from searching the public catalog and creating new boxes, to publishing versions and managing providers. Designed for DevOps engineers and platform teams automating development environment distribution via Vagrant Cloud.

Run with Naftiko DevOpsVirtualizationVagrantBoxesHashiCorpCI/CDInfrastructure

What You Can Do

GET
Search boxes — Search the Vagrant box catalog
/v1/boxes
POST
Create box — Create a new Vagrant box
/v1/boxes
GET
Get box — Get a specific Vagrant box
/v1/boxes/{username}/{name}
PUT
Update box — Update a Vagrant box
/v1/boxes/{username}/{name}
DELETE
Delete box — Delete a Vagrant box
/v1/boxes/{username}/{name}
POST
Create version — Create a new version for a box
/v1/boxes/{username}/{name}/versions
GET
Get version — Get a specific box version
/v1/boxes/{username}/{name}/versions/{version}
PUT
Release version — Publish a box version
/v1/boxes/{username}/{name}/versions/{version}/release

MCP Tools

search-boxes

Search the public Vagrant box catalog

read-only
get-box

Get details for a specific Vagrant box

read-only idempotent
create-box

Create a new Vagrant box in the registry

update-box

Update a Vagrant box metadata

idempotent
delete-box

Delete a Vagrant box

idempotent
create-version

Create a new version for a Vagrant box

get-version

Get a specific box version details

read-only idempotent
release-version

Publish a box version to make it available for download

idempotent

APIs Used

vagrant-cloud

Capability Spec

box-lifecycle.yaml Raw ↑
naftiko: "1.0.0-alpha1"

info:
  label: Vagrant Box Lifecycle
  description: >-
    Unified workflow capability for managing the complete Vagrant box lifecycle -
    from searching the public catalog and creating new boxes, to publishing versions
    and managing providers. Designed for DevOps engineers and platform teams automating
    development environment distribution via Vagrant Cloud.
  tags:
    - DevOps
    - Virtualization
    - Vagrant
    - Boxes
    - HashiCorp
    - CI/CD
    - Infrastructure
  created: "2026-05-03"
  modified: "2026-05-03"

binds:
  - namespace: env
    keys:
      VAGRANT_CLOUD_TOKEN: VAGRANT_CLOUD_TOKEN

capability:
  consumes:
    - import: vagrant-cloud
      location: ./shared/vagrant-cloud.yaml

  exposes:
    - type: rest
      port: 8080
      namespace: box-lifecycle-api
      description: Unified REST API for Vagrant box lifecycle management.
      resources:
        - path: /v1/boxes
          name: boxes
          description: Search and create Vagrant boxes
          operations:
            - method: GET
              name: search-boxes
              description: Search the Vagrant box catalog
              call: "vagrant-cloud.search-boxes"
              with:
                q: "rest.q"
                provider: "rest.provider"
                sort: "rest.sort"
                limit: "rest.limit"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: create-box
              description: Create a new Vagrant box
              call: "vagrant-cloud.create-box"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/boxes/{username}/{name}
          name: box
          description: Individual box management
          operations:
            - method: GET
              name: get-box
              description: Get a specific Vagrant box
              call: "vagrant-cloud.get-box"
              with:
                username: "rest.username"
                name: "rest.name"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: PUT
              name: update-box
              description: Update a Vagrant box
              call: "vagrant-cloud.update-box"
              with:
                username: "rest.username"
                name: "rest.name"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: DELETE
              name: delete-box
              description: Delete a Vagrant box
              call: "vagrant-cloud.delete-box"
              with:
                username: "rest.username"
                name: "rest.name"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/boxes/{username}/{name}/versions
          name: versions
          description: Box version management
          operations:
            - method: POST
              name: create-version
              description: Create a new version for a box
              call: "vagrant-cloud.create-version"
              with:
                username: "rest.username"
                name: "rest.name"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/boxes/{username}/{name}/versions/{version}
          name: version
          description: Individual version management
          operations:
            - method: GET
              name: get-version
              description: Get a specific box version
              call: "vagrant-cloud.get-version"
              with:
                username: "rest.username"
                name: "rest.name"
                version: "rest.version"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/boxes/{username}/{name}/versions/{version}/release
          name: version-release
          description: Release a box version
          operations:
            - method: PUT
              name: release-version
              description: Publish a box version
              call: "vagrant-cloud.release-version"
              with:
                username: "rest.username"
                name: "rest.name"
                version: "rest.version"
              outputParameters:
                - type: object
                  mapping: "$."

    - type: mcp
      port: 9090
      namespace: box-lifecycle-mcp
      transport: http
      description: MCP server for AI-assisted Vagrant box lifecycle management.
      tools:
        - name: search-boxes
          description: Search the public Vagrant box catalog
          hints:
            readOnly: true
            openWorld: true
          call: "vagrant-cloud.search-boxes"
          with:
            q: "tools.q"
            provider: "tools.provider"
            sort: "tools.sort"
            limit: "tools.limit"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-box
          description: Get details for a specific Vagrant box
          hints:
            readOnly: true
            idempotent: true
          call: "vagrant-cloud.get-box"
          with:
            username: "tools.username"
            name: "tools.name"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-box
          description: Create a new Vagrant box in the registry
          hints:
            readOnly: false
          call: "vagrant-cloud.create-box"
          outputParameters:
            - type: object
              mapping: "$."
        - name: update-box
          description: Update a Vagrant box metadata
          hints:
            readOnly: false
            idempotent: true
          call: "vagrant-cloud.update-box"
          with:
            username: "tools.username"
            name: "tools.name"
          outputParameters:
            - type: object
              mapping: "$."
        - name: delete-box
          description: Delete a Vagrant box
          hints:
            readOnly: false
            destructive: true
            idempotent: true
          call: "vagrant-cloud.delete-box"
          with:
            username: "tools.username"
            name: "tools.name"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-version
          description: Create a new version for a Vagrant box
          hints:
            readOnly: false
          call: "vagrant-cloud.create-version"
          with:
            username: "tools.username"
            name: "tools.name"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-version
          description: Get a specific box version details
          hints:
            readOnly: true
            idempotent: true
          call: "vagrant-cloud.get-version"
          with:
            username: "tools.username"
            name: "tools.name"
            version: "tools.version"
          outputParameters:
            - type: object
              mapping: "$."
        - name: release-version
          description: Publish a box version to make it available for download
          hints:
            readOnly: false
            idempotent: true
          call: "vagrant-cloud.release-version"
          with:
            username: "tools.username"
            name: "tools.name"
            version: "tools.version"
          outputParameters:
            - type: object
              mapping: "$."