Skip to main content
Version: Next 🚧

Getting Started with SecCheck

SecCheck is a hosted MCP server. You connect your AI client to it once, and from then on the client's agent can search and load security playbooks whenever a task calls for one.

There are two ways to run it:

  1. Hosted (recommended) β€” connect to https://mcp.cert-ix.com/seccheck over the network. Nothing to install; always on the current corpus.
  2. Local (stdio) β€” run the security-skills-mcp binary next to your agent for a fully offline setup. The local build is not a public download today β€” see Option 2.

Prerequisites​

  • An MCP-capable client: Claude Code, Claude Desktop, Cursor, VS Code (with an MCP extension), or any client that speaks streamable-HTTP MCP.
  • A SecCheck API key β€” free, self-service, no Cert-IX account required. Request one at cert-ix.com/tools/seccheck-mcp: confirm your email address and the key arrives by email. A free key is the Community edition and lasts 90 days; before it expires you receive an email with a renewal link, and the same key keeps working. It is sent as a Bearer token on every request, so treat it like a password β€” see Security & data handling.
info

The hosted endpoint requires an API key. Requests without a valid Authorization: Bearer <key> header are rejected with 401. Your key also carries your edition β€” see Editions.

Option 1 β€” Hosted endpoint​

Claude Code (CLI)​

Add the server with the claude mcp command:

claude mcp add --transport http seccheck https://mcp.cert-ix.com/seccheck \
--header "Authorization: Bearer YOUR_API_KEY"

Verify it registered and the tools are visible:

claude mcp list

You should see seccheck with seven tools: list_sources, search_skills, load_skill, list_skill_resources, read_skill_resource, license_status, and get_attribution.

Claude Desktop / Cursor / generic MCP client​

Add an entry to your client's MCP configuration. Most clients accept a streamable-HTTP server block like this:

{
"mcpServers": {
"seccheck": {
"type": "http",
"url": "https://mcp.cert-ix.com/seccheck",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}

Restart the client after saving. The exact file location varies by client (Claude Desktop uses claude_desktop_config.json; Cursor uses its MCP settings panel) β€” the server block above is the part that matters.

Sanity check with curl​

The endpoint is a standard MCP server, so you can confirm reachability and auth with a raw initialize call:

curl -sS -D- https://mcp.cert-ix.com/seccheck \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"protocolVersion":"2025-06-18",
"capabilities":{},
"clientInfo":{"name":"curl","version":"1.0"}}}'

A 200 with a JSON-RPC result means auth and connectivity are good. A 401 means the key is missing or wrong; a 429 means you have hit the rate limit (see Security & data handling).

Sessions: echo the mcp-session-id header

SecCheck's hosted transport is session-based. The initialize response carries an mcp-session-id header, and every subsequent request must send it back:

-H "mcp-session-id: mcp-session-<uuid-from-initialize>"

Without it, follow-up calls fail with 400 Invalid session ID. MCP clients handle this for you β€” it only matters when you are probing by hand with curl.

Option 2 β€” Local (stdio)​

Not a public download today

The local build is not distributed publicly yet. If you need SecCheck in an air-gapped or high-assurance environment, talk to your Cert-IX account team. The configuration below applies once you have the binary.

For air-gapped or high-assurance work, run the server locally over stdio. The binary carries the corpus, so it needs no network at all.

{
"mcpServers": {
"seccheck": {
"command": "security-skills-mcp",
"env": {
"SKILLS_LICENSE": "/etc/cert-ix/seccheck.license"
}
}
}
}
SettingPurpose
SKILLS_ROOT (-root)Directory holding the skill repositories, when running against on-disk sources instead of the embedded corpus.
SKILLS_LICENSE (-license)Path to a signed offline licence file. Absent or unverifiable β‡’ Community edition.
SKILLS_AUDIT_LOG (-audit-log)Append tool-call audit records here (Enterprise).
SKILLS_USAGE (-usage)Write usage metering here (Enterprise).

Check what the local instance resolved before wiring an agent to it:

security-skills-mcp -stats

It prints the indexed skill count per library and the active edition to stderr, then exits.

Hosted vs local: two differences
  • Entitlements. Hosted, your edition comes from your API key and is resolved by the Cert-IX edge on every request. Local, it comes from a signed licence file read once at start-up.
  • MCP resources. The local stdio server additionally exposes every playbook as an MCP resource under skill://<source>/<name>, so clients with a resource picker can browse the library directly. The hosted endpoint exposes tools only; use search_skills + load_skill instead.

The seven tools, their parameters and their responses are identical in both modes.

First call​

Once connected, ask your agent something like:

"We think someone is Kerberoasting our AD. Find the detection playbook and walk me through it."

The agent will call search_skills(query="kerberoasting", category="defensive"), get back cybersecurity/detecting-kerberoasting-attacks, load it with load_skill, and follow the procedure in it β€” when the hunt applies, the telemetry it needs first (EDR, SIEM, forwarded Windows Security event logs), and ordered steps from a hypothesis to validated, documented findings, mapped to the relevant MITRE ATT&CK techniques.

That is the whole point: the agent's next steps come from a written hunting procedure β€” one you can open and check β€” instead of from improvisation.

Continue to the Tools reference for the full parameter set of each tool, or Agent workflows for the search β†’ load β†’ follow discipline.

Was this page helpful?