GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Descripción del creador (original en inglés)
Static compliance-controls checker for UK Online Safety Act & ICO Children's Code. CLI + MCP.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"bouncer": {
"command": "npx",
"args": [
"-y",
"@nugehs/bouncer",
"mcp"
]
}
}
}Ejecuta esto en tu terminal
claude mcp add bouncer -- npx -y @nugehs/bouncer mcpPégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"bouncer": {
"command": "npx",
"args": [
"-y",
"@nugehs/bouncer",
"mcp"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"bouncer": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@nugehs/bouncer",
"mcp"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub nugehs, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.3.0) llegó al registro hace 25 días.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Node.js en tu computadora.
En la misma categoría: GitHub, Desktop Commander, Cloudflare MCP
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
Static compliance-controls checker — the controls a regulation requires, verified in your code.
[nugehs.github.io/bouncer-web](https://nugehs.github.io/bouncer-web/) (site)
bouncer verifies that the controls a regulation *requires* actually exist in your code — UK Online Safety Act, ICO Children's Code (AADC), and Nigeria (NDPC, FCCPC, FIRS) — expressed as deterministic rule packs. It runs in CI, exits non-zero when a required control is missing, and needs no LLM.
It checks IDs at the door so non-compliant code doesn't get in.
bouncer is an engineering aid, not legal advice. A green report means the
coded controls a rule looks for were found — it is not a substitute for a
compliance / DPO review.
Regulators now expect *demonstrable* controls: age assurance, high-privacy defaults for children, report/block affordances on user-generated content, a DPIA, a risk assessment. Those are concrete things that either exist in a codebase or don't. bouncer turns a regulation into a set of static checks over your repo, the same way tieline turns an API contract into drift checks — the engine knows nothing about the law; the rule packs do.
Scanners like semgrep, CodeQL, or Snyk answer *"is there bad code here?"* — they hunt for vulnerabilities and dangerous patterns that shouldn't exist. bouncer answers the opposite question: *"does the code the regulation requires actually exist?"* — age assurance on sign-up, report/block on UGC surfaces, high-privacy defaults for children. A repo can be vulnerability-free and still fail every one of those obligations. Policy-as-code tools (OPA/Rego, Conftest) gate *configs and infrastructure* against policy; bouncer gates *application source* against regulatory rule packs, with file:line evidence for every control and an honest unknown when a surface can't be located. In short: semgrep finds vulnerabilities; bouncer proves required controls exist. They complement each other — run both.
npx @nugehs/bouncer init
npx @nugehs/bouncer check
Or clone and run with plain Node (zero runtime dependencies, Node ≥ 18).
bouncer init [path] # write a starter bouncer.config.json
bouncer check # run packs, print report, exit 1 on a missing control bouncer check --pack uk-aadc # restrict to one pack bouncer check --status fail # show only the failures bouncer report --out report.html # self-contained HTML audit report bouncer list # every rule the configured packs apply bouncer explain # what a rule requires + how it is checked bouncer packs # rule packs shipped with bouncer bouncer doctor # sanity-check config, adapter, packs bouncer mcp # start the MCP server (stdio)
| Verdict | Meaning |
|---|---|
| pass | the required control was found (evidence: file:line) |
| fail | the surface exists, but no evidence of the control was found |
| unknown | the surface could not be located in this repo — *can't determine, not a pass* |
unknown is deliberate: bouncer never reports a green pass for a surface it could not find. Missing surface → honest "can't determine".
bouncer.config.json:
{
"target": { "adapter": "auto", "repo": "./my-app", "roots": ["."] }, "packs": ["uk-osa", "uk-aadc"], "packDirs": [], "ignore": [], "exclude": [], "failOn": ["fail"] }
adapter — how regulation *surfaces* (sign-up, profile, chat, livestream…) map onto files for your stack.bouncer is language-agnostic. The default
autoadapter scans TS/JS, Go,
Java, Kotlin, Scala, C#, C/C++, Rust, Swift, Dart, PHP, Python, Ruby, Elixir,
SQL and HTML templates. Surfaces are found by directory/file *names* in any
naming convention (
signup/,sign_up.py,SignUpController.java).
Comments and test/fixture files are never counted as evidence.
nextand
react-nativeremain as TS/JS-only aliases. Narrow withtarget.languages.
exclude — extra globs to skip (added to built-in test/fixture/mock excludes; set "defaultExcludes": false to disable those).packs — which rule packs to run. Built-ins: uk-osa, uk-aadc, ng-ndpc, ng-fccpc, ng-firs.packDirs — extra directories of your own *.json packs.ignore — rule ids to skip.failOn — which buckets make check exit non-zero (default ["fail"]). Regardless of failOn, check also exits 1 when *every* rule is unknown: no surface was located, so nothing was verified._ (e.g. "_note") are treated as comments and ignored silently.A pack is JSON. Each rule maps a *legal standard* to a static assertion over a *surface*:
{
"id": "aadc.geolocation-default-off", "standard": "Standard 10 — Geolocation", "severity": "high", "surface": "profile", "intent": "Geolocation must default to off for children.", "fix": "Default any location-sharing setting to off.", "assert": { "find": "(share[_-]?location|location[_-]?sharing)[\"']?\\s*[:=]\\s*(false|off)\\b", "in": ["profile", "privacy", "location"], "expect": "present" } }
Assertion nodes:
{ "find": " ", "in": " ", "expect": "present|absent" }{ "allOf": [ … ] } · { "anyOf": [ … ] } · { "not": … }in accepts a surface alias (resolved by the adapter), an array of aliases/globs, or a raw glob. expect: "absent" flips the meaning — a match is a *violation* (used for nudge patterns, self-declared age checkboxes, etc.).
any, signup, auth, profile, privacy, location, chat, livestream, ugc, moderation, consent, legal, dsr, security, retention, breach, processors, payments, invoice, governance. Unknown surface names are pack-validation errors.
For a platform operating in Nigeria, three packs ship built-in:
Some obligations are process, not code — NDPC registration, signed cross-border DPAs, the WHT remittance itself. Those rules surface as gaps to track (add them to ignore with a note), not things a static scan can prove.
bouncer is also an MCP server (stdio), so an agent can pull the same deterministic results:
| Tool | Purpose |
|---|---|
compliance_check | run packs, return per-control verdicts + evidence |
list_rules | list rules the configured packs apply |
explain_rule | a rule's standard, intent, fix, and how it is checked |
list_packs | available rule packs |
// .mcp.json
{ "mcpServers": { "bouncer": { "command": "npx", "args": ["-y", "@nugehs/bouncer", "mcp"] } } }
- run: npx @nugehs/bouncer check
Fails the build when a required control goes missing — e.g. someone removes an age-gate or a report button from a UGC surface.
npm test # node --test — zero dependencies, nothing to install
The suite runs on Node's built-in test runner against throwaway fixture repos: glob/brace expansion, every assertion probe (find, allOf/anyOf/not, allInFile + within windows, expect: "absent"), the pass/fail/unknown verdict semantics, and pack loading. CI runs it on Node 18, 20, 22, and 24.
MIT
bouncer is one of four tools that form a deterministic trust layer for AI-assisted development. Each answers a question people keep handing to an LLM — with static analysis instead.
More at segunolumbe.com. *static analysis, never the model.*