2,029 DISA STIG rules with official check/fix text, CCI mappings, and .ckl checklist export.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Generate a DISA STIG Viewer checklist (.ckl XML) for a benchmark, optionally filtered by severity and pre-populated with findings. This is the artifact an assessment actually hands over - STIG Viewer opens it, eMASS ingests it, and a POA&M is written from it. Rules you do not supply a status for come out as Not_Reviewed. Call this when the user wants a checklist, a scan result recorded, or evidence to submit, rather than just to read a rule.
Which benchmark to build the checklist from
Per-rule results. Anything omitted stays Not_Reviewed - an unreviewed rule must never be reported as passing.
Limit to one severity, e.g. high for a CAT I-only checklist
Asset hostname recorded in the checklist
Generate a DISA STIG Viewer checklist (.ckl XML) for a benchmark, optionally filtered by severity and pre-populated with findings. This is the artifact an assessment actually hands over - STIG Viewer opens it, eMASS ingests it, and a POA&M is written from it. Rules you do not supply a status for come out as Not_Reviewed. Call this when the user wants a checklist, a scan result recorded, or evidence to submit, rather than just to read a rule.
| Argument | Type | Description |
|---|---|---|
| host_ip | string | |
| product* | string | Which benchmark to build the checklist from |
| findings | array | Per-rule results. Anything omitted stays Not_Reviewed - an unreviewed rule must never be reported as passing. |
| severity | string | Limit to one severity, e.g. high for a CAT I-only checklist |
| host_fqdn | string | |
| host_name | string | Asset hostname recorded in the checklist |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"product"
],
"properties": {
"host_ip": {
"type": "string"
},
"product": {
"enum": [
"cisco_ios_router_ndm",
"cisco_ios_router_rtr",
"cisco_ios_switch_l2s",
"cisco_ios_switch_ndm",
"cisco_ios_switch_rtr",
"cisco_ise_nac",
"cisco_ise_ndm",
"cisco_nxos_switch_l2s",
"cisco_nxos_switch_ndm",
"cisco_nxos_switch_rtr",
"ubuntu2204",
"rhel8",
"rhel9",
"windows11",
"windows2022"
],
"type": "string",
"description": "Which benchmark to build the checklist from"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"required": [
"sv_id",
"status"
],
"properties": {
"sv_id": {
"type": "string"
},
"status": {
"enum": [
"Open",
"NotAFinding",
"Not_Applicable",
"Not_Reviewed"
],
"type": "string",
"description": "Open = failed, NotAFinding = passed, Not_Applicable = out of scope"
},
"comments": {
"type": "string",
"description": "Assessor justification"
},
"finding_details": {
"type": "string",
"description": "What was actually observed"
}
}
},
"description": "Per-rule results. Anything omitted stays Not_Reviewed - an unreviewed rule must never be reported as passing."
},
"severity": {
"enum": [
"high",
"medium",
"low"
],
"type": "string",
"description": "Limit to one severity, e.g. high for a CAT I-only checklist"
},
"host_fqdn": {
"type": "string"
},
"host_name": {
"type": "string",
"description": "Asset hostname recorded in the checklist"
}
}
}Get the complete detail for one DISA STIG rule by its SV id (from search_stig): the requirement discussion, the exact check procedure an assessor runs, the fix text, severity, NIST control mapping, and whether it is SCAP-automatable. Call this when the user needs to implement or verify a specific rule.
| Argument | Type | Description |
|---|---|---|
| sv_id* | string | Rule id, e.g. "SV-257777r991589_rule" (fragments matched if unique) |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"sv_id"
],
"properties": {
"sv_id": {
"type": "string",
"description": "Rule id, e.g. \"SV-257777r991589_rule\" (fragments matched if unique)"
}
}
}List the DISA STIG benchmarks this server covers, with versions, rule counts, and severity breakdowns. Call this first when unsure whether a platform is covered.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Search DISA STIG hardening rules across RHEL 8, RHEL 9, Windows 11, Windows Server 2022, and Cisco IOS Router NDM benchmarks - by keyword (matched against rule IDs and titles first, then descriptions), filterable by product, severity (high/medium/low, mapping to CAT I/II/III), category, and automation level. Call this when the user asks how to harden one of these platforms, what a STIG requires, or which rules cover a topic like SSH, passwords, or auditing. Returns summaries; use get_stig_rule for full check and fix text.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results per page (default 20) |
| query* | string | Keyword or rule id fragment, e.g. "ssh banner" or "SV-257777" |
| format | string | "summary" (default) returns each rule inline as JSON. "links" returns MCP resource links, which hosts can render as pickable items the user opens on demand. Not smaller - the title and severity you need in order to choose are the bulk of either shape - so choose on how the client presents results, not to save tokens. |
| offset | integer | Skip this many matches. Pass the next_offset from a previous response to reach results beyond the first page. |
| product | string | Limit to one benchmark |
| severity | string | high=CAT I, medium=CAT II, low=CAT III |
| automation | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Max results per page (default 20)"
},
"query": {
"type": "string",
"description": "Keyword or rule id fragment, e.g. \"ssh banner\" or \"SV-257777\""
},
"format": {
"enum": [
"summary",
"links"
],
"type": "string",
"description": "\"summary\" (default) returns each rule inline as JSON. \"links\" returns MCP resource links, which hosts can render as pickable items the user opens on demand. Not smaller - the title and severity you need in order to choose are the bulk of either shape - so choose on how the client presents results, not to save tokens."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Skip this many matches. Pass the next_offset from a previous response to reach results beyond the first page."
},
"product": {
"enum": [
"cisco_ios_router_ndm",
"cisco_ios_router_rtr",
"cisco_ios_switch_l2s",
"cisco_ios_switch_ndm",
"cisco_ios_switch_rtr",
"cisco_ise_nac",
"cisco_ise_ndm",
"cisco_nxos_switch_l2s",
"cisco_nxos_switch_ndm",
"cisco_nxos_switch_rtr",
"ubuntu2204",
"rhel8",
"rhel9",
"windows11",
"windows2022"
],
"type": "string",
"description": "Limit to one benchmark"
},
"severity": {
"enum": [
"high",
"medium",
"low"
],
"type": "string",
"description": "high=CAT I, medium=CAT II, low=CAT III"
},
"automation": {
"enum": [
"automated",
"manual_only"
],
"type": "string"
}
}
}