GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者による説明(英語の原文)
Static compliance-controls checker for UK Online Safety Act & ICO Children's Code. CLI + MCP.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"bouncer": {
"command": "npx",
"args": [
"-y",
"@nugehs/bouncer",
"mcp"
]
}
}
}ターミナルでこれを実行します
claude mcp add bouncer -- npx -y @nugehs/bouncer mcpプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"bouncer": {
"command": "npx",
"args": [
"-y",
"@nugehs/bouncer",
"mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"bouncer": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@nugehs/bouncer",
"mcp"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント nugehs で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.3.0)がレジストリに届いたのは25 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:GitHub, Desktop Commander, Cloudflare MCP
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
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
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
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.*