The static analyzer your AI agent reads β fix-ready, machine-readable scan reports over MCP.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
AI agents ship code fast β and ship bugs fast. CodeMore scans the code, then hands the agent that wrote it a machine-readable report with the exact fix and the criteria to verify it. The agent closes its own findings.
Website Β· Docs Β· Rule Catalog Β· Report Schema Β· Changelog
64 native rules Β· 8 external adapters Β· CLI Β· MCP server Β· VS Code extension Β· GitHub Action β one report, byte-identical on every surface.
AI-assisted coding ships vulnerabilities at a measured, growing rate:
| Finding | Source |
|---|---|
| 45% of AI-generated code carries an OWASP Top-10 vulnerability | Veracode 2025/26 |
| 98% of 1,072 scanned vibe-coded sites had β₯ 1 security flaw | Symbiotic |
| 70% of audited Lovable apps shipped with Supabase RLS disabled | DEV |
| 2Γ baseline secret-leak rate on AI-tool-assisted commits | GitGuardian SOSS 2026 |
| 35 CVEs/month attributed to AI-generated code (was 6/month in January) | March 2026 |
Existing scanners (SonarQube, DeepSource, Snyk) target human reviewers sitting at dashboards. But this code wasn't written by a human β and the LLM that wrote it is fully capable of fixing its own bug, if the report is shaped for a machine reader.
That's the wedge. CodeMore is not another SAST dashboard. It's the report contract between a scanner and a coding agent: every finding carries a suggestedFix with a patch template and explicit verificationCriteria β not just "here's a problem," but "here's exactly how to know you fixed it."
The agent that wrote the bug can also write the fix β if it can read the report.
Prints a summary to the terminal. Add --json for the full report on stdout, or --out codemore-report.json to write it to disk: every finding pinned to file:line:column with rule citation, fix template, and verification criteria. Pipe it to your agent and watch findings close.
Six tools exposed: scan_project Β· scan_file Β· explain_issue Β· suggest_fix Β· apply_fix Β· validate_fix.
Per-client setup, exact config paths, and verified handshake evidence (Claude Code, Cursor, Claude Desktop, Codex CLI): docs/ide-matrix.md.
Install CodeMore from the VS Code Marketplace (Extensions β search "CodeMore" β Install), or build the VSIX yourself:
Inline diagnostics; code-action quick-fix invokes the agentic loop (plan β generate β validate β retry, max 3 attempts).
PR-comment bot; only fails the build on findings new since the committed .codemore-baseline.json. A full copy-paste security gate chaining CodeMore + Ruff + Biome + Bandit + Gitleaks + npm-audit + pip-audit + Checkov lives at templates/.github/workflows/codemore-security-gate.yml (walkthrough).
Sign in at codemore.tech, paste a public GitHub URL or upload a ZIP β same report, same fingerprint, zero install.
64 native rules across 6 packs, every rule mapped to a cited real-world incident class β not a hypothetical:
| Pack | Rules | Highlights |
|---|---|---|
core-security | 22 | SQL injection (concat), path traversal, weak crypto, insecure deserialization, eval, shell injection, TLS-off, hardcoded secret patterns, hardcoded passwords (B105-class), SSRF, secret-in-log, LLM-output β eval/exec/SQL sinks, prompt-injection sinks, DB write-without-WHERE, hallucinated imports |
core-quality | 21 | Unused vars/imports/exports, cyclomatic complexity, dead conditionals, leftover console/prints, async-without-await, unreachable code, loose equality, as any, non-null-assertion abuse |
vibe-frontend | 9 | XSS (dangerouslySetInnerHTML), CORS-with-credentials, missing rate limit, missing cookie flags, file-upload validation, missing input validation β CORS, cookie flags and input validation each in TS + Python (Flask/FastAPI) form |
vibe-secrets | 4 | Public env leaks (NEXT_PUBLIC_* / VITE_* / REACT_APP_*), hardcoded JWTs, MCP config secrets, CI/CD YAML secrets |
vibe-auth | 5 | BOLA (TS + Python), missing session/auth checks (TS + Python), inverted auth |
vibe-supabase | 3 | RLS-off, RLS-permissive (USING (true)), anon-key bundled to client |
8 external adapters (off by default, opt in via --external-tools): ruff Β· golangci-lint Β· clippy Β· biome Β· bandit Β· gitleaks Β· npm-audit Β· pip-audit. Findings are namespaced ext:<tool>:<rule-id> β no collision with native rules; a missing binary skips silently instead of crashing.
The walker catches what .gitignore hides. When a developer "hides" a leaked secret file by gitignoring it, most scanners stop seeing it β but it's still on disk, in tarballs, in Docker images. CodeMore always scans secret-shaped filenames (.env*, *.pem, *.key, firebase-adminsdk*.json, credentials.json, .npmrc, .pypirc, β¦) even when gitignored. This is exactly how the audits found real production OpenAI keys, Google API keys, and Firebase admin SDK creds that other tools silently missed. Opt out with --respect-gitignore-fully.
Per-rule documentation: docs/rules β 64 pages, one per rule.
Every surface emits the same schema-stable codemore-report.json β verified byte-identical (modulo timestamps and instance IDs) on every release by test/parity.test.ts:
One brain, four skins. The schema is the API; surfaces are interchangeable.
codemore-report.json v1.0.0Schema source-of-truth: shared/report/schema.json. Breaking changes bump schemaVersion major and ship a migration guide.
apply_fix runs a four-stage loop, up to 3 retries per finding β it terminates on first PASS and never silently keeps a failing patch:
agenticFixer.ts β orchestrator; reads finding + rule citation + framework contextvalidatorHarness.ts β applies the patch in a tempdir copy, re-runs the rule, re-runs file-scoped tests, returns pass | fail + diagnosticsCODEMORE_LLM_PROVIDER env (CLI)Synthetic benchmarks lie; real codebases don't. Every release is audited against real projects, and the numbers are published β including the bad ones.
2026-07-07 audit (full report) β 7 codebases (Python app, 1.35M-LOC TS monorepo, polyglot Rust, synthetic ground-truth apps, self-scan): 100% of planted vulnerabilities detected, a real OpenAI key caught in a production .env, ~90% BLOCKER true-positive rate, self-scan noise reduced 85% after fixing four false-positive classes.
2026-06-12 audit (full report) β 10 real codebases, aggregate ~85% BLOCKER TP rate, above DeepSource's β₯ 75% production bar:
| Project | Findings | BLOCKERs | TP rate | Notes |
|---|---|---|---|---|
| EchoVault | 122 | 10 | 100% | Real Supabase RLS holes |
| ProofSnap | 134 | 4 | 100% | |
| AImentor | 224 | 5 | 100% | Real OpenAI keys hidden by .gitignore |
| Hackathonnn | 129 | 3 | 100% | |
| shopsec | 113 | 5 | 100% | |
| Senti | 155 | 8 | 100% | |
| open-design | 8,615 | 101 | ~80% | |
| Gen ai | 63 | 4 | 75% | Real Firebase admin SDK creds |
| codemore self | 282 | 6 | 17% | Intentional landing-demo data |
| Aggregate (excl. self) | 9,755 | 140 | ~85% |
corpus/rules/<rule-id>/{tp,fp}/experimental β beta β stable, promotion requires fixture pairs plus real-world FP-rate evidence via opt-in telemetry; rules below the precision bar are gated behind --enable-experimental or ship with reduced confidence so agents weight them lower| Lifecycle | Default | Promotion bar |
|---|---|---|
experimental | off by default | one fixture pair |
beta | on by default | β₯ 3 fixture pairs + 14-day FP rate < 15% |
stable | ships in default pack | 30-day FP rate < 5% + reference apps clean |
deprecated | warns, removed next major | β |
Out of scope by design β static analysis can't judge these, and an agent can't auto-fix them from a source diff. The rule is "agent-actionable or it's not a rule":
Weak password policies Β· audit-log completeness Β· business-logic flaws Β· race conditions Β· open S3/GCS buckets Β· DAST findings Β· MFA presence.
Full list with reasoning: docs/limitations.md. For these, pair CodeMore with OWASP ZAP, Burp Suite, checkov, or your IdP's compliance dashboard.
Off by default. Enable per-scan with --telemetry. Collected: tool version, hashed project fingerprint, surface, rule-fire events. Never collected: file paths, contents, snippets, evidence text β the endpoint enforces a Zod strict() schema and rejects any payload containing those keys with HTTP 400. 64 KB payload cap, per-fingerprint rate limiting, RLS denies all reads.
One brain (shared/), four skins (CLI, MCP, extension, Action), one report schema β kept honest by the parity test, not by a slogan.
VS Code extension: F5 in VS Code, or npm run watch + code --extensionDevelopmentPath=.
Two paths:
CONTRIBUTING-RULES.md. The PR bot gates every submission: rule module + TP fixture (must fire) + FP fixture (must not fire) + docs page + pack registration. The bot is the first reviewer; humans review after it passes.CONTRIBUTING.md.Before opening a PR:
Found a false positive? Open a rule-FP report β FP reports directly feed the betaβstable promotion pipeline.
Security findings: do not open a public issue β use GitHub's private vulnerability reporting flow (SECURITY.md).
benchmark/REPORT.md (40% of 50 AI-built repos had β₯ 1 BLOCKER; 24% after honest FP triage)auto-demote-rules.yml opens a review issue when a rule's FP rate crosses 10%Details: docs/roadmap.md.
MIT β see LICENSE. CodeMore is open source from line one and stays that way. The wedge is the report contract, not gatekeeping.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/codemore)<a href="https://allmcps.com/mcp/codemore"><img src="https://allmcps.com/api/badge/codemore?style=directory" alt="Codemore on AllMCPs" /></a>