Secure MCP server for quarantined web content extraction — two-layer defense against prompt injection
Project description
mcp-airlock-crunchtools
Secure MCP server for quarantined web content extraction with two-layer prompt injection defense.
Tools (6)
| Tool | Layers | Description |
|---|---|---|
safe_fetch |
L1 | Fetch URL, sanitize, return markdown. Fails on injection. |
safe_read |
L1 | Read local file, sanitize, return markdown. Fails on injection. |
quarantine_fetch |
L1+L2 | Fetch URL, sanitize, extract via Q-Agent. Warns on injection. |
quarantine_read |
L1+L2 | Read local file, sanitize, extract via Q-Agent. Warns on injection. |
quarantine_scan |
L1+L2 | Pre-flight scan: detect injection vectors WITHOUT returning content. |
quarantine_stats |
— | Session stats, config, and blocklist summary. |
Architecture
- Layer 1 (Deterministic): 7-stage sanitization pipeline strips hidden HTML, invisible unicode, encoded payloads, exfiltration URLs, and LLM delimiters.
- Layer 2 (Q-Agent): Quarantined Gemini Flash-Lite LLM for semantic content extraction — NO tools, NO memory, NO SDK.
Install
# PyPI
pip install mcp-airlock-crunchtools
# uvx (zero-install)
uvx mcp-airlock-crunchtools
# Container
podman run quay.io/crunchtools/mcp-airlock
Configuration
# Required for Layer 2 (Q-Agent)
export GEMINI_API_KEY=your-key
# Optional
export QUARANTINE_MODEL=gemini-2.0-flash-lite # default
export QUARANTINE_FALLBACK=layer1 # or "fail"
export QUARANTINE_MAX_CONTENT=100000 # max chars to Q-Agent
export QUARANTINE_DB=/data/airlock.db # SQLite blocklist path
export QUARANTINE_TRUST_CONFIG=~/.config/mcp-env/mcp-airlock-trust.json
Claude Code
{
"mcpServers": {
"mcp-airlock-crunchtools": {
"command": "uvx",
"args": ["mcp-airlock-crunchtools"]
}
}
}
License
AGPL-3.0-or-later
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_airlock_crunchtools-0.2.0.tar.gz.
File metadata
- Download URL: mcp_airlock_crunchtools-0.2.0.tar.gz
- Upload date:
- Size: 95.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31f09b87db638d67f2d6618c8cc15c0fc591743d2e512e0446b2ea4968c7f25b
|
|
| MD5 |
f6271853ceaf517400d0db695cbd1183
|
|
| BLAKE2b-256 |
53994895e36fbf43fd23dbfd15d09b6e62f62feca034375e3bdbfe6192af8799
|
Provenance
The following attestation bundles were made for mcp_airlock_crunchtools-0.2.0.tar.gz:
Publisher:
publish.yml on crunchtools/mcp-airlock
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_airlock_crunchtools-0.2.0.tar.gz -
Subject digest:
31f09b87db638d67f2d6618c8cc15c0fc591743d2e512e0446b2ea4968c7f25b - Sigstore transparency entry: 1108172757
- Sigstore integration time:
-
Permalink:
crunchtools/mcp-airlock@c4c537a75df096f6cf8eb10cc75d8ea8daa2ea93 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/crunchtools
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c4c537a75df096f6cf8eb10cc75d8ea8daa2ea93 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mcp_airlock_crunchtools-0.2.0-py3-none-any.whl.
File metadata
- Download URL: mcp_airlock_crunchtools-0.2.0-py3-none-any.whl
- Upload date:
- Size: 53.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb4d8667cbf5cc302715cca8c87dd97044d536cf5907f43d1bbf0f1870fdbe52
|
|
| MD5 |
b1fcda96a411236123f08e54fe685801
|
|
| BLAKE2b-256 |
458a371911ff45f3d49013f6a236489c372f7d9d85debf5b4516814bc1aa0860
|
Provenance
The following attestation bundles were made for mcp_airlock_crunchtools-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on crunchtools/mcp-airlock
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_airlock_crunchtools-0.2.0-py3-none-any.whl -
Subject digest:
fb4d8667cbf5cc302715cca8c87dd97044d536cf5907f43d1bbf0f1870fdbe52 - Sigstore transparency entry: 1108172763
- Sigstore integration time:
-
Permalink:
crunchtools/mcp-airlock@c4c537a75df096f6cf8eb10cc75d8ea8daa2ea93 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/crunchtools
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c4c537a75df096f6cf8eb10cc75d8ea8daa2ea93 -
Trigger Event:
release
-
Statement type: