Cml2 Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Cml2 Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Thin MCP server for Cisco CML2.
It deliberately avoids mirroring the CML API as typed (Pydantic) tools — every prior generation that did so broke when the controller shipped a schema change. Instead this server exposes only:
cml_openapi(refresh=False) — fetch CML's live openapi.json (cached 24 h).cml_api(method, path, body=None) — generic authenticated REST call after/api/v0. Re-authenticates and retries once on HTTP 401.
cml://openapi.json — same content as cml_openapi().The model is expected to read the OpenAPI spec first and then craft calls.
Required environment:
| Var | Example |
|---|---|
CML_URL | https://cml.example.net/ |
CML_USERNAME | admin |
CML_PASSWORD | … |
Optional:
CML_VERIFY_SSL=true — verify TLS (default: off; CML often uses self-signed certs).CML_CACHE_DIR — token / openapi cache directory (default: ~/.cache/cml/).The token is written to $CML_CACHE_DIR/token with mode 0600.
With uv directly from the source tree:
uv run cml2-mcpAfter publishing to PyPI (or via uv tool install .):
uvx cml2-mcpWrap the command so the password is fetched from a secure store rather than appearing in plain text. Example with macOS Keychain:
{
"mcpServers": {
"cml2": {
"command": "sh",
"args": [
"-c",
"CML_PASSWORD=$(security find-generic-password -a <account> -s <service> -w) exec uvx cml2-mcp"
],
"env": {
"CML_URL": "https://cml.example.net/",
"CML_USERNAME": "admin"
}
}
}
}For Claude Code:
claude mcp add cml2 -- sh -c 'CML_PASSWORD=$(security find-generic-password -a <account> -s <service> -w) exec uvx cml2-mcp'(Set CML_URL / CML_USERNAME in the same env or via claude mcp add ... -e KEY=VAL.)
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.