Probe Server
Provides tools for auditing GitHub-hosted MCP servers by cloning repositories, running static and dynamic security analysis, and filing security issues on GitHub after human approval.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Probe Serveraudit https://github.com/example/mcp-server"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Vetting Agent
An AI security auditor for AI tools. An agent, running on TrueForge, that vets third-party MCP servers for security vulnerabilities before you connect them to your agent — then pauses and asks a human before filing a public security report.
TrueForge connects agents to any MCP server. Community servers are shared as gists, templates, and side projects — with hardcoded keys,
eval()on tool args, and no auth boundaries. Agents don't know to be suspicious. This agent is the suspicious one.
How it works
User: "audit https://github.com/someone/some-mcp-server"
└─ TrueForge agent (mcp-vetting)
├─ clone_target ── shallow-clones the GitHub URL onto the probe host
├─ read_target_manifest ── declared tools & permission boundaries
├─ subagent: static_audit ── AST rules + pattern matching (VULN-001..007)
├─ subagent: full_audit ── AI review + Docker probes (VULN-008..011)
├─ Synthesizes verdict (HIGH/MEDIUM/LOW, OWASP Agentic Top 10 mapped)
└─ ⏸ PAUSES before filing the GitHub security issue → human approves → filesProbes run in isolation: Dynamic probes execute the target server inside throwaway Docker containers.
Approval gate is native TrueForge HITL: issue creation is a write/destructive action, so the harness pauses for Allow/Deny.
Sessions survive reconnects: refresh mid-audit; the agent keeps working.
Related MCP server: GitHub PR Review MCP Server
What the agent does
The MCP Vetting Agent audits third-party MCP servers for security vulnerabilities before anyone connects them to an AI agent. It answers one question: "Is this server safe to trust?"
Given a GitHub URL, the agent clones the repository, reads its declared tools and permissions, then runs two parallel security scans — static analysis (pattern matching for known vulnerability classes) and dynamic analysis (executing the server in isolated Docker containers to observe real behaviour). Findings are mapped to the OWASP Agentic Top 10 and synthesised into a risk verdict: HIGH, MEDIUM, LOW, or CLEAN.
If the verdict is HIGH, the agent drafts a GitHub security issue with per-finding details and remediation hints, then pauses and waits for human approval before filing anything. Nothing irreversible happens without a person saying yes.
How it uses TrueForge
TrueForge is the agent harness — the runtime layer between the model and the tools it calls. Every part of the audit runs through TrueForge:
TrueForge feature | How we use it |
MCP tool connectivity | The probe server registers as an MCP connector. TrueForge calls |
Approval gate (HITL) |
|
Sandbox | Dynamic probes execute the target MCP server inside throwaway Docker containers. The sandbox is configured in TrueForge's agent manifest ( |
| Subagents | Static and dynamic audits run in parallel as delegated subagent tasks, keeping the main agent context clean. |
| Session persistence | The audit session survives browser refreshes and reconnects. If the connection drops mid-audit, the agent continues and the UI reattaches to the running session. |
| Model flexibility | Runs on a local Ollama model (qwen2.5:7b) — no API key required, no data leaves the machine. |
The harness is doing the real work: reaching tools, running code safely, and stopping for a person before anything irreversible.
Tech Stack
Layer | Technology |
Agent harness | TrueForge — open-source agent runtime |
Probe server | Python, FastMCP, Starlette, uvicorn |
Security scanning | Custom AST rules (VULN-001..007), Docker-sandboxed dynamic probes (VULN-008..011) |
Web console | React 18, TypeScript, Vite, Tailwind CSS 4, Zustand |
MCP protocol |
|
Sandbox | Docker — throwaway containers for isolated probe execution |
Deployment | Vercel (frontend), Render (probe server) |
Code review | Qodo — every PR reviewed before merge |
Model | Ollama ( |
Version control | GitHub, conventional commits |
Quick start
Deployed services:
Frontend (Vercel): https://ui-blond-six.vercel.app/
Probe server (Render): https://mcp-vetting-probe.onrender.com
# 1. Probe server (the security scanning engine)
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
uvicorn probe_server.server:mcp_app --host 127.0.0.1 --port 8000 # serves /mcp
# 2. TrueForge (separate terminal; needs Node 22+)
npx @truefoundry/trueforge@latest # UI at http://localhost:8790
# 3. In the TrueForge UI:
# Settings → Models : configure a provider (API key)
# Settings → Connectors : Add MCP Server → http://127.0.0.1:8000/mcp
# (+ GitHub connector from the catalog, OAuth)
# Settings → Sandbox : optional (skills/code mode); cloning runs on the probe host
# Create agent : import deploy/agent-manifest.json via API, or compose in UI
# 4. Chat: "audit ./fixtures/vulnerable_server"Try it against the bundled fixtures first:
Fixture | Expected |
| HIGH risk — |
| Clean report |
The console
There are two ways to drive the agent: the TrueForge chat above, or the web
console in ui/ — a static React SPA that speaks MCP straight to the probe
server, with no backend in between.
# terminal 1 — the probe server
uvicorn probe_server.server:mcp_app --host 127.0.0.1 --port 8000
# terminal 2 — the console
cd ui && npm install && npm run dev # http://localhost:5173The console presents the audit as a live graph with two lanes: reading the source
and running it sealed in a container keep separate visual languages and only
merge at synthesis, because a defect is fact only where both agree. It shows what the agent is doing, what it is waiting on, and
what it did — and asks before the irreversible step rather than after it. Filing goes through
file_github_issue on the probe server, which reads GITHUB_TOKEN from its own
environment; the browser never handles a credential.
If the security_scanner engine is not installed, start the probe server with
VETTING_DEV_FIXTURES=1 to replay a captured report. Replayed reports are
tagged sample_data: true and the console labels them everywhere they appear.
See ui/README.md for the architecture and ui/DESIGN_DIRECTION.md for the
locked visual direction.
Repository layout
probe_server/ MCP server exposing the scanning engine as agent tools
ui/ Web console (React + Vite + Tailwind + Zustand + MCP SDK)
fixtures/ Vulnerable + hardened reference MCP servers
deploy/ TrueForge agent manifest (agent spec via API)
docs/ PRD, architecture, week plan, setup guideQodo Code Review Evidence
Every substantive change in this repository went through a pull request reviewed by Qodo before merge — starting from the first day of the hackathon.
Representative reviewed PR: #1 — feat: probe server, fixtures, tests, TrueForge agent spec
What Qodo surfaced and what we did about it (full trail visible on the PR):
Round | Findings | Outcome |
Initial review | 2 High, 5 Medium | Fixed: added |
Re-review of fixes | 3 High, 1 Medium | Fixed: standard GitHub URLs without |
Third pass | 3 Medium | Fixed: malformed URLs return error dicts instead of raising; cancellation reaps the clone process tree; all cleanup moved off the event loop |
Final pass | 0 findings | Clean |
One finding was dismissed with a recorded reason: the clean fixture's zero-value integrity digest (comment on the PR) — it ships that way upstream, and the code path involved is never exercised by our tools, so we kept our fixtures identical to upstream rather than forking them.
The PR history shows each review, the commits addressing its findings, and follow-up reviews confirming resolution against the final code.
🎬 Demo
Watch the 3-minute walkthrough: MCP Vetter Agent Demo on YouTube
See the system in action:
Parallel security probes running in real-time
Real vulnerabilities detected with OWASP Agentic Top 10 mapping
Human approval gate demonstrated (3-second hold before irreversible action)
GitHub issues filed to real repositories
Try it yourself:
Live Console: https://ui-blond-six.vercel.app/
Probe Server Health: https://mcp-vetting-probe.onrender.com/health
Test Fixture Repo: https://github.com/hemv-857/mcp-vetter-fixture-target
Enter the fixture repo URL in the live console to see a real security audit in action.
AI tooling disclosure
This project was built with the assistance of AI coding assistants (Claude Code, Cursor). All AI-generated code was reviewed, tested, and understood by the contributors before merging.
Credits
Built for The Agent Harness Hackathon (WeMakeDevs × TrueFoundry, Aug 2026). See fixtures/LICENSE for bundled reference-code licensing.
This server cannot be deployed
Maintenance
Related MCP Connectors
Scan any public GitHub MCP-server repo for security issues. 37 MCP-specific L1 rules, 8 languages.
Scan any MCP server for tool-poisoning, security, auth & license. Trust score before install.
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Scans remote MCP servers for protocol, security, and TLS issues; exposes scan tools via MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAutomatically installs and containerizes MCP servers from GitHub repositories using MCP sampling to analyze repositories and create appropriate Docker images.2MIT
- AlicenseNot gradedqualityFmaintenanceComprehensive MCP server for analyzing GitHub pull requests, detecting security vulnerabilities, assessing code quality, and providing risk ratings across multiple languages.2 npmMIT
- AlicenseAqualityCmaintenanceSecurity scanning for MCP servers from the inside out. Provides runtime inspection, AST-based static analysis, config audit, dependency analysis, and OWASP MCP Top 10 compliance in a single MCP server.55142 npm6MIT
- AlicenseAqualityAmaintenanceSecurity scanner for MCP servers that detects tool poisoning, shadowing, and other risks via static rules and semantic analysis. Exposes the scan_mcp_server tool for scanning MCP servers over stdio.11MIT