A minimal, intentionally vulnerable MCP server to demonstrate SAFE‑T1001 (Tool Poisoning Attack). Use it during the hackathon to: identify the vulnerability, map it to SAFE‑T1001, and propose mitigations.
- Prereqs: Docker installed; internet allowed for image pull.
- Pull (GHCR example):
docker pull ghcr.io/bishnubista/safe-mcp-sandbox:v0.1.0
- Run (unsafe mode, default):
- macOS/Linux:
docker run --rm -i --read-only --pids-limit 128 --memory 256m --security-opt no-new-privileges --network none -v "$(pwd)/flags:/opt/flags:ro" ghcr.io/bishnubista/safe-mcp-sandbox:v0.1.0
- Windows PowerShell:
docker run --rm -i --read-only --pids-limit 128 --memory 256m --security-opt no-new-privileges --network none -v "${PWD}/flags:/opt/flags:ro" ghcr.io/bishnubista/safe-mcp-sandbox:v0.1.0
- macOS/Linux:
- Run (safe mode demo):
- Add
-e MODE=safe
before the image name, or use./scripts/run-safe.sh
/scripts\run-safe.cmd
. - Tip: Override scripts with a pinned tag:
IMAGE=ghcr.io/bishnubista/safe-mcp-sandbox:v0.1.0 ./scripts/run-unsafe.sh
- Add
- Connect with an MCP client (Claude Desktop recommended). See
docs/CLIENTS.md
.
- Recon tool metadata, trigger the poisoned behavior, capture evidence of model coercion/exfiltration, map to SAFE‑T1001, and propose a mitigation. See
docs/HACKATHON.md
for the exact tasks and scoring.
server/
: Node.js (TypeScript) MCP server (unsafe/safe modes)docker/
: Dockerfileflags/
: Sampleflag.txt
mounted read‑only at runtimedocs/
: Event docs and materials (HACKATHON.md
,CLIENTS.md
,MITIGATIONS.md
,SCORING.md
,ROADMAP.md
)scripts/
: Convenience run scripts for macOS/Linux and Windows
- Container runs without network, read‑only, as non‑root in final image.
- Bind‑mount only
flags/
read‑only; do not mount sensitive host paths. - Issues and improvements welcome via PRs (see
docs/ROADMAP.md
).
- CI builds and pushes images to GHCR on tags (
v*
) and onmain
(edge). - Image:
ghcr.io/bishnubista/safe-mcp-sandbox
with tags likev0.1.0
,v0.1
,v0
,latest
, andedge
. - Tag and push to release:
git tag v0.1.0 && git push origin v0.1.0
- See
docs/ROADMAP.md
for future tagging by scenario.