GitHub
GitHub’s official server lets AI read and manage code, issues and pull requests in your account. Use GitHub’s hosted version or run it locally with Docker.
Description from the maker (original English)
Trust score for AI-generated code: scan repos, guard agent file writes, get a 0-100 score.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"umbra": {
"command": "npx",
"args": [
"-y",
"@elberacasa/umbra",
"mcp"
]
}
}
}Run this in your terminal
claude mcp add umbra -- npx -y @elberacasa/umbra mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"umbra": {
"command": "npx",
"args": [
"-y",
"@elberacasa/umbra",
"mcp"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"umbra": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@elberacasa/umbra",
"mcp"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account elberacasa, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (1.2.0) reached the registry 3 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: GitHub, Desktop Commander, Cloudflare MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
GitHub’s official server lets AI read and manage code, issues and pull requests in your account. Use GitHub’s hosted version or run it locally with Docker.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Everyone is vibecoding. Nobody is verifying. Umbra scores it.
Umbra is a deterministic Trust Score (0–100) for AI-generated code: the vibe coding security scanner that verifies what your agent shipped, not what it claimed. One command, fully local, evidence for every finding.
→ [umbra-badge.umbrabadge.workers.dev](https://umbra-badge.umbrabadge.workers.dev) — the landing, live badges and report pages
Quickstart · Demo · The Audit · How it works · The Four Axes · FAQ · Roadmap · Contributing · Website
Studies put exploitable vulnerabilities in 40 to 60 percent of AI-generated code, and coding agents routinely claim "all tests pass" when three do. The tooling for *writing* code with AI is a year ahead of the tooling for *trusting* it. Umbra closes that gap: SAST rebuilt for how software gets written now, plus sandboxed verification that catches what static rules cannot.
One command scans any repo an agent produced (Claude Code, Cursor, Copilot, Windsurf, Lovable) and returns a score with file:line evidence for every finding. With --deep it goes further: Umbra builds and boots the repo in a locked-down Docker sandbox, then replays the agent's own claims against reality. If the agent is lying about tests, the score is capped below passing, with receipts.
We ran Umbra over 61 public, actively-maintained AI-built repos and published everything. The Vibe-Coding Security Audit:
| Finding | Repos hit |
|---|---|
Hardcoded-secret findings (committed .env, service keys in source) | 25% |
| API routes with no auth check | 26% |
| Injection sinks (SQL interpolation, unsafe HTML injection) | 49% |
| Entire databases / SQL dumps committed to git | 13% |
| At least one critical finding | 10% |
| Zero scored findings (genuinely clean) | 7 of 61 |
Mean trust score: 74/100. One in five repos fails outright. The full report has per-class deep dives with representative snippets and fixes, the complete per-repo table, and an honest methodology section — including the false positives we found in our own rules while running it, and fixed (rubric v4).
npx umbra-scan # check — scans the directory you're standing in
npx umbra-scan --fix # heal — applies provably-safe fixes, shows the score climbing npx umbra-scan --setup # protect — pre-commit gate, PR checks, agent guardrails
That's the whole interface. Three verbs: check, heal, protect.
Using an AI coding agent? Umbra is built to be driven by agents, not just run by humans:
--setup installs PreToolUse hooks so every file the agent writes is guarded before it lands.umbra-mcp (npx --yes -p @elberacasa/umbra umbra-mcp) and the agent gets scan_repo, guard_content, and get_score as tools.Real output, scanning a typical vibe-coded Next.js app (fixtures/bad-app in this repo, Trust Score 30/100):
$ npx umbra-scan ./fixtures/bad-app
UMBRA TRUST SCORE: 30/100 🔴
SAFE 🔴 5/100 — 14 findings CLEAN ✅ 87/100 — 10 findings RUNS — not measured — run with --deep HONEST — not measured — run with --deep
Score computed over measured axes only (full rubric: SAFE 35%, RUNS 25%, HONEST 25%, CLEAN 15%). Rubric v4. …plus 7 further findings beyond the per-rule cap (see report)
Top findings: [safe/hardcoded-secrets] Hardcoded Supabase service_role JWT — bypasses all row level security — .env:2 [safe/hardcoded-secrets] Hardcoded Supabase service_role JWT — bypasses all row level security — lib/supabase.ts:5 [safe/supabase-antipatterns] Supabase service_role key reachable from client-side code — full database bypass for anyone who opens the bundle — .env:2 [safe/supabase-antipatterns] Supabase service_role key reachable from client-side code — full database bypass for anyone who opens the bundle — app/components/UserList.tsx:10 [safe/hardcoded-secrets] Committed environment file with secret values: .env — .env:1
Notes (low confidence — not scored): [safe/missing-rate-limit] Auth endpoint with no rate-limiting signal in the repo — brute-force / credential-stuffing exposure (heuristic) — app/api/login/route.ts:3
Badge:
The exit code is 1 when the score is below 50, so CI can gate on it.
All commands and flags (the expert layer — most users never need these)
umbra [path] # path defaults to the current directory
umbra [path] --json # machine-readable output umbra [path] --offline # skip npm registry checks, fully local umbra [path] --deep # verify RUNS and HONEST in a Docker sandbox umbra [path] --report # write UMBRA.md: an agent-actionable task list umbra [path] --fix # apply provably-safe fixes and re-scan (score before → after) umbra [path] --dry-run # preview --fix without writing anything umbra [path] --baseline-write # write .umbra-baseline.json: grandfather current findings, gate only on new ones umbra [path] --baseline # use an explicit baseline file ("write" is shorthand for --baseline-write) umbra [path] --publish # self-report the score to the hosted badge service (live README badge) umbra setup # install everything (hooks + Action + agent guards) umbra init # only the pre-commit hook + GitHub Action umbra protect # only the agent PreToolUse hooks (--remove uninstalls) umbra guard --stdin # hook entrypoint (agents call this, not humans) umbra mcp # run the MCP server (bin: umbra-mcp)
The canonical package is @elberacasa/umbra; umbra-scan is the short alias. Same engine either way.
repo in
│ ▼ Layer 0 · static rules (17 SAFE + CLEAN rules, 0 tokens, <1s) ▼ Layer 1 · evidence gating (confidence-scored, low never moves the score) ▼ Layer 2 · --deep sandbox (Docker: build, boot, HTTP probe, claim replay) │ ▼ deterministic Trust Score + verdict + badge
Every finding carries a confidence level and file:line evidence. Only high and medium confidence findings move the score; hunches go to a notes section. The rubric is versioned (currently v3), so the same repo always gets the same score. Full math in RUBRIC.md.
Scanning finds problems after they land. The immune layer checks every file your agent writes before it lands. umbra protect installs PreToolUse hooks into Claude Code and Kimi Code (auto-detected, one command); the same engine backs the umbra-mcp server for MCP-native agents.
flowchart LR
CC[Claude Code hook] --> E KC[Kimi Code hook] --> E MCP["umbra-mcp: guard_content"] --> E E{"guardContent(file, content) file rules + path guard"} -->|allow / warn| W[write lands] E -->|"block (exit 2)"| B["reason fed back: agent fixes the root cause"]
npx umbra-scan protect # install the hooks; --remove uninstalls cleanly
A leaked Stripe key or an alg: none JWT never reaches the file. The path guard hard-blocks agent writes into .git/hooks and .git/config (CVE-2026-26268, the agent-planted git hook escape), and live credentials going into .env. Blocking is reserved for high-confidence critical/high findings; everything else warns, and every failure fails open. Verdicts land in ~0.2 ms, so the guard never slows the agent down. Full story: docs/immune-layer.md.
--deep: verify AI code, don't trust itThe fast scan is static. --deep is LLM code verification with evidence. Umbra copies the repo into a throwaway Docker container (no network at runtime, 512 MB / 1 CPU hard limits, 120-second kill switch), builds it, boots it, HTTP-probes its endpoints, and replays every claim found in READMEs and agent artifacts against what actually happens. Slower (minutes, not seconds) and needs a running Docker daemon. Without Docker the sandboxed axes are skipped and left out of the score; unverifiable is never punished.
Real output, deep-scanning a repo whose README lies (fixtures/claims-app, capped at 49/100 by the liar cap):
$ npx @elberacasa/umbra ./fixtures/claims-app --deep
UMBRA TRUST SCORE: 49/100 🔴
SAFE ✅ 100/100 — 0 findings CLEAN ✅ 100/100 — 2 findings RUNS — not measured — No detectable run path (no Dockerfile, no package.json start script or main entry) HONEST ⚠️ 50/100 — 2 claims failed, 2 verified, 1 unverifiable
Score computed over measured axes only (full rubric: SAFE 35%, RUNS 25%, HONEST 25%, CLEAN 15%). Rubric v4. Score capped below passing: a documented claim was verified false. Trust is the product.
Claim receipts: CLAIM FAILED: "14 tests pass" — README.md:7 — actually 3 tests pass, 0 fail CLAIM FAILED: "build passes" — README.md:9 — actually build exits 1 CLAIM VERIFIED: "All tests pass" — CLAUDE.md:3 — 3 tests pass CLAIM VERIFIED: "All tests are passing" — README.md:8 — 3 tests pass
An
Only the beginning is shown; read the rest in the repo