docs: GitHub MCP proxy demo (Vaara in front of github/github-mcp-server)#103
Conversation
…tern fits The proxy is MCP-protocol-level, not SAP-specific. Adds a closing section to the SAP demo README naming GitHub MCP, Microsoft Graph MCP, Salesforce MCP, ServiceNow MCP, cloud MCP servers, and Databricks MCP as ecosystems where the same three-step recipe works, plus an invitation for contributions adding per-ecosystem demos under examples/.
Adds examples/github-mcp-proxy-demo/ with a README walkthrough and a Claude Code MCP config example showing how to insert Vaara's runtime governance proxy in front of GitHub's official MCP server (ghcr.io/github/github-mcp-server, MIT-licensed, 29.9k stars). The demo targets any developer running Claude Code, Cursor, VS Code Copilot, or Claude Desktop against GitHub. Reader brings their GitHub PAT, Docker, and existing MCP config. Demo brings the Vaara wiring. Three-step recipe: pip install vaara, replace the existing Claude Code MCP config entry with the Vaara proxy command in front of the same Docker upstream, restart the MCP client. Every tools/call routes through Vaara's interception pipeline before reaching the upstream. Audit trail accumulates in a local SQLite DB and exports as AI Act Article 12 evidence via vaara compliance report / vaara trail export. GitHub-specific framing in the "Why this matters" section names the categories where runtime evidence has real load: code modification (create_or_update_file, push_files, merge_pull_request), privilege escalation surfaces (update_repository, Actions secrets, workflow dispatches), notification and identity exposure (the agent posts in your name), and supply-chain-adjacent operations (Dependabot, security advisories, releases). Article 12 logging and Article 14 oversight apply at the tool-call layer. Sibling demo to examples/sap-mcp-proxy-demo/. The proxy is MCP-protocol-level, not SAP- or GitHub-specific.
📝 WalkthroughWalkthroughThis PR adds documentation and configuration examples demonstrating Vaara as a protocol-level proxy for MCP servers. It introduces a complete GitHub MCP proxy example directory with setup guides and configuration templates, and extends existing SAP documentation to clarify that the same pattern generalizes to other MCP server implementations. ChangesVaara MCP Proxy Examples
🎯 1 (Trivial) | ⏱️ ~3 minutes
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@examples/github-mcp-proxy-demo/claude_code_config.example.json`:
- Line 20: Replace the token-shaped example value for the
"GITHUB_PERSONAL_ACCESS_TOKEN" key with a neutral placeholder or remove the key
from the example; specifically update the example JSON entry for
"GITHUB_PERSONAL_ACCESS_TOKEN" to use a non-token-looking string like
"REPLACE_WITH_GITHUB_PAT" or omit the env entry entirely so users are encouraged
to supply the secret via their shell/CI rather than storing a plaintext token in
the example file.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 9ad82bf0-8993-4826-835a-8af7abb89645
📒 Files selected for processing (3)
examples/github-mcp-proxy-demo/README.mdexamples/github-mcp-proxy-demo/claude_code_config.example.jsonexamples/sap-mcp-proxy-demo/README.md
| "--agent-id", "claude-code-github" | ||
| ], | ||
| "env": { | ||
| "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_replace_with_your_token" |
There was a problem hiding this comment.
Use a non-token-shaped placeholder for PAT values.
At Line 20, prefer a neutral placeholder (or omit the env block in favor of shell-provided env only) to avoid encouraging plaintext token storage and to reduce secret-scanner false positives.
Suggested tweak
- "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_replace_with_your_token"
+ "GITHUB_PERSONAL_ACCESS_TOKEN": "__SET_IN_SHELL_OR_LOCAL_SECRET_STORE__"📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_replace_with_your_token" | |
| "GITHUB_PERSONAL_ACCESS_TOKEN": "__SET_IN_SHELL_OR_LOCAL_SECRET_STORE__" |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@examples/github-mcp-proxy-demo/claude_code_config.example.json` at line 20,
Replace the token-shaped example value for the "GITHUB_PERSONAL_ACCESS_TOKEN"
key with a neutral placeholder or remove the key from the example; specifically
update the example JSON entry for "GITHUB_PERSONAL_ACCESS_TOKEN" to use a
non-token-looking string like "REPLACE_WITH_GITHUB_PAT" or omit the env entry
entirely so users are encouraged to supply the secret via their shell/CI rather
than storing a plaintext token in the example file.
…cker an alternative The original PR #103 framed Docker as a hard prerequisite. That contradicts Vaara's design intent: the proxy is light tooling that spawns any MCP-stdio binary as a subprocess and doesn't depend on external runtimes. Updates the README and example config so the primary recipe uses the github-mcp-server binary directly (go install github.com/github/github-mcp-server/cmd/github-mcp-server@latest). Docker is now an alternative paragraph and a sibling _alternative_docker block in the example JSON for readers who already run Docker. The binary path is what was actually verified end-to-end during smoke testing: real github-mcp-server stdio subprocess, 42 tools advertised on tools/list, full hash-chained audit trail (action_requested -> risk_scored -> decision_made -> outcome_recorded) recorded in the SQLite DB for a tools/call request.
…cker an alternative (#104) The original PR #103 framed Docker as a hard prerequisite. That contradicts Vaara's design intent: the proxy is light tooling that spawns any MCP-stdio binary as a subprocess and doesn't depend on external runtimes. Updates the README and example config so the primary recipe uses the github-mcp-server binary directly (go install github.com/github/github-mcp-server/cmd/github-mcp-server@latest). Docker is now an alternative paragraph and a sibling _alternative_docker block in the example JSON for readers who already run Docker. The binary path is what was actually verified end-to-end during smoke testing: real github-mcp-server stdio subprocess, 42 tools advertised on tools/list, full hash-chained audit trail (action_requested -> risk_scored -> decision_made -> outcome_recorded) recorded in the SQLite DB for a tools/call request. Co-authored-by: vaaraio <267591518+vaaraio@users.noreply.github.com>
Summary
Adds
examples/github-mcp-proxy-demo/with a README walkthrough and a Claude Code MCP config example showing how to insert Vaara's runtime governance proxy in front of GitHub's official MCP server (github/github-mcp-server, MIT-licensed, 29.9k stars).Sibling demo to
examples/sap-mcp-proxy-demo/. Same three-step recipe shape (pip install vaara, replace the existing MCP config entry with the Vaara proxy command in front of the same upstream, restart the MCP client). Demonstrates that the v0.21.0 proxy is MCP-protocol-level, not SAP-specific.Target reader: any developer running Claude Code, Cursor, VS Code Copilot, or Claude Desktop against GitHub. Reader brings their GitHub PAT, Docker, and existing MCP config. Demo brings the Vaara wiring.
GitHub-specific framing
The "Why this matters" section names the categories where runtime evidence has real load on GitHub specifically:
create_or_update_file,push_files,merge_pull_request. Audit chain separable from the human commit graph.update_repository, branch protection edits, Actions secret reads, workflow dispatches.AI Act Article 12 (logging) and Article 14 (human oversight) apply at the tool-call layer.
Files
examples/github-mcp-proxy-demo/README.md(171 lines)examples/github-mcp-proxy-demo/claude_code_config.example.json(28 lines)Docs-only. No code changes, no test changes.
Summary by CodeRabbit
Release Notes