Skip to main content
Glama
techzone-mcp

techzone-mcp

by zm-gh-ibm

techzone-mcp

MCP server for IBM Technology Zone: manage your reservations end-to-end and search the TechZone catalog from Claude. Every state-changing tool describes itself as such so Claude confirms with you before calling; cancellation additionally requires echoing the reservation's exact name.

Tools

Tool

What it does

whoami()

Validates your token, returns your TechZone profile

list_reservations()

All reservations: status, environment, dates (no credentials)

get_reservation(id)

Full detail for one reservation, incl. access info

check_expiring(days)

Active reservations ending within N days (default 3)

search_catalog(term)

Search environments/collections in the catalog

get_catalog_entry(kind, name)

Detail for one catalog entry

search_collections(term)

Search reservable TechZone collections by name

get_collection(id)

Deployment options (platforms/regions) for a collection

extend_reservation(id, days)

Write: extend a reservation's end date by N days

create_reservation(collection_id, name, ...)

Write: reserve an environment from a collection

cancel_reservation(id, confirm_name)

Destructive: delete a reservation (name must match)

Plus two resources: techzone://reservations (live reservation summary) and techzone://reservation/{id} (full detail for one reservation).

Related MCP server: IBM Cloud MCP Server

Setup

  1. Get your API token: techzone.ibm.com → My Profile → API token.

  2. Install and register with Claude Code:

uv sync
claude mcp add techzone --env TECHZONE_API_TOKEN=<your-token> -- uv --directory /path/to/techzone-mcp run techzone-mcp

(Or put TECHZONE_API_TOKEN=<your-token> in a .env file in this directory — it is gitignored.)

TechZone tokens expire periodically; when the server reports a 401, grab a fresh token from My Profile.

Development

uv sync
uv run pytest                  # unit tests (mocked, no live API)
uv run python walkthrough.py   # interactive live walkthrough of every tool

The walkthrough steps through all 11 tools against the real API: read-only steps run on Enter, write steps are skipped unless you type yes, and sensitive service-link values are redacted from output.

API endpoints are undocumented publicly; they were derived from the open-source itzcli and verified live. See PLAN.md for design notes.

Available Tools

11 tools
cancel_reservationA

Cancel (delete) a TechZone reservation and its environment. THIS IS DESTRUCTIVE AND IRREVERSIBLE - always confirm with the user first. confirm_name must be the reservation's exact name (from list_reservations); the call is refused if it does not match.

Inputs: confirm_name (required), reservation_id (required). Returns: object

check_expiringA

Flag active reservations ending within the next N days (default 3), soonest first, each with an hoursRemaining countdown. Use this to answer 'is anything about to expire?' - already-deleted/expired reservations are excluded.

Inputs: days. Returns: object

create_reservationA

Create a TechZone reservation from a collection. THIS CHANGES STATE and consumes real environment capacity - always confirm the collection, name, region, and duration with the user before calling. The collection must be a reservable environment (its get_collection output has platforms), not an umbrella collection. template picks the deployment variant and region_name the region, both from get_collection (each defaults to the first available); start is an ISO timestamp (defaults to now); days is the duration (default 2, may be capped by policy). On success returns the new reservation id - poll get_reservation until status is Ready.

Inputs: name (required), collection_id (required), days, start, +4 more. Returns: object

extend_reservationA

Extend a TechZone reservation's end date by N days (default 1) past its current provisionUntil. THIS CHANGES STATE on TechZone - always confirm with the user (reservation name + how many days) before calling. Returns outcome 'extended' (with the new end date), 'not_extendable' (extension limit reached or not allowed for this environment), 'rejected' (request refused, e.g. expired/deleted reservation - nothing applied), or 'ambiguous' (verify with get_reservation).

Inputs: reservation_id (required), days. Returns: object

get_catalog_entryA

Get one TechZone catalog entry by kind and name (e.g. kind='system', name='redhat-openshift'). Kind and name come from a search_catalog result's location path: /catalog/{namespace}/{kind}/{name}.

Inputs: kind (required), name (required), namespace. Returns: object

get_collectionA

Get a TechZone collection's deployment options (platforms, regions, datacenters, templates) by collection id - from a catalog entry or a reservation's collectionId. Consult this before create_reservation to pick a region.

Inputs: collection_id (required). Returns: object

get_reservationA

Get full details for one reservation by its id (from list_reservations), including service links, access details, lifecycle dates, and extension count. Output may contain environment credentials - only call this when the user asks about a specific reservation.

Inputs: reservation_id (required). Returns: object

list_reservationsA

List all of my TechZone reservations with name, status (e.g. Ready, Provisioning, Scheduled, Deleted), environment, region, and start/end dates. Credentials are never included here - use get_reservation for full details on one reservation.

Inputs: no named parameters. Returns: result

search_catalogB

Search the TechZone catalog (catalog.techzone.ibm.com) for environments, collections, and products. Returns matching entries with title, kind, owner, and catalog location path.

Inputs: term (required), limit. Returns: object

search_collectionsA

Search reservable TechZone collections by name. THIS is how to find something to reserve: pick a result id, inspect it with get_collection (a result with no platforms is an umbrella collection - not reservable), then create_reservation. Distinct from search_catalog, which searches the separate Backstage deployer catalog.

Inputs: term (required), limit, include_retired. Returns: result

whoamiA

Validate the TechZone API token and return the current user's profile (name, email, roles, persona, and API entitlement).

Inputs: no named parameters. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 11 tools

    Disambiguation4/5

    Most tools target a clearly distinct resource+action: whoami (auth), list/get/create/cancel/extend_reservation (reservation lifecycle), search/get_collection (find reservable things), search/get_catalog_entry (separate Backstage catalog), check_expiring (proactive monitoring). The only mild overlap is search_collections vs search_catalog, but the descriptions explicitly differentiate them. create vs cancel vs extend are all distinct lifecycle operations with clear confirmations.

    Naming Consistency4/5

    The naming follows a consistent verb_noun pattern: list_reservations, get_reservation, create_reservation, cancel_reservation, extend_reservation, search_collections, search_catalog, get_collection, get_catalog_entry. 'whoami' and 'check_expiring' are minor deviations but both are still readable single-action verbs. The pattern is highly predictable across the reservation lifecycle.

    Tool Count5/5

    11 tools is well within the ideal range (3-15). Each tool earns its place: the reservation lifecycle needs at least 5 (list/get/create/cancel/extend), discovery needs 4 (search/get for both collections and catalog), plus whoami and check_expiring for auth and proactive monitoring. No fat to trim, no obvious missing pieces that would inflate the count.

    Completeness4/5

    The reservation lifecycle is complete: create, list, get, cancel, extend, plus check_expiring for monitoring. Discovery is covered for both the reservable collections and the separate Backstage catalog. The only minor gap is that once you get a reservation or collection, you can't modify things like name/region without cancel+recreate, but that matches typical reservation semantics. Overall the domain is well covered with no dead ends.

    Related MCP Connectors

    Related MCP Servers