Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
AI agent governance: content scanning, audit logs, policy evaluation, session management.
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.
BULWARK_CONFIG, BULWARK_SESSION_TOKENValues marked secret are keys to your account. Never share them or paste them into a chat.
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": {
"bulwark": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"BULWARK_CONFIG",
"-e",
"BULWARK_SESSION_TOKEN",
"ghcr.io/bpolania/bulwark:v0.2.0",
"mcp",
"start"
],
"env": {
"BULWARK_CONFIG": "your-value",
"BULWARK_SESSION_TOKEN": "your-value"
}
}
}
}Run this in your terminal
claude mcp add bulwark --env BULWARK_CONFIG=your-value --env BULWARK_SESSION_TOKEN=your-value -- docker run -i --rm -e BULWARK_CONFIG -e BULWARK_SESSION_TOKEN ghcr.io/bpolania/bulwark:v0.2.0 mcp startFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"bulwark": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"BULWARK_CONFIG",
"-e",
"BULWARK_SESSION_TOKEN",
"ghcr.io/bpolania/bulwark:v0.2.0",
"mcp",
"start"
],
"env": {
"BULWARK_CONFIG": "your-value",
"BULWARK_SESSION_TOKEN": "your-value"
}
}
}
}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": {
"bulwark": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"BULWARK_CONFIG",
"-e",
"BULWARK_SESSION_TOKEN",
"ghcr.io/bpolania/bulwark:v0.2.0",
"mcp",
"start"
],
"env": {
"BULWARK_CONFIG": "your-value",
"BULWARK_SESSION_TOKEN": "your-value"
}
}
}
}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.
BULWARK_CONFIG envThese 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 6, 2026
The registry name was verified with the GitHub account bpolania, 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.
You need to fill in: BULWARK_SESSION_TOKEN
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 (0.2.0) reached the registry 8 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Docker on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, HotCodePush
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
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Manage over-the-air (OTA) updates for React Native, Expo, Capacitor and Cordova apps.
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.
Open-source governance layer for AI agents.
Bulwark sits between AI agents and external tools, enforcing policies, managing credentials, inspecting content, and maintaining a complete audit trail. One policy governs all your agents — Claude Code, OpenClaw, Codex, or any MCP/HTTP client.
AI agents are powerful but ungoverned. They can access any tool, leak any credential, and leave no audit trail. Bulwark fixes this:
# Homebrew (macOS / Linux)
brew install bpolania/tap/bulwark
docker pull ghcr.io/bpolania/bulwark
git clone https://github.com/bpolania/bulwark.git cd bulwark && cargo build --release
This walkthrough connects Claude Code to GitHub through Bulwark. Every tool call is policy-evaluated, audited, and credential-injected — in about 5 minutes.
Prerequisites: Claude Code installed, a GitHub personal access token, and Node.js/npm (for the GitHub MCP server).
bulwark init my-project && cd my-project
bulwark doctor
doctor runs 9 diagnostic checks. All should pass.
bulwark cred add github-token --type bearer_token
Configure the credential-to-tool binding in your bindings file so Bulwark knows to inject this token for GitHub tool calls.
Edit bulwark.yaml:
mcp_gateway:
upstream_servers:
policy: policies_dir: "./policies" hot_reload: true
audit: enabled: true
inspect: enabled: true inspect_requests: true inspect_responses: true
Make sure GITHUB_TOKEN is set in your shell (export GITHUB_TOKEN=ghp_...).
cat > policies/base.yaml << 'EOF'
metadata: name: quickstart-policy scope: global
rules:
EOF
bulwark policy validate
# Create a session (--ttl is in seconds: 28800 = 8 hours)
bulwark session create --operator $(whoami) --agent-type claude-code --ttl 28800
export BULWARK_SESSION="bwk_sess_7f3a..." # paste your actual token
claude mcp add --transport stdio bulwark \ --env BULWARK_SESSION=$BULWARK_SESSION \ -- bulwark mcp start
Start Claude Code. GitHub tools appear namespaced as github__list_issues, github__create_issue, etc.
Try it:
"List the open issues in my repo"
Open a second terminal:
bulwark audit tail
22:01:03 github__list_issues ✓ allow 3ms (allow-reads)
Every call is logged with the verdict, matched rule, and timing. Now try something destructive:
"Delete issue #1"
22:02:01 github__delete_issue ✗ deny <1ms (block-destructive)
Blocked. Sub-millisecond — policy evaluation happens in memory. The agent gets a structured error explaining which rule denied it.
Claude Code connected to Bulwark (not directly to GitHub). For every tool call, Bulwark validated the session, scanned for secrets/PII, evaluated the policy, injected the real GitHub token, scanned the response, and recorded a tamper-evident audit event. Same agent experience — full governance underneath.
Content inspection — 13 built-in patterns scan for AWS keys, GitHub tokens, private keys, PII, and prompt injection. Redaction happens before content reaches the agent.
bulwark inspect rules
bulwark inspect scan --text "my key is [PopNx MCP ตัดค่าที่หน้าตาเหมือนกุญแจออก]"
Policy replay — Preview the impact of policy changes against real audit history before deploying:
bulwark policy test --dir ./new-policies/ --since 1h
Audit forensics — Reconstruct a session timeline and verify the hash chain:
bulwark session inspect <session-id>
bulwark audit verify bulwark audit export --since 24h --format json
HTTP proxy mode — For non-MCP agents, Bulwark runs as a forward proxy with TLS interception:
bulwark proxy start
bulwark ca export # trust the CA in your HTTP client
┌─────────────┐ ┌──────────────────────────────────────────────┐ ┌──────────────┐
│ │ │ Bulwark │ │ │ │ AI Agent │────>│ Session > Inspect > Policy > Inject > Proxy │────>│ Upstream │ │ (Claude, │<────│ <── Audit <── Inspect <── Response <─────── │<────│ Tool/API │ │ Codex, │ │ │ │ │ │ custom) │ └──────────────────────────────────────────────┘ └──────────────┘ └─────────────┘
| Mode | Transport | Best For |
|---|---|---|
| MCP Gateway (stdio) | stdio/JSON-RPC | Claude Code, OpenClaw, any MCP client |
| MCP Gateway (HTTP) | Streamable HTTP | Remote agents, MCP registry, multi-agent |
| HTTP Proxy | HTTP/HTTPS | Codex, curl, any HTTP client |
# policies/base.yaml
metadata: name: my-policy scope: global
rules:
See examples/policies/ for complete policy sets (startup, enterprise, development, multi-agent).
bulwark init <path> # Scaffold a new project
bulwark proxy start # Start HTTP/HTTPS proxy bulwark mcp start # Start MCP gateway (stdio) bulwark mcp serve # Start MCP gateway (HTTP) bulwark doctor # Diagnose setup issues (9 checks) bulwark status # Health dashboard bulwark policy validate # Validate policy files bulwark policy test --dir # Test policies against audit log bulwark session create|list|revoke|inspect bulwark cred add|list|remove|test bulwark audit search|tail|stats|export|verify bulwark inspect scan|rules # Content inspection bulwark ca export|path # CA certificate management bulwark completions # Shell completions (bash/zsh/fish)
git clone https://github.com/bpolania/bulwark.git
cd bulwark cargo build --workspace cargo test --workspace # 487 tests cargo clippy --workspace --all-targets -- -D warnings
crates/
cli/ # CLI binary and commands proxy/ # HTTP/HTTPS forward proxy with TLS MITM mcp/ # MCP governance gateway config/ # Configuration loading and types policy/ # YAML policy engine with hot-reload vault/ # Credential storage and session management audit/ # Tamper-evident audit logging inspect/ # Content inspection (secrets, PII, injection) ratelimit/ # Token-bucket rate limiter and cost tracker common/ # Shared types and error definitions
Apache 2.0. See LICENSE.