Skip to main content
Glama
Knuckles-Team

CISO Assistant MCP Server

README.md
# MCP server with the full epistemic-graph engine contract
uv pip install "ciso-assistant-api[mcp]"

# Everything (development)
uv pip install "ciso-assistant-api[all]"      # or: python -m pip install "ciso-assistant-api[all]"
```

### Container images (`:mcp`)

One multi-stage `docker/Dockerfile` builds the MCP-only image (`--target mcp`):

| Image tag | Build target | Contents | Entrypoint |
|-----------|--------------|----------|------------|
| `${CISO_ASSISTANT_MCP_IMAGE}` | `--target mcp` | `ciso-assistant-api[mcp]` — MCP + `epistemic-graph[full]`, no agent runtime | `ciso-assistant-mcp` |

```bash
docker build --target mcp -t "${CISO_ASSISTANT_MCP_IMAGE}" docker/

TDQS

D1.7/5.0

Scored across 1567 tools

Disambiguation1/5

With 1567 tools, the surface contains dozens of near-identical entries per resource (list/retrieve/object_retrieve/create/update/partial_update/destroy) plus literal duplicates such as `document_attachments_retrieve` vs `document_attachments_retrieve_2`, `requirement_mapping_sets_graph_data_retrieve` vs `..._retrieve_2`, and the `ciso_assistant_serdes_*` tools duplicated with and without the `api_` prefix. Many descriptions are boilerplate ('API endpoint that allows X to be viewed or edited', 'Generic export mixin for CSV/XLSX exports', 'Perform a batch action on multiple objects') and therefore give no signal for choosing between `retrieve`, `object_retrieve`, `list`, or the resource-specific variants. An agent cannot reliably distinguish e.g. `applied_controls_*` from `policies_*`, which expose identical sub-endpoints.

Naming Consistency2/5

The bulk follows a mechanical `ciso_assistant_api_<resource>_<action>_<httpverb>` pattern, but it is broken by exceptions: bare `ciso_ingest`, `ciso_assistant_api_request`, a second prefix-less `ciso_assistant_serdes_*` family, numeric disambiguation suffixes (`_retrieve_2`), and action segments that mix resource actions with HTTP verbs (`batch_action_create`, `publish_draft_preview_create`). Names are also extremely long, making near-identical entries hard to scan apart.

Tool Count1/5

1567 tools is two orders of magnitude beyond a usable agent-facing surface; nearly every endpoint is exposed as a separate tool, including per-field choice endpoints (`..._category_retrieve`, `..._severity_retrieve`) and pure chart-data endpoints. This is a raw API dump rather than a curated tool set.

Completeness3/5

Coverage is technically exhaustive — full CRUD, exports, analytics, settings, auth, and a generic `ciso_assistant_api_request` escape hatch mean almost no operation is unreachable. However, the surface is not meaningfully usable as a tool set, so 'completeness' here is achieved by brute force rather than by a coherent, navigable lifecycle.

Maintenance

ActivityActive
ResponsivenessUnresponsive