Skip to main content
Glama

ism-mcp

**호주 사이버 보안 센터(ACSC) 정보 보안 매뉴얼(ISM)**을 MCP 지원 LLM 클라이언트(Claude Desktop, VS Code, Cursor, Continue 등)에 제공하는 Model Context Protocol 서버입니다.

데이터는 공식 ASD/ACSC OSCAL 미러에서 실시간으로 가져옵니다:

https://github.com/AustralianCyberSecurityCentre/ism-oscal

해당 저장소의 각 git 태그는 게시된 ISM 릴리스 하나를 의미합니다. 서버는 GitHub API를 통해 태그를 동적으로 검색하므로 다음과 같은 특징이 있습니다:

  • v2022.09.14부터의 모든 과거 버전을 사용할 수 있습니다.

  • 현재 버전은 가장 최신 태그입니다.

  • 향후 버전은 ASD가 새 태그를 게시하는 즉시 자동으로 나타나며, 코드 변경이나 재배포가 필요하지 않습니다.

카탈로그 및 프로필 JSON은 디스크에 캐시됩니다(기본값 ~/.cache/ism-mcp/, ISM_MCP_CACHE_DIR로 재정의 가능). 태그 목록은 6시간마다 새로 고쳐집니다(ISM_MCP_TAGS_TTL_MS로 재정의 가능).

기능

도구

도구

목적

list_versions

게시된 모든 ISM 릴리스(태그, ID, SHA, 날짜)를 나열합니다.

get_version_metadata

특정 버전에 대한 OSCAL 메타데이터 및 제어/그룹 수를 확인합니다.

list_groups

제어 수가 포함된 계층적 챕터/가이드라인 구조를 나열합니다.

list_controls

적용 가능성/그룹/레이블 접두사별로 필터링 가능한 제어 목록을 페이지 단위로 나열합니다.

search_controls

레이블, 제목, 문장 및 그룹 경로 전체에서 텍스트를 검색합니다.

get_control

OSCAL ID 또는 사람이 읽을 수 있는 레이블(예: GOV-01)을 사용하여 단일 제어에 대한 전체 세부 정보를 JSON 또는 Markdown으로 가져옵니다.

compare_versions

두 ISM 릴리스를 비교하여 추가, 제거 및 수정된 제어를 확인합니다.

list_profiles

8개의 OSCAL 프로필(NC / OS / P / S / TS + E8 ML1/2/3)을 나열합니다.

get_profile_controls

특정 기준 또는 Essential Eight 성숙도 수준에 대해 해결된 제어 세트를 가져옵니다.

cache_info

로컬 캐시를 검사합니다.

리소스(템플릿)

  • ism://catalog/{version} — 전체 OSCAL 카탈로그 JSON(latest 또는 2026.03.24 등 사용).

  • ism://catalog/{version}/control/{controlId} — Markdown으로 렌더링된 단일 제어.

  • ism://profile/{version}/{profile} — 기준에 대해 해결된 OSCAL 프로필 카탈로그.

프롬프트

  • ism_compliance_check — 기준에 따른 시스템의 구조화된 규정 준수 평가를 생성합니다.

  • ism_change_brief — 두 ISM 릴리스 간의 변경 관리 요약본을 생성합니다.

Related MCP server: fedramp-docs-mcp

설치 / 빌드

npm install
npm run build

컴파일된 진입점은 dist/index.js이며 ism-mcp 바이너리로 노출됩니다.

실행

서버는 stdio를 통해 MCP를 통신합니다:

node dist/index.js

대화형 탐색을 위해서는 공식 인스펙터를 사용하세요:

npm run inspect

클라이언트에 연결

VS Code (.vscode/mcp.json 또는 설정)

{
  "servers": {
    "ism": {
      "command": "node",
      "args": ["/absolute/path/to/ism-mcp/dist/index.js"],
    },
  },
}

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "ism": {
      "command": "node",
      "args": ["/absolute/path/to/ism-mcp/dist/index.js"],
    },
  },
}

선택적 환경 변수

변수

목적

ISM_MCP_CACHE_DIR

디스크 내 캐시 디렉터리를 재정의합니다.

ISM_MCP_TAGS_TTL_MS

태그 목록 캐시 TTL(밀리초 단위, 기본값 6시간).

시도해 볼 수 있는 예시 프롬프트

  • "사용 가능한 ISM 버전은 무엇인가요?"

  • "최신 ISM의 GOV-01을 Markdown으로 보여줘."

  • "PROTECTED에 적용되는 다중 요소 인증 관련 ISM 제어를 검색해줘."

  • "ISM 2025.12.9와 최신 릴리스를 비교하고 변경 사항을 요약해줘."

  • "최신 ISM에 대한 Essential Eight ML2 기준의 제어 목록을 나열해줘."

데이터 및 라이선스

ISM은 호주 신호국(Australian Signals Directorate)에서 게시합니다. 이용 약관은 업스트림 저장소 및 https://www.cyber.gov.au를 참조하십시오. 이 서버는 공개적으로 게시된 OSCAL 데이터를 사용하는 비제휴 도구입니다.

CI / CD

저장소에는 세 가지 GitHub Actions 워크플로가 포함되어 있습니다:

  • .github/workflows/ci.yml — 모든 푸시 및 PR 시 타입 체크, 빌드 및 오프라인 스모크 테스트를 실행합니다.

  • .github/workflows/release.yml — 새 버전 태그가 생성될 때(또는 수동 디스패치 시) 성공적인 main 빌드 후 CI에 의해 실행됩니다. 최신 데이터를 번들링하고, 빌드하고, tarball을 패키징하고, 체크섬을 생성하며, tarball과 data/index.json이 첨부된 GitHub 릴리스를 생성합니다. 또한 롤링 latest git 태그를 릴리스된 커밋으로 업데이트하고 (선택적으로) npm에 게시합니다. Cloudflare 자격 증명이 구성된 경우, 사이트를 제공하고 /mcp에서 MCP Streamable HTTP 엔드포인트를 노출하는 Cloudflare Worker를 배포합니다(수동 디스패치 시 deploy_cloudflare=false로 비활성화 가능).

  • .github/workflows/upstream-sync.yml — 매일(또는 수동 디스패치 시) 업스트림 ACSC ISM OSCAL 저장소를 확인합니다. 업스트림에서 새 ISM 태그가 게시되면 데이터를 다시 번들링하고, 패키지 패치 버전을 올리고, main에 업데이트를 커밋하여 CI가 태그된 릴리스 및 Cloudflare 배포를 트리거하도록 합니다.

1회성 저장소 설정

  1. 설정 → Actions → General → 워크플로 권한: Read and write.

  2. (선택 사항) 릴리스 시 npm 게시를 위한 저장소 자격 증명 구성.

  3. package.json의 repository, homepage, bugs 필드 업데이트(OWNER 대체).

  4. (선택 사항) 릴리스 시 Worker 배포를 활성화하기 위해 저장소 비밀에 Cloudflare 계정 자격 증명 구성.

릴리스 생성

# bump version
npm version patch        # or minor / major
git push --follow-tags

수동 릴리스는 먼저 CI를 실행합니다. main에서 CI가 성공하면 버전 태그를 생성하고 release.yml을 디스패치합니다. 이 워크플로는 오프라인용 ism-mcp-<version>.tgz를 빌드하고, GitHub 릴리스에 첨부하며, (선택적으로) 패키지를 npm에 게시하고 Cloudflare Worker 엔드포인트를 배포합니다.

업스트림 ISM 릴리스도 하루에 한 번 자동으로 확인됩니다. 새로운 업스트림 태그가 감지되면 동기화 워크플로가 데이터를 다시 번들링하고, 패키지 버전을 올리고, main에 업데이트를 푸시하며, 기존 CI 및 릴리스 워크플로가 그 이후 작업을 수행합니다.

원격 AI 클라이언트의 경우, 다음 URL로 원격 MCP 서버를 추가하세요:

https://ism.mcp.zta.au/mcp

{
  "servers": {
    "ism": {
      "type": "http",
      "url": "https://ism.mcp.zta.au/mcp",
    },
  },
}

원격 MCP / HTTP 전송

stdio 외에도 ism-mcp는 MCP Streamable HTTP를 지원하므로 AI 도구가 네트워크를 통해 쿼리할 수 있는 원격 엔드포인트로 호스팅될 수 있습니다.

# run as an HTTP server on :8080
MCP_TRANSPORT=http PORT=8080 node dist/index.js
# or via flag
node dist/index.js --http

엔드포인트:

  • POST /mcp — Streamable HTTP를 통한 JSON-RPC (Mcp-Session-Id 헤더를 통한 세션별).

  • GET /health — 라이브니스 프로브.

  • GET / — 일반 텍스트 사용 힌트.

환경 변수:

변수

목적

MCP_TRANSPORT

stdio(CLI 기본값) 또는 http. Docker 이미지는 이를 http로 설정합니다.

PORT / HOST

바인딩 주소(기본값: 0.0.0.0:8080).

MCP_HTTP_PATH

MCP 엔드포인트의 URL 경로(기본값 /mcp).

원격 엔드포인트에 클라이언트 연결

호스팅된 엔드포인트: https://ism.mcp.zta.au/mcp

// VS Code .vscode/mcp.json
{
  "servers": {
    "ism": {
      "type": "http",
      "url": "https://ism.mcp.zta.au/mcp",
    },
  },
}

Available Tools

11 tools
cache_infoInspect ISM MCP storageA

Reports the bundled offline data directory, the writable user cache directory, sizes, file counts, and whether the server is running in offline mode (ISM_MCP_OFFLINE).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the outputs (directories, sizes, counts, offline mode) but does not mention any side effects, performance impact, or required permissions, which are minimal for a read-only info tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the main purpose and uses no unnecessary words. Every word contributes to understanding the tool's output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and no output schema, the description provides a clear list of reported items. It could be improved by mentioning if the data is real-time or cached, but it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the schema coverage is trivially 100%. The description adds meaning by explaining what the tool reports, which is beyond what the schema offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'reports' and lists the exact resources: bundled offline data directory, writable user cache directory, sizes, file counts, and offline mode status. It clearly distinguishes itself from sibling tools that handle controls, versions, and profiles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for checking storage and offline status, but lacks explicit guidance on when to prefer it over siblings or when not to use it. No alternatives or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_versionsCompare two ISM versionsA

Computes the diff between two ISM releases: controls added, removed, and modified (title, statement, or applicability changes). Useful for change-management and gap analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesNewer version, e.g. "2026.03.24". Use "latest" for the current.
fromYesOlder version, e.g. "2025.12.9".
includeBodiesNoInclude before/after statements for modified controls (verbose).

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It honestly discloses that the tool computes added, removed, and modified controls, and mentions the includeBodies parameter makes output verbose. However, it does not address potential side effects, rate limits, or the read-only nature, though the operation is clearly non-destructive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is composed of two tightly focused sentences. The first sentence defines the core functionality and output details, and the second sentence provides a use case. No extraneous information, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema, the description does not explain the return format or structure, which an agent might need to process results. It also does not mention any prerequisites or error conditions. While the core function is clear, additional context would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with clear descriptions for all three parameters (from, to, includeBodies). The tool description does not add additional meaning beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Computes the diff') and the resource ('between two ISM releases'), specifying the exact types of changes included (added, removed, modified with details). This distinguishes it from sibling tools like list_versions or get_control, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions it is 'useful for change-management and gap analysis,' providing context for use. However, it does not explicitly state when not to use this tool or suggest alternatives (e.g., using get_control for a single version or list_versions for version listing).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_controlGet a single ISM controlA

Returns the full detail (title, group path, applicability, statement) for a single ISM control. Accepts either the OSCAL id (e.g. ism-principle-gov-01) or the human label (e.g. GOV-01).

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo
versionNo
controlIdYesEither OSCAL id (e.g. "ism-principle-gov-01") or label (e.g. "GOV-01").

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes the operation as returning details, but does not mention error handling (e.g., if controlId not found) or confirm it is read-only. For a simple get, this is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: first states purpose and output, second explains input. It is front-loaded and contains no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (single control fetch, 3 parameters, no output schema), the description is fairly complete. It explains what is returned and how to specify the control. Minor omission: behavior when controlId is invalid or version is omitted, but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is low (33%: only controlId has a description). The description adds value by explaining the two accepted formats for controlId, but it does not add semantics for version or format beyond what the schema provides (enum for format, no description for version).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns full detail for a single ISM control, listing specific fields (title, group path, applicability, statement). It distinguishes from sibling tools like list_controls or get_controls which handle multiple controls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use this tool (when a single control's details are needed) and how to identify it (OSCAL id or human label). However, it does not explicitly state when not to use it or provide direct comparisons to alternatives, though context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_controlsGet multiple ISM controlsB

Returns full detail for multiple ISM controls in one call. Accepts OSCAL ids and/or human labels (e.g. GOV-01).

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo
versionNo
controlIdsYesControl identifiers to resolve, each as OSCAL id (e.g. "ism-principle-gov-01") or label (e.g. "GOV-01").
deduplicateNoIf true, return each matched control once by control id. If false, preserve duplicates in requested order.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions 'full detail' but does not describe side effects, authorization, errors, or the response structure. Without output schema, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with purpose, and contains no fluff. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, no output schema, and no annotations, the description lacks details on optional parameters, response format, error behavior, or usage context. It is too minimal for a batch retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description only reiterates the controlIds parameter info already in the schema (OSCAL ids or human labels). It adds no new meaning for version, format, or deduplicate. With 50% schema coverage, it fails to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns full detail for multiple ISM controls in one call, using a specific verb and resource. It distinguishes from sibling tools like get_control (single) and list_controls (likely listing IDs/summaries).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for batch retrieval by saying 'multiple ... in one call,' but does not explicitly state when not to use or mention alternatives like get_control for single controls. Guidance is implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_profile_controlsGet controls for an ISM OSCAL profileB

Returns the resolved set of controls included in a given ISM OSCAL profile (classification baseline or Essential Eight maturity level) for a given version.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
profileYes
versionNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must disclose behavior. It describes the return type (resolved set of controls) but does not explain pagination behavior for `limit` and `offset`, default values for `version`, or any side effects. For a read tool, this is minimal but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundancy. Every word contributes to the core purpose. It is appropriately front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 parameters, no output schema, and many siblings, the one-sentence description is insufficient. It lacks details on pagination, default behavior, parameter constraints, and how it relates to similar tools. The description misses critical context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must add meaning. It mentions `profile` and `version` generically but does not describe `limit` and `offset` at all. The enum for profile is not elaborated beyond the brief mention of classification and E8 levels.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the resolved set of controls for a given ISM OSCAL profile and version. It specifies the profile types (classification baseline or Essential Eight maturity level), distinguishing it from siblings like `get_control` or `list_controls` which have different scopes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when you need controls for a specific profile version, but it lacks explicit guidance on when to use this tool versus alternatives like `list_controls` or `get_controls`. No when-not or comparative context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_version_metadataGet ISM version metadataA

Returns OSCAL metadata (title, version, last-modified, oscal-version) for a given ISM release. Use "latest" or omit to get the most recent.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionNoe.g. "2026.03.24" or "latest". Default: latest.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, description fully carries the burden. It discloses the return type and fields, implying a read-only operation. Could be more explicit about side effects (none) and potential authentication needs, but overall adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences with no wasted words. Front-loaded with the action ('Returns OSCAL metadata') and immediately provides usage guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains what fields are returned, which is sufficient for an agent. Missing details like error handling or prerequisites, but overall adequate for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'version' has schema description coverage of 100%, and the tool description repeats essentially the same information. No additional semantic context is added beyond what the schema provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool returns OSCAL metadata for a given ISM release, with specific fields enumerated. This distinguishes it from sibling tools like get_control or list_versions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on using the 'version' parameter, including the 'latest' option and default behavior. Does not mention when not to use the tool or alternative tools, but context is clear for a simple retrieval tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_controlsList ISM controlsC

Returns a paginated, filtered list of ISM controls. Supports filters by applicability, group/section name (substring), and label prefix (e.g. "GOV", "AC", "PHYS").

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoSubstring match against group/chapter titles.
limitNo
offsetNo
versionNo
labelPrefixNoMatch controls whose label starts with this prefix, e.g. "GOV".
applicabilityNoApplicability marking: NC=Non-classified, OS=OFFICIAL: Sensitive, P=PROTECTED, S=SECRET, TS=TOP SECRET.

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It mentions pagination and filters but lacks details on pagination defaults, maximum results, sorting, authentication needs, or response format. This is insufficient for a safe agent call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load the core purpose and filters. No redundant text, though pagination behavior could be more explicit without bloating length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, no annotations, and 6 parameters, the description is moderately complete. It covers filtering but lacks pagination details, response structure, and version context, leaving gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, and the description repeats information already in the schema for applicability, group, and labelPrefix. It adds no new meaning for version, limit, or offset, leaving those parameters underdocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs ('Returns') and resource ('list of ISM controls'), clearly stating it is paginated and filterable. It indirectly differentiates from siblings like get_control (single) and search_controls (broader search) by emphasizing filtering capabilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like get_control, get_controls, or search_controls. The description implies use for filtered listing but does not state when not to use it or provide context for selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_groupsList ISM groups (chapters and guidelines)B

Returns the hierarchical group structure of the ISM catalog (chapters, guidelines, sections) with control counts at each level.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionNo
maxDepthNo

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description only states it returns hierarchical data without disclosing read-only nature, side effects, or performance implications. It fails to fully characterize behavior beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence without wasted words, but it lacks structure like bullet points for clarity. Still, it is appropriately brief.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, no annotations, and 0% param coverage, the description omits return format, parameter details, and usage context. It is insufficient for a tool with two parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no meaning to the two parameters (version, maxDepth) despite 0% schema description coverage. Neither the description nor the schema explains their purpose, leaving the agent without understanding how to use them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns hierarchical group structure of the ISM catalog with control counts, distinguishing it from siblings like list_controls which returns control lists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for exploring hierarchy but does not mention when to use this tool versus siblings like list_controls or get_control, lacking explicit guidance on alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_profilesList ISM OSCAL profilesA

Lists the OSCAL profiles published alongside each ISM release: the five classification baselines (NC, OS, P, S, TS) and the three Essential Eight maturity levels (ML1, ML2, ML3).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states what is listed, but does not disclose any behavioral traits such as whether authentication is required, rate limits, or that this is a read-only operation. The description lacks depth beyond enumeration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasteful words. Front-loaded with the key action and resource, followed by specific items. Efficient and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and a simple listing output, the description is largely complete. However, it could mention that the returned profile identifiers are used as input to tools like get_profile_controls, and it omits details about output format (e.g., API response structure). Still, it suffices for basic understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description does not need to add parameter information. Schema description coverage is 100%, and the baseline for zero-param tools is 4, which is appropriate as the description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Lists' and the resource 'OSCAL profiles published alongside each ISM release', with specific enumeration of the five classification baselines and three Essential Eight maturity levels. This distinguishes it from sibling tools like list_controls or list_versions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., get_profile_controls). It does not mention prerequisites, typical use cases, or exclusions, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_versionsList ISM versionsB

Lists every published ISM release (historical, current, and any future tags as soon as they appear upstream). Returns tag, version id, commit SHA, and release date parsed from the tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
refreshNoForce a refresh of the upstream tag list, bypassing the cache.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It states the tool lists and returns data but does not mention performance, caching behavior, rate limits, side effects, or read-only nature beyond what's implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences cover purpose and return value without extraneous information. The description is front-loaded and every sentence contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple list tool, specifying what is returned. However, it lacks details on ordering, pagination, or ISM context. No output schema exists, so more completeness would benefit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (refresh described, limit not). The description does not add meaning to the parameters; it only outlines return fields. For low coverage, the description should compensate but fails to do so.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Lists' and the resource 'ISM releases/versions', specifying that it includes historical, current, and future tags. It distinguishes from sibling tools like list_controls by focusing on versions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing all versions but provides no explicit guidance on when to use this tool over alternatives such as get_version_metadata or compare_versions. No exclusions or context are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_controlsSearch ISM controlsA

Full-text search across ISM control labels, titles, statements, and group paths. Combine with applicability/group/labelPrefix filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNo
limitNo
queryYes
offsetNo
versionNo
labelPrefixNo
applicabilityNoApplicability marking: NC=Non-classified, OS=OFFICIAL: Sensitive, P=PROTECTED, S=SECRET, TS=TOP SECRET.
includeStatementNoInclude the control statement in each result.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as side effects, authorization needs, or rate limits. It only states the search capability, leaving the agent without awareness of destructive potential (none implied) or other constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each adding unique value: first defines action and scope, second gives filter combinations. No redundant or wasted words. Front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, no output schema, and no annotations, the description is too brief. It omits details about pagination, ordering, default limit, and the structure of results (e.g., list of IDs vs full objects). The agent lacks full context to use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% (2 of 8 parameters have descriptions). The description mentions 'applicability/group/labelPrefix filters' but does not explain other parameters like query, version, limit, offset, or includeStatement beyond their names. The description fails to compensate for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Full-text search across ISM control labels, titles, statements, and group paths', specifying the verb (search), resource (ISM controls), and scope (multiple fields). This distinguishes it from sibling tools like get_control (specific control) and list_controls (listing without full-text).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises combining with applicable filters, giving clear usage context. However, it does not explicitly exclude when not to use (e.g., when exact ID is known), but the context is sufficient for typical use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 1 tool updatev1.2.1
    • Addedget_controls
  2. 10 tool updatesv1.0.3
    • First observedcache_info
    • First observedcompare_versions
    • First observedget_control
    • First observedget_profile_controls
    • First observedget_version_metadata
    • First observedlist_controls
    • First observedlist_groups
    • First observedlist_profiles
    • First observedlist_versions
    • First observedsearch_controls

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: cache_info handles offline cache, compare_versions diffs releases, get_control/get_controls retrieve details, get_profile_controls gets controls for profiles, get_version_metadata gets release metadata, list_controls filters controls, list_groups shows hierarchy, list_profiles lists baselines, list_versions lists releases, and search_controls performs full-text search. No two tools have overlapping functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case: cache_info, compare_versions, get_control, get_controls, get_profile_controls, get_version_metadata, list_controls, list_groups, list_profiles, list_versions, search_controls. The verbs are descriptive and the nouns clearly indicate the resource.

Tool Count5/5

11 tools is well-scoped for an ISM reference server. It provides sufficient granularity for querying, searching, listing, and comparing controls, profiles, and versions without being excessive or minimal.

Completeness5/5

The tool set covers all essential operations for exploring the ISM catalog: retrieving individual or multiple controls, listing with filters, full-text search, accessing version metadata, listing versions and profiles, getting profile controls, comparing releases, and checking cache status. No obvious gaps for a read-only reference server.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers