ISM MCP Server

ISM MCP Server

Serves the Australian Cyber Security Centre Information Security Manual (ISM) via MCP, providing access to all historical and current versions, search, and comparison tools.

Category
访问服务器

README

ism-mcp

A Model Context Protocol server that serves the Australian Cyber Security Centre (ACSC) Information Security Manual (ISM) to MCP-capable LLM clients (Claude Desktop, VS Code, Cursor, Continue, etc.).

Data is sourced live from the official ASD/ACSC OSCAL mirror:

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

Each git tag in that repository is one published ISM release. The server discovers tags dynamically via the GitHub API, so:

  • All historical versions back to v2022.09.14 are available.
  • The current version is whichever tag is newest.
  • Future versions automatically appear the moment ASD publishes a new tag — no code changes or redeploys required.

Catalog and profile JSON is cached on disk (default ~/.cache/ism-mcp/, override with ISM_MCP_CACHE_DIR). Tag listings are refreshed every six hours (override with ISM_MCP_TAGS_TTL_MS).

Capabilities

Tools

Tool Purpose
list_versions Enumerate every published ISM release (tag, id, SHA, date).
get_version_metadata OSCAL metadata + control/group counts for a version.
list_groups Hierarchical chapter/guideline structure with control counts.
list_controls Paginated list of controls, filterable by applicability / group / label prefix.
search_controls Full-text search across labels, titles, statements, and group paths.
get_control Full detail for a single control by OSCAL id or human label (e.g. GOV-01), as JSON or Markdown.
compare_versions Diff two ISM releases — added, removed, and modified controls.
list_profiles List the eight OSCAL profiles (NC / OS / P / S / TS + E8 ML1/2/3).
get_profile_controls Resolved set of controls for a given baseline or Essential Eight maturity level.
cache_info Inspect the local cache.

Resources (templates)

  • ism://catalog/{version} — full OSCAL catalog JSON (use latest or e.g. 2026.03.24).
  • ism://catalog/{version}/control/{controlId} — a single control rendered as Markdown.
  • ism://profile/{version}/{profile} — OSCAL resolved-profile catalog for a baseline.

Prompts

  • ism_compliance_check — generate a structured compliance assessment of a system against a baseline.
  • ism_change_brief — produce a change-management brief between two ISM releases.

Install / build

npm install
npm run build

The compiled entrypoint is dist/index.js and is exposed as the ism-mcp bin.

Run

The server speaks MCP over stdio:

node dist/index.js

For interactive exploration, use the official inspector:

npm run inspect

Wire it into a client

VS Code (.vscode/mcp.json or settings)

{
  "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"],
    },
  },
}

Optional environment

Variable Purpose
ISM_MCP_CACHE_DIR Override on-disk cache directory.
ISM_MCP_TAGS_TTL_MS Tag-list cache TTL in milliseconds (default 6h).

Example prompts to try

  • "What ISM versions are available?"
  • "Show me GOV-01 from the latest ISM, in Markdown."
  • "Search for ISM controls about multi-factor authentication that apply to PROTECTED."
  • "Compare ISM 2025.12.9 with the latest release and summarise the changes."
  • "List the controls in the Essential Eight ML2 baseline for the latest ISM."

Data and licensing

The ISM is published by the Australian Signals Directorate. See the upstream repository and https://www.cyber.gov.au for terms of use. This server is an unaffiliated tool that consumes the publicly published OSCAL data.

CI / CD

Three GitHub Actions workflows ship with the repo:

  • .github/workflows/ci.yml — type-checks, builds, and runs the offline smoke test on every push and PR.
  • .github/workflows/release.yml — dispatched by CI after a successful main build when a new version tag is created (or by manual dispatch), bundles the latest data, builds, packs the tarball, generates checksums, creates a GitHub Release with the tarball and data/index.json attached, updates a rolling latest git tag to the released commit, and (optionally) publishes to npm. If Cloudflare credentials are configured, it deploys a Cloudflare Worker that serves the site and exposes the MCP Streamable HTTP endpoint at /mcp (manual dispatch can disable this via deploy_cloudflare=false).
  • .github/workflows/upstream-sync.yml — checks the upstream ACSC ISM OSCAL repository on a daily schedule (or manual dispatch). When a new ISM tag is published upstream, it rebundles data/, bumps the package patch version, commits the update to main, and lets CI trigger the tagged release and Cloudflare deployment.

One-time repository setup

  1. Settings → Actions → General → Workflow permissions: Read and write.
  2. (Optional) configure repository credentials for npm publish on release.
  3. Update the repository, homepage, and bugs fields in package.json (replace OWNER).
  4. (Optional) configure Cloudflare account credentials in repository secrets to enable Workers deployment on release.

Cutting a release

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

Manual releases run CI first; when CI succeeds on main, it creates the version tag and dispatches release.yml, which builds an offline-ready ism-mcp-<version>.tgz, attaches it to the GitHub Release, and (optionally) publishes the package to npm and deploys the Cloudflare Worker endpoint.

Upstream ISM releases are also checked automatically once per day. If a new upstream tag is detected, the sync workflow rebundles the data, bumps the package version, pushes the update to main, and the existing CI and release workflows take over from there.

For remote AI clients, add the remote MCP server with this URL:

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

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

Remote MCP / HTTP transport

Beyond stdio, ism-mcp also speaks MCP Streamable HTTP so it can be hosted as a remote endpoint that AI tools query over the network.

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

Endpoints:

  • POST /mcp — JSON-RPC over Streamable HTTP (per-session via Mcp-Session-Id header).
  • GET /health — liveness probe.
  • GET / — plain-text usage hint.
  • GET /.well-known/oauth-protected-resource/mcp — protected resource metadata for MCP OAuth discovery.
  • GET /.well-known/oauth-authorization-server — authorization server metadata.
  • POST /register — dynamic client registration.
  • POST /token — token issuance for registered clients using client_credentials.

The hosted Cloudflare deployment supports dynamic client registration and client_credentials token exchange in addition to unauthenticated MCP access.

For durable client registrations and issued tokens across Worker restarts, bind a Cloudflare KV namespace as AUTH_KV. If AUTH_KV is not configured, the Worker falls back to in-memory auth state.

Environment variables:

Variable Purpose
MCP_TRANSPORT stdio (default for CLI) or http. The Docker image sets this to http.
PORT / HOST Bind address (defaults: 0.0.0.0:8080).
MCP_HTTP_PATH URL path for the MCP endpoint (default /mcp).

Connect a client to the remote endpoint

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

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

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选