cml2-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CML_URL | Yes | The URL of the CML controller, e.g. https://cml.example.net/ | |
| CML_PASSWORD | Yes | Password for CML authentication | |
| CML_USERNAME | Yes | Username for CML authentication | |
| CML_CACHE_DIR | No | Directory for token and OpenAPI cache (default: ~/.cache/cml/) | ~/.cache/cml/ |
| CML_VERIFY_SSL | No | Whether to verify TLS certificates (default: off, as CML often uses self-signed certs). Set to 'true' to enable. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| cml_openapiA | Return CML2's live OpenAPI spec as a JSON string. Cached at $CML_CACHE_DIR/openapi.json (default ~/.cache/cml/) for 24h. Set refresh=True to force a re-fetch. |
| cml_apiA | Authenticated CML2 REST call. Args: method: HTTP method (GET/POST/PUT/PATCH/DELETE). path: Path AFTER /api/v0, must start with '/'. Example: '/labs'. body: Optional JSON-serializable value (object/array/string/etc.). Sent as the request body with Content-Type: application/json. Returns the raw response body as text (callers should json.parse if needed). Re-authenticates and retries once on HTTP 401. Raises on non-2xx. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| openapi_resource | The live (24h-cached) OpenAPI spec, exposed as an MCP resource. |
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: cml_api makes arbitrary REST calls to the CML2 API, while cml_openapi fetches the OpenAPI specification. There is no overlap in functionality.
Both tools use the consistent prefix 'cml_' followed by a descriptive snake_case name ('api' and 'openapi'), following a clear pattern.
With only two tools, the server is extremely minimal for what appears to be a full API wrapper. Most use cases would require the user to manually parse the OpenAPI spec and craft REST calls, making the tool set feel incomplete.
The server provides only a low-level API call tool and a spec fetcher, lacking any higher-level operations (e.g., CRUD for labs, devices, etc.). Users must implement all logic themselves, which is a significant gap for a CML2 integration.