@securitychecks/mcp
v0.4.0
Published
MCP server for SecurityChecks - verify security invariants via AI assistants
Maintainers
Readme
@securitychecks/mcp
Security verification for AI-assisted development — MCP server for backend security invariant checks.
MCP server that lets Claude verify security invariants in your code — auth enforcement, injection safety, access control, webhook idempotency.
What is this?
Your AI assistant writes code. This gives it the ability to review that code for production-readiness.
The loop: Copilot/Cursor writes → Claude reviews via MCP → Ship with confidence.
Claude can now check for the patterns that cause production incidents, based on what staff engineers actually catch in review.
Installation
npm install -g @securitychecks/mcpUsage with Claude Code
Add to your Claude Code MCP configuration:
{
"mcpServers": {
"scheck": {
"command": "scheck-mcp",
"args": [],
"env": {
"SCHECK_MCP_ALLOWED_ROOTS": "."
}
}
}
}Allowed roots (required)
For safety, scheck-mcp will only run inside the allowed roots. If you don’t set SCHECK_MCP_ALLOWED_ROOTS and the server is not started inside a git repository, it will refuse to scan.
Available Tools
scheck_run
Run scheck on the codebase.
Arguments:
- path (optional): Target path to audit
- include_context (optional): Include code context snippets in results
- max_findings (optional): Limit number of findings returned (default: 200)
- only (optional): Only run specific invariant checks by ID
- skip (optional): Skip specific invariant checks by IDscheck_list_findings
List current findings from the last run.
Arguments:
- severity (optional): Filter by severity (P0, P1, P2)
- include_context (optional): Include code context snippets in results
- max_findings (optional): Limit number of findings returned (default: 200)scheck_explain
Explain an invariant - what a staff engineer would say about it.
Arguments:
- invariant_id: The invariant to explain (e.g., "AUTHZ.SERVICE_LAYER.ENFORCED")scheck_list_invariants
List all patterns a staff engineer checks for.
scheck_generate_test
Generate a test skeleton to prove an invariant is satisfied.
Arguments:
- invariant_id: The invariant to generate a test for
- framework (optional): Test framework (jest, vitest, playwright)
- context (optional): Extra context to generate a more targeted testscheck_feedback
Report whether a finding was a true positive or false positive.
Arguments:
- invariant_id: Invariant ID (e.g., AUTHZ.SERVICE_LAYER.ENFORCED)
- verdict: true_positive or false_positive
- reason (optional): not_applicable, acceptable_risk, wrong_location, outdated_pattern, missing_context, otherExample Session
User: Check my code for issues a senior engineer would catch
Claude: [calls scheck_run]
Found 2 issues a staff engineer would flag:
1. **AUTHZ.SERVICE_LAYER.ENFORCED** (P0)
Service "MembershipService" has exports without auth checks
Location: src/services/membership.ts:12
A staff engineer would ask: "What happens when a background
job calls removeMember() directly, bypassing the route?"
2. **WEBHOOK.IDEMPOTENT** (P0)
Webhook handler missing idempotency check
Location: src/api/webhooks/stripe.ts:45
A staff engineer would ask: "What happens when Stripe
retries this webhook?"
User: Explain the webhook issue
Claude: [calls scheck_explain with invariant_id="WEBHOOK.IDEMPOTENT"]
Webhooks can be delivered multiple times. Without idempotency,
you might double-charge customers, send duplicate emails, or
corrupt data...Why MCP?
AI writes code fast but doesn't reason about production scenarios:
- Webhook retries → double-charges
- Internal service calls → auth bypass
- Transaction rollbacks → phantom emails
This MCP server gives Claude the ability to catch these patterns — the things AI-generated code routinely misses.
Enterprise
For teams with compliance requirements:
- Audit trails: Every AI-assisted review is logged
- Local analysis: SOC2 compliant — no source code transmission
- Consistent patterns: Same staff check for all developers
License
Apache-2.0. See LICENSE for details.
