Skip to main content
Glama

Server Details

Validates AI infra code on real VMs. Self-corrects until it works. No containers, no sandboxes.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Unhealthy
Last Tested
Transport
Streamable HTTP
URL
Repository
jade-pico/antrieb-mcp-server
GitHub Stars
3

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool update
    • Changedprovision1 field changed
      • changedInput schema / properties / cluster / description
        Previous value: -"VM topology. Each entry is either a shorthand string (\"ubuntu24.04\" = 1 VM, \"ubuntu24.04 x3\" = 3 VMs) OR an object {image, count?}. Init scripts are NOT part of provision — run them through exec with \"@namespace/name\" after the cluster is ready. This keeps provision sub-second and avoids hidden async state. Example: [{\"image\":\"ubuntu24.04\",\"count\":3},{\"image\":\"vyos\"}]"New value: +"VM topology. Each entry is either a shorthand string (\"ubuntu24.04\" = 1 VM, \"ubuntu24.04 x3\" = 3 VMs) OR an object {image, count?}. Cap: **max 4 target nodes per cluster**. Controller images (e.g. ansible-controller) do not count — an Ansible setup can be controller + 4 targets = 5 VMs. Init scripts are NOT part of provision — run them through exec with \"@namespace/name\" after the cluster is ready. This keeps provision sub-second and avoids hidden async state. Example: [{\"image\":\"ubuntu24.04\",\"count\":3},{\"image\":\"vyos\"}]"
  2. 1 tool update
    • Changedsave2 fields changed
      • changedInput schema / properties / body / description
        Previous value: -"Required for type=runbook. Markdown document describing the scenario. Structure: `## Topology required` (describes cluster shape the runbook applies to — images, NICs, networks), `## Variables` (lists placeholders like `<LAN_SUBNET>` callers substitute), `## Steps` (numbered, one per major action, prose explaining WHY + fenced shell for the actual command, annotating which node each step targets), `## Verify` (how to confirm success). Keep imperative — the reader (another LLM) will substitute variables and issue exec calls. Write commands idempotently so a second application is safe (`id user || useradd`, `grep -q entry /etc/hosts || echo ... >> /etc/hosts`, `systemctl is-active svc || systemctl start svc`)."New value: +"Required for type=runbook. Markdown document describing the scenario. Structure: `## Topology required` (describes cluster shape the runbook applies to — images, NICs, networks), `## Variables` (lists placeholders like `<LAN_SUBNET>` callers substitute), `## Steps` (numbered, one per major action, prose explaining WHY + fenced shell for the actual command, annotating which node each step targets), `## Verify` (how to confirm success). Keep imperative — the reader (another LLM) will substitute variables and issue exec calls. Write commands idempotently so a second application is safe (`id user || useradd`, `grep -q entry /etc/hosts || echo ... >> /etc/hosts`, `systemctl is-active svc || systemctl start svc`). The backend validates that the session_id you pass actually exercised this scenario — if the judge returns FAIL, the save is refused with the reason."
      • changedInput schema / properties / session_id / description
        Previous value: -"Required for type=image. Session ID of the provisioned cluster."New value: +"Required for type=image AND type=runbook. For type=image: the session whose node is being snapshotted. For type=runbook: the session whose exec history actually demonstrates the scenario — the backend judges the history against the runbook body with an LLM and refuses to save if the session did not exercise what the runbook claims. Only successful demonstrations become runbooks."
  3. 4 tool updates
    • Changeddelete2 fields changed
      • changedInput schema / properties / name / description
        Previous value: -"The identifier of the thing to delete. For type=cluster: the session_id returned by provision. For type=image: the short image name (e.g. \"my-nginx\", not \"antrieb:my-nginx:v1\"). For type=function or type=network: the short name from your org (e.g. \"deploy-nginx\") or the fully-qualified \"namespace/name\" form."New value: +"The identifier of the thing to delete. For type=cluster: the session_id returned by provision. For type=image: the short image name. For type=runbook/network: the short name or \"namespace/short\" fq_name."
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "cluster",
        -  "image",
        -  "function",
        -  "network"
        -]New value: +[
        +  "cluster",
        +  "image",
        +  "runbook",
        +  "network"
        +]
    • Changedexec1 field changed
      • changedInput schema / properties / command / description
        Previous value: -"Shell command, or a saved-function reference \"@namespace/name\" (optionally prefixed with KEY=val env bindings)."New value: +"Literal shell command to run on the node. Cluster-scoped env vars (NODE_NAME, NODE_INDEX, NODE_IP, CLUSTER_HOSTS, CLUSTER_SSH_PUBKEY, CLUSTER_SSH_PRIVKEY) are available inside the command."
    • Changedsave6 fields changed
      • changedInput schema / properties / body / description
        Previous value: -"Required for type=function. The function body — string for one command, or array of strings for a sequence of steps. **Each step runs in its own shell invocation**, so variables set in one step are NOT visible in the next — if a step needs state from an earlier step, have it read from a file, a known path, or re-derive. **Write each step to be idempotent** — functions get re-invoked on retries, on different nodes, and on already-configured VMs; guard mutations (e.g. `id user || useradd …`, `grep -q entry /etc/hosts || echo entry >> /etc/hosts`, `systemctl is-active svc || systemctl start svc`) so a second invocation is a no-op rather than a failure or a duplicate."New value: +"Required for type=runbook. Markdown document describing the scenario. Structure: `## Topology required` (describes cluster shape the runbook applies to — images, NICs, networks), `## Variables` (lists placeholders like `<LAN_SUBNET>` callers substitute), `## Steps` (numbered, one per major action, prose explaining WHY + fenced shell for the actual command, annotating which node each step targets), `## Verify` (how to confirm success). Keep imperative — the reader (another LLM) will substitute variables and issue exec calls. Write commands idempotently so a second application is safe (`id user || useradd`, `grep -q entry /etc/hosts || echo ... >> /etc/hosts`, `systemctl is-active svc || systemctl start svc`)."
      • removedInput schema / properties / body / oneOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  }
        -]
      • addedInput schema / properties / body / type
        Added value: +"string"
      • changedInput schema / properties / description / description
        Previous value: -"Optional for type=function/network. Short human description used by search."New value: +"Optional for type=runbook/network. Short human description used by search. Critical for runbooks — the description is what the LLM sees in browse mode; make it specific enough to distinguish from similar-named variants."
      • changedInput schema / properties / name / description
        Previous value: -"Name for the saved entity (lowercase, hyphens). For type=image: becomes antrieb:<name>:v1. For type=function/network: becomes referenceable as @<namespace>/<name>."New value: +"Name for the saved entity (lowercase, hyphens). For type=image: becomes antrieb:<name>:v1. For type=runbook/network: becomes referenceable as @<namespace>/<name>."
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "image",
        -  "function",
        -  "network"
        -]New value: +[
        +  "image",
        +  "runbook",
        +  "network"
        +]
    • Changedsearch5 fields changed
      • addedInput schema / properties / fq_name
        Added value: +{
        +  "description": "Fully-qualified name (namespace/name) of a specific runbook to fetch. When set for type=runbook, returns the runbook WITH its full markdown body — use this after browsing so you can read the scenario steps before applying them. Ignored for type=image/network/cluster.",
        +  "type": "string"
        +}
      • changedInput schema / properties / keywords / description
        Previous value: -"Full-text filter on name, description, and fq_name. Applies to type=image, type=function, and type=network. Ignored for type=cluster."New value: +"Full-text filter on name, description, and fq_name. Applies to type=image/runbook/network. Ignored for type=cluster, and ignored when fq_name is set."
      • changedInput schema / properties / limit / description
        Previous value: -"Max results (default 20, max 100)."New value: +"Max results (default 20, max 100). Ignored when fq_name is set."
      • changedInput schema / properties / type / description
        Previous value: -"Catalog to query. \"image\" (default) — VM images available to provision. \"cluster\" — clusters you currently have running (ignores keywords/limit). \"function\" — saved functions you can invoke through exec. \"network\" — saved network specs you can reference in provision.networks. Uses the same enum values as save."New value: +"Catalog to query. \"image\" (default) — VM images available to provision. \"cluster\" — clusters you currently have running (ignores keywords/limit). \"runbook\" — saved scenarios in markdown. \"network\" — saved network specs. Uses the same enum values as save."
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "image",
        -  "cluster",
        -  "function",
        -  "network"
        -]New value: +[
        +  "image",
        +  "cluster",
        +  "runbook",
        +  "network"
        +]
  4. 1 tool update
    • Changedsave1 field changed
      • changedInput schema / properties / body / description
        Previous value: -"Required for type=function. The function body — string for one command, or array of strings for a sequence of steps."New value: +"Required for type=function. The function body — string for one command, or array of strings for a sequence of steps. **Each step runs in its own shell invocation**, so variables set in one step are NOT visible in the next — if a step needs state from an earlier step, have it read from a file, a known path, or re-derive. **Write each step to be idempotent** — functions get re-invoked on retries, on different nodes, and on already-configured VMs; guard mutations (e.g. `id user || useradd …`, `grep -q entry /etc/hosts || echo entry >> /etc/hosts`, `systemctl is-active svc || systemctl start svc`) so a second invocation is a no-op rather than a failure or a duplicate."
  5. 4 tool updates
    • Changeddelete5 fields changed
      • removedInput schema / properties / image
        Removed value: -{
        -  "description": "Image name to decommission (e.g. \"my-nginx\").",
        -  "type": "string"
        -}
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "The identifier of the thing to delete. For type=cluster: the session_id returned by provision. For type=image: the short image name (e.g. \"my-nginx\", not \"antrieb:my-nginx:v1\"). For type=function or type=network: the short name from your org (e.g. \"deploy-nginx\") or the fully-qualified \"namespace/name\" form.",
        +  "type": "string"
        +}
      • removedInput schema / properties / session_id
        Removed value: -{
        -  "description": "Session ID of the cluster to destroy.",
        -  "type": "string"
        -}
      • addedInput schema / properties / type
        Added value: +{
        +  "description": "What to delete. Uses the same enum values as save (plus \"cluster\").",
        +  "enum": [
        +    "cluster",
        +    "image",
        +    "function",
        +    "network"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "type",
        +  "name"
        +]
    • Changedexec1 field changed
      • changedInput schema / properties / command / description
        Previous value: -"Shell command, or a saved-init reference \"@namespace/name\" (optionally prefixed with KEY=val env bindings)."New value: +"Shell command, or a saved-function reference \"@namespace/name\" (optionally prefixed with KEY=val env bindings)."
    • Changedsave4 fields changed
      • changedInput schema / properties / body / description
        Previous value: -"Required for type=init. The init script — string for one command, or array of strings for a sequence."New value: +"Required for type=function. The function body — string for one command, or array of strings for a sequence of steps."
      • changedInput schema / properties / description / description
        Previous value: -"Optional for type=init/network. Short human description used by search."New value: +"Optional for type=function/network. Short human description used by search."
      • changedInput schema / properties / name / description
        Previous value: -"Name for the saved entity (lowercase, hyphens). For type=image: becomes antrieb:<name>:v1. For type=init/network: becomes referenceable as @<namespace>/<name>."New value: +"Name for the saved entity (lowercase, hyphens). For type=image: becomes antrieb:<name>:v1. For type=function/network: becomes referenceable as @<namespace>/<name>."
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "image",
        -  "init",
        -  "network"
        -]New value: +[
        +  "image",
        +  "function",
        +  "network"
        +]
    • Changedsearch4 fields changed
      • changedInput schema / properties / keywords / description
        Previous value: -"Search keywords to filter images (searches name, description, tags). Only for type=images."New value: +"Full-text filter on name, description, and fq_name. Applies to type=image, type=function, and type=network. Ignored for type=cluster."
      • changedInput schema / properties / limit / description
        Previous value: -"Max results (default: 20, max: 100)"New value: +"Max results (default 20, max 100)."
      • changedInput schema / properties / type / description
        Previous value: -"What to search: \"image\" (default — VM images), \"cluster\" (your active clusters), \"init\" (saved init scripts), \"network\" (saved network specs from your platform team — reference them as @namespace/name in provision's networks array). Matches the type values used by the save tool."New value: +"Catalog to query. \"image\" (default) — VM images available to provision. \"cluster\" — clusters you currently have running (ignores keywords/limit). \"function\" — saved functions you can invoke through exec. \"network\" — saved network specs you can reference in provision.networks. Uses the same enum values as save."
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "image",
        -  "cluster",
        -  "init",
        -  "network"
        -]New value: +[
        +  "image",
        +  "cluster",
        +  "function",
        +  "network"
        +]
  6. 2 tool updates
    • Changedexec1 field changed
      • changedInput schema / properties / command / description
        Previous value: -"Shell command to execute on the node."New value: +"Shell command, or a saved-init reference \"@namespace/name\" (optionally prefixed with KEY=val env bindings)."
    • Changedprovision2 fields changed
      • changedInput schema / properties / cluster / description
        Previous value: -"VM topology. Each entry is either a shorthand string (\"ubuntu24.04\" = 1 VM, \"ubuntu24.04 x3\" = 3 VMs) OR an object {image, count?, init?}. The object form lets you attach an init script (a single command string OR an array of command strings) that runs on every VM from that entry once the cluster is ready (analogous to EC2 user_data). Per-entry init = each tier of a heterogeneous cluster gets its own setup. Env vars exposed to init: NODE_NAME (e.g. node1), NODE_INDEX (1,2,...), NODE_IP. Example: [{\"image\":\"ubuntu24.04\",\"count\":3,\"init\":\"apt-get install -y nginx\"},{\"image\":\"vyos\",\"init\":[\"configure\",\"commit\"]}]"New value: +"VM topology. Each entry is either a shorthand string (\"ubuntu24.04\" = 1 VM, \"ubuntu24.04 x3\" = 3 VMs) OR an object {image, count?}. Init scripts are NOT part of provision — run them through exec with \"@namespace/name\" after the cluster is ready. This keeps provision sub-second and avoids hidden async state. Example: [{\"image\":\"ubuntu24.04\",\"count\":3},{\"image\":\"vyos\"}]"
      • changedInput schema / properties / cluster / items / oneOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "properties": {
        -      "count": {
        -        "description": "Number of VMs from this entry. Default 1.",
        -        "type": "number"
        -      },
        -      "image": {
        -        "description": "Image name or ANI (e.g. \"ubuntu24.04\" or \"antrieb:ubuntu24.04:v1\").",
        -        "type": "string"
        -      },
        -      "init": {
        -        "description": "Optional init script. Single command string OR array of command strings (run sequentially on each VM from this entry). Runs in background after cluster is ready; provision_time_ms is unaffected.",
        -        "oneOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "items": {
        -              "type": "string"
        -            },
        -            "type": "array"
        -          }
        -        ]
        -      }
        -    },
        -    "required": [
        -      "image"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "properties": {
        +      "count": {
        +        "description": "Number of VMs from this entry. Default 1.",
        +        "type": "number"
        +      },
        +      "image": {
        +        "description": "Image name or ANI (e.g. \"ubuntu24.04\" or \"antrieb:ubuntu24.04:v1\").",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "image"
        +    ],
        +    "type": "object"
        +  }
        +]
  7. 2 tool updates
    • Changedprovision2 fields changed
      • changedInput schema / properties / networks / description
        Previous value: -"Optional. Per-cluster private networks. Each is its own libvirt-managed bridge with its own DHCP. CIDRs are auto-allocated unless specified. Default (when omitted): one network named \"default\" with NAT egress. Example: [{\"name\":\"lan-a\",\"cidr\":\"10.10.1.0/24\",\"egress\":false},{\"name\":\"wan\",\"egress\":true}]"New value: +"Optional. Per-cluster private networks. Each is its own isolated L2 segment with its own DHCP. CIDRs are auto-allocated unless specified. Default (when omitted): one network named \"default\" with NAT egress. Example: [{\"name\":\"lan-a\",\"cidr\":\"10.10.1.0/24\",\"egress\":false},{\"name\":\"wan\",\"egress\":true}]"
      • changedInput schema / properties / networks / items / properties / dhcp / description
        Previous value: -"true = libvirt runs dnsmasq with DHCP; false = no DHCP (run your own inside a VM). Default true."New value: +"true = framework runs DHCP for the network; false = no DHCP (run your own inside a VM). Default true."
    • Changedsave1 field changed
      • changedInput schema / properties / dhcp / description
        Previous value: -"Optional for type=network. true = libvirt DHCP; false = bring your own."New value: +"Optional for type=network. true = framework DHCP; false = bring your own."
  8. 3 tool updates
    • Changedprovision3 fields changed
      • changedInput schema / properties / cluster / description
        Previous value: -"VM topology. Supports shortcuts: \"ubuntu24.04\" expands to \"antrieb:ubuntu24.04:v1\", \"ubuntu24.04 x3\" creates 3 VMs."New value: +"VM topology. Each entry is either a shorthand string (\"ubuntu24.04\" = 1 VM, \"ubuntu24.04 x3\" = 3 VMs) OR an object {image, count?, init?}. The object form lets you attach an init script (a single command string OR an array of command strings) that runs on every VM from that entry once the cluster is ready (analogous to EC2 user_data). Per-entry init = each tier of a heterogeneous cluster gets its own setup. Env vars exposed to init: NODE_NAME (e.g. node1), NODE_INDEX (1,2,...), NODE_IP. Example: [{\"image\":\"ubuntu24.04\",\"count\":3,\"init\":\"apt-get install -y nginx\"},{\"image\":\"vyos\",\"init\":[\"configure\",\"commit\"]}]"
      • addedInput schema / properties / cluster / items / oneOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "properties": {
        +      "count": {
        +        "description": "Number of VMs from this entry. Default 1.",
        +        "type": "number"
        +      },
        +      "image": {
        +        "description": "Image name or ANI (e.g. \"ubuntu24.04\" or \"antrieb:ubuntu24.04:v1\").",
        +        "type": "string"
        +      },
        +      "init": {
        +        "description": "Optional init script. Single command string OR array of command strings (run sequentially on each VM from this entry). Runs in background after cluster is ready; provision_time_ms is unaffected.",
        +        "oneOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          }
        +        ]
        +      }
        +    },
        +    "required": [
        +      "image"
        +    ],
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / cluster / items / type
        Removed value: -"string"
    • Changedsave11 fields changed
      • addedInput schema / properties / body
        Added value: +{
        +  "description": "Required for type=init. The init script — string for one command, or array of strings for a sequence.",
        +  "oneOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  ]
        +}
      • addedInput schema / properties / cidr
        Added value: +{
        +  "description": "Optional for type=network. /24 CIDR like \"10.10.1.0/24\". Omit to auto-allocate at each provision.",
        +  "type": "string"
        +}
      • changedInput schema / properties / commands / description
        Previous value: -"Ordered list of successful commands that were executed on this node."New value: +"Required for type=image. Ordered list of successful commands that were executed on this node."
      • addedInput schema / properties / description
        Added value: +{
        +  "description": "Optional for type=init/network. Short human description used by search.",
        +  "type": "string"
        +}
      • addedInput schema / properties / dhcp
        Added value: +{
        +  "description": "Optional for type=network. true = libvirt DHCP; false = bring your own.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / egress
        Added value: +{
        +  "description": "Optional for type=network. true = NAT to internet; false = isolated.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / name / description
        Previous value: -"Image name (e.g. \"my-nginx\"). Will become antrieb:<name>:v1."New value: +"Name for the saved entity (lowercase, hyphens). For type=image: becomes antrieb:<name>:v1. For type=init/network: becomes referenceable as @<namespace>/<name>."
      • changedInput schema / properties / node / description
        Previous value: -"Node name to save (e.g. \"node1\")."New value: +"Required for type=image. Node name to save (e.g. \"node1\")."
      • changedInput schema / properties / session_id / description
        Previous value: -"Session ID of the provisioned cluster."New value: +"Required for type=image. Session ID of the provisioned cluster."
      • addedInput schema / properties / type
        Added value: +{
        +  "description": "What to save. Default \"image\".",
        +  "enum": [
        +    "image",
        +    "init",
        +    "network"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "session_id",
        -  "node",
        -  "name",
        -  "commands"
        -]New value: +[
        +  "name"
        +]
    • Changedsearch2 fields changed
      • changedInput schema / properties / type / description
        Previous value: -"What to search: \"images\" (default) or \"clusters\" (your active clusters)."New value: +"What to search: \"image\" (default — VM images), \"cluster\" (your active clusters), \"init\" (saved init scripts), \"network\" (saved network specs from your platform team — reference them as @namespace/name in provision's networks array). Matches the type values used by the save tool."
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "images",
        -  "clusters"
        -]New value: +[
        +  "image",
        +  "cluster",
        +  "init",
        +  "network"
        +]
  9. 1 tool update
    • Changedprovision2 fields changed
      • addedInput schema / properties / networks
        Added value: +{
        +  "description": "Optional. Per-cluster private networks. Each is its own libvirt-managed bridge with its own DHCP. CIDRs are auto-allocated unless specified. Default (when omitted): one network named \"default\" with NAT egress. Example: [{\"name\":\"lan-a\",\"cidr\":\"10.10.1.0/24\",\"egress\":false},{\"name\":\"wan\",\"egress\":true}]",
        +  "items": {
        +    "properties": {
        +      "cidr": {
        +        "description": "Optional 10.x.y.0/24 CIDR. Auto-allocated if omitted.",
        +        "type": "string"
        +      },
        +      "dhcp": {
        +        "description": "true = libvirt runs dnsmasq with DHCP; false = no DHCP (run your own inside a VM). Default true.",
        +        "type": "boolean"
        +      },
        +      "egress": {
        +        "description": "true = NAT to internet; false = isolated. Default false (true only for the \"default\" network).",
        +        "type": "boolean"
        +      },
        +      "name": {
        +        "description": "Lowercase alphanumeric+hyphen identifier (e.g. \"lan-a\", \"wan\").",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / nics
        Added value: +{
        +  "additionalProperties": {
        +    "items": {
        +      "properties": {
        +        "net": {
        +          "description": "Name of a declared network.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "net"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "description": "Optional. Per-node NIC declarations keyed by node name (\"node1\", \"node2\", ...). Default (when omitted): every node gets one NIC on the first declared network. Example: {\"node1\":[{\"net\":\"lan-a\"}],\"node3\":[{\"net\":\"wan\"},{\"net\":\"lan-a\"}]}",
        +  "type": "object"
        +}
  10. 5 tool updates
    • First observeddelete
    • First observedexec
    • First observedprovision
    • First observedsave
    • First observedsearch

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables comprehensive DevOps infrastructure management through tools for Jenkins, Ansible, Terraform, Kubernetes, and Docker operations. Features a sophisticated memory system for context retention and provides validation, generation, and optimization capabilities across DevOps workflows.
    1
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to safely test and debug PowerShell, CMD/BAT scripts, and system utilities inside isolated Hyper-V virtual machines, with snapshot rollback, host-to-guest file transfer, PowerShell Direct execution, and autonomous self-correction on failures.
    1
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.8/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: delete removes resources, exec runs commands, provision creates clusters, save creates images, and search lists resources. The descriptions clearly differentiate their functions, making misselection unlikely.

Naming Consistency5/5

All tool names follow a consistent, simple verb-only pattern (delete, exec, provision, save, search) without any deviations in style or casing. This predictability makes the set easy to navigate and understand.

Tool Count5/5

With 5 tools, this server is well-scoped for managing VM clusters and images, covering core operations without bloat. Each tool serves a clear, essential function in the workflow, making the count appropriate for the domain.

Completeness4/5

The toolset covers the full lifecycle of VM clusters and images: provision to create, exec to manage, save to persist, search to list, and delete to remove. A minor gap exists in updating or modifying existing clusters or images, but agents can work around this by re-provisioning or using exec.