zero-trust-mcp
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., "@zero-trust-mcpencrypt the output of the get-user tool"
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.
Zero-Trust Model Context Protocol (MCP) Integration Server
A lightweight, local-first Model Context Protocol (MCP) server built in Python that enforces zero-trust data privacy for AI agents.
By intercepting tool calls prior to cloud transmission, this server encrypts payloads locally using AES-256-GCM and persists them to a local SQLite database. Sensitive contextual data stays encrypted at rest, gated behind an access token, and every access attempt is actively logged.
š Key Features
Model Context Protocol (MCP) Native: Exposes secure tools over standard I/O (
stdio) via FastMCP.Zero-Trust Encryption: AES-256-GCM with random 96-bit nonces for authenticated local encryption.
Password-Derived Keys: The encryption key is derived from a master password via
scrypt, using a salt persisted in the database ā ensuring the vault survives server restarts.Access Control: Every tool call (
secure_store,secure_retrieve,audit_recent) requires a valid HMAC access token, verified in constant time to resist timing attacks.Audit Logging: Every store/retrieve attempt ā successful or not ā is written to an append-only
audit_logtable to ensure complete observability.Live Security Dashboard: Includes a lightweight FastAPI web interface to visually monitor the SQLite audit trail in real-time.
AI Client Simulator: An async Python client (
ai_client.py) demonstrating programmatic tool-calling over the MCP standard, including rejected-token handling.
Related MCP server: llm-localfirst
š Repository Structure
āāā crypto_engine.py # AES-256-GCM + scrypt key derivation
āāā access_control.py # Constant-time access token verification
āāā audit_log.py # Append-only audit trail logic
āāā mcp_server.py # FastMCP protocol server & SQLite DB logic
āāā ai_client.py # Async AI Agent simulator acting as an MCP client
āāā dashboard.py # FastAPI web UI for visualizing security logs
āāā test_mcp.py # Unit tests for crypto, access control, and audit logs
āāā .env.example # Template for required environment variables
āāā .gitignore # Git ignore rules
āāā requirements.txt # Core dependenciesš§ Threat Model
What this protects against:
Data at Rest Theft: Secrets sitting in vault.db are unreadable if the file alone is stolen (they're AES-256-GCM ciphertext, keyed off a password never written to disk).
Tampered Ciphertext: GCM is authenticated ā tampering causes decryption to fail loudly rather than silently returning garbage.
Unauthorized Tool Calls: No access token, no data.
What this does not protect against:
A compromised local environment that already holds the master password and access token in memory.
Multi-tenant isolation ā right now there is one shared secret vault, not per-agent scoped secrets.
Network-level threats ā this is a local stdio server, not exposed over a network by default.
š ļø Setup & Usage
Install Dependencies
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txtConfigure Environment Create a .env file in the root directory and add your passwords (the scripts will auto-load this using python-dotenv):
ZTMCP_MASTER_PASSWORD=your_secure_password
ZTMCP_ACCESS_TOKEN=your_secure_tokenRun the AI Client Simulator Watch the automated client connect to the MCP server, authenticate, and securely process data.
python ai_client.pyView the Audit Dashboard Launch the FastAPI server to view real-time access logs.
uvicorn dashboard:app --reload --port 8000
# Open http://127.0.0.1:8000 in your browserRun the Test Suite
python -m unittest test_mcp.py -vš Roadmap
Per-Agent Identity: Transition from one shared token to agent-specific tokens to log which agent accessed what.
Secret Expiry / TTL: Allow secure_store to take an optional expires_at timestamp.
Rate Limiting: Throttle brute-force loops against secure_retrieve.
Key Rotation: Build a rotate_key tool that re-encrypts all secrets under a new password/salt.
OS Keyring Integration: Swap SQLite salt storage for OS keyring integration (e.g. via the keyring package).
This server cannot be deployed
Maintenance
Related MCP Connectors
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP-native Trust Infrastructure for AI Agents. Persistent encrypted memory with Trust Quotient.
Hosted MCP server for AI agent identity, permissions, verification, and reusable proof.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA local-first MCP memory server providing persistent, searchable memory for AI agents, powered by SQLite.1 npm1Apache 2.0
- AlicenseNot gradedqualityBmaintenanceA local-first LLM routing MCP server that keeps sensitive data on your own models, with fail-closed privacy and manager-worker delegation, exposing route and complete tools to any MCP client.MIT
- AlicenseNot gradedqualityAmaintenanceLocal-first MCP server that lets AI agents query their own LLM call history as a branchable DAG and offload conversation context into immutable, AES-256-GCM-encrypted capsules ā restorable in full or per segment, crypto-shreddable, with RAID-style replication. 12 tools, no API keys, no cloud.62 npm3MIT
- AlicenseNot gradedqualityAmaintenanceLocal-first MCP server providing a shared, AES-256-GCM encrypted SQLite ledger of structured user state (stack, projects, preferences) that any MCP-aware tool can read/write, with user-held keys and optional zero-knowledge sync.1Apache 2.0