ShieldMCP

mcp
Guvenlik Denetimi
Gecti
Health Gecti
  • License — License: Apache-2.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 10 GitHub stars
Code Gecti
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Transparent MCP security proxy: tool metadata integrity, call validation, and response analysis. Apache-2.0.

README.md

🛡️ ShieldMCP

Inspect the tools. Guard the calls. Validate the responses.

Open-source runtime security at the Model Context Protocol boundary.

License: Apache 2.0 Python 3.11+ Release Regression tests: 119 passing

ACL 2026 Industry Track: Published EMNLP 2026 System Demonstrations: Accepted

ACL conference: ICORE2026 A* EMNLP conference: ICORE2026 A*

Quick start · Features · Papers · Models · Red-team guide · Citation

ShieldMCP sits between an agent and its MCP server, checking tool metadata, outbound arguments, and inbound responses through one inspectable pipeline. Deploy it as a transparent stdio or legacy SSE proxy, or integrate its asynchronous Python API.

Apache-2.0 licensed code and released model artifacts, including commercial use and integration under the same license. The default detector runs locally without model downloads or API keys.

Research papers

Venue Paper Resources
ACL 2026 · Industry Track
Published · A* conference
Securing the Tool Layer: A Threat Taxonomy and Runtime Defense Framework for Model Context Protocol Deployments Anthology · PDF · DOI
EMNLP 2026 · System Demonstrations
Accepted and scheduled · A* conference
ShieldMCP: An Interactive System for Runtime Security of Model Context Protocol Tool Calls Camera-ready paper · Official program

A* refers to the conference venues' ICORE2026 rankings: ACL, EMNLP. The EMNLP paper appears as 69-DEMO in the official presentation schedule; its Anthology link will be added when available.

Talks

Event Talk Slides
Agentics Day: MCP + Agents (CNCF-hosted, KubeCon NA 2026) · Nov 9, 2026 Securing the Agentic Tool Layer: A Runtime Defense Framework for MCP Agent Deployments PDF · Folder

Features

Capability What ShieldMCP provides Availability
🧬 Tool integrity Description/schema inspection and stored hashes to detect poisoned metadata and tool-definition changes Stage 1
🔎 Argument validation Schema-aware checks for SQL/shell/prompt patterns and path traversal before forwarding a call Stage 2
🛡️ Response protection Instruction detection, hidden-content checks, context boundaries, and session correlation Stage 3
🧠 Local learned detectors Released fine-tuned DistilBERT description and token classifiers; no hosted inference service required Optional models
⚡ Tiered detection Heuristics first, with selected ambiguous inputs escalated to local classifiers Optional tiered backend
🔌 Proxy or Python API Newline/Content-Length stdio framing, legacy SSE, and an async pipeline Core API
🧪 Inspect and reproduce Browser playground, actual subprocess proxy demo, versioned results, and synthetic attack/benign scenarios Included evaluation
🧭 Governance and caching Failure policies, task scope, schema pinning, and validated cache APIs Experimental APIs

The distinctive design combines metadata integrity, call validation, and response analysis at the MCP boundary, with local detection and reproducible inspection. This is an alpha research framework; test the configured controls against your own agents, tools, and workloads. Experimental governance/cache APIs require explicit integration and are not enabled by the default CLI proxy.

Quick start

git clone https://github.com/saurabh-yergattikar/ShieldMCP.git
cd ShieldMCP
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

# Interactive pipeline demo: http://127.0.0.1:8000
shieldmcp demo

The default heuristic backend needs no model downloads or API keys. The browser demo computes pipeline verdicts live against curated scenarios and user inputs; it is not a live agent benchmark. For subprocess traffic through the actual stdio proxy:

python examples/live_proxy_demo.py

For an independent review, start with the red-team guide, model setup and limitations, and the framework evaluation.

Architecture

Agent --tools/list--> [Stage 1: metadata integrity] --> MCP server
Agent --tools/call--> [Stage 2: argument checks]    --> MCP server
Agent <--response--- [Stage 3: response analysis]  <-- MCP server
Stage Checks Threats addressed
1: Description integrity Tool descriptions, schemas, structural patterns, stored hashes Tool poisoning, metadata changes / rug pulls, suspicious supply-chain content
2: Parameter sanitization Schema constraints, SQL/shell/prompt patterns, path traversal Malicious outbound arguments
3: Response analysis Instructional spans, hidden content, context boundaries, session correlation Indirect prompt injection and suspicious cross-tool chains

Detection is heuristic or model-based, with false positives and false negatives. Stage 3 runs after a tool executes: it can withhold a response, but cannot undo a side effect. Parameter checks do not replace application authorization or a general execution sandbox.

Proxy and configuration

shieldmcp init
shieldmcp scan examples/tools.json
shieldmcp proxy --server-id my-server -- python your_mcp_server.py
shieldmcp registry

# Legacy HTTP/SSE transport
shieldmcp sse-proxy --backend-url http://127.0.0.1:3000

The stdio proxy accepts newline-delimited JSON-RPC and Content-Length framing. Legacy SSE support is separate; Streamable HTTP is not implemented. See default configuration.

stage1:
  semantic_backend: heuristic  # heuristic | llm_judge | classifier | tiered
  semantic_threshold: 0.72
  tiered_band_low: 0.12
stage3:
  instruction_detection_backend: heuristic  # heuristic | classifier | tiered
  tiered_min_words: 20

classifier uses local fine-tuned DistilBERT detectors. tiered routes selected ambiguous inputs through those classifiers after inexpensive heuristic checks. Download the trained artifacts or train locally using model setup. The stage wrappers log a heuristic fallback if models/dependencies cannot load; confirm the models are loaded before treating a run as classifier evaluation. The llm_judge Stage 1 backend requires external model access.

Python API

import asyncio
from shieldmcp.core.config import ShieldMCPConfig
from shieldmcp.core.pipeline import ShieldPipeline

async def main():
    pipeline = ShieldPipeline(ShieldMCPConfig())
    await pipeline.initialize()
    try:
        action, tools, alerts = await pipeline.validate_tools("docs", [{
            "name": "read_page",
            "description": "Return the text of a document.",
            "inputSchema": {"type": "object", "properties": {
                "id": {"type": "string"}}, "required": ["id"]},
        }])
        action, alerts = await pipeline.process_tool_call(
            "docs", "read_page", {"id": "guide"}, session_id="review")
        action, content, alerts = await pipeline.process_tool_response(
            "docs", "read_page", "Document contents", session_id="review")
    finally:
        await pipeline.shutdown()

asyncio.run(main())

Integrators must honor returned actions before executing a call or giving content to an agent. The command-line proxy does this automatically.

Experimental governance APIs

PolicyEnforcedPipeline adds explicit failure policies, task-scoped tool exposure, and schema pinning. GovernedResponseCache implements validated response caching with an eligibility predicate. These are opt-in Python APIs with synthetic benchmarks; they are not wired into the default CLI proxy. Integrators must provide the policy-aware wrapper and cache lifecycle themselves.

Evaluation and development

pip install -e '.[all]'
pytest -q

# Framework detection evaluation: 487 attack + 200 benign scenarios
python eval/run_evaluation.py --framework-only --output-dir /tmp/shieldmcp-heuristic-review

# Requires trained artifacts; use separate output directories
python eval/run_evaluation.py --framework-only --backend classifier --output-dir /tmp/shieldmcp-classifier-review
python eval/run_evaluation.py --framework-only --backend tiered --output-dir /tmp/shieldmcp-tiered-review

python eval/benchmarks/latency_benchmark.py --iterations 1000

The framework harness measures detection on fixed synthetic scenarios. Its historical default result (8.6% attacks not detected; 95% benign pass) is not a live-agent exploit rate. Classifier validation and benchmark results are within-distribution; independent paraphrased, multilingual, encoded, long-context, and adaptive attacks remain important. Raw evaluation outputs and training scripts are included for inspection.

workshop/agent_console.py uses a local Ollama model with simulated page/email tools; blocked content is replaced with a known clean demo page. examples/trust_issues_ui.py animates a scripted conversation with a real Stage 3 verdict. Neither sends email. Use examples/live_proxy_demo.py for actual subprocess proxy traffic.

The system demonstration paper describes the research context. HANDOFF.md records implementation status and verification boundaries.

Citation

If ShieldMCP supports your work, please cite the published ACL paper. The EMNLP System Demonstrations paper is linked above; an official proceedings citation will be added with its Anthology entry.

@inproceedings{yergattikar-2026-securing,
  title = "Securing the Tool Layer: A Threat Taxonomy and Runtime Defense Framework for Model Context Protocol Deployments",
  author = "Yergattikar, Saurabh",
  booktitle = "Proceedings of the 64th Annual Meeting of the Association for Computational Linguistics (Volume 6: Industry Track)",
  year = "2026",
  pages = "865--871",
  publisher = "Association for Computational Linguistics",
  doi = "10.18653/v1/2026.acl-industry.58",
  url = "https://aclanthology.org/2026.acl-industry.58/"
}

License

Apache-2.0 covers ShieldMCP code and released classifier artifacts for research and commercial integration. No separate ShieldMCP license fee is required; retain the applicable license and attribution notices. The fine-tuned classifiers derive from the Apache-2.0 DistilBERT base model; see model provenance.

Yorumlar (0)

Sonuc bulunamadi