Dmint MCP Proxy
Provides a proxy integration for a downstream SQLite MCP server, allowing policy enforcement on SQLite database operations such as read and delete queries before calls reach the server.
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., "@Dmint MCP Proxywrap my sqlite MCP server, expose read_query, block delete_query"
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.
dmint-mcp
Deterministic Security Enforcement Gateway for Model Context Protocol (MCP)
dmint-mcp is an out-of-process enforcement gateway that connects AI agents to one or more Model Context Protocol (MCP) servers under deterministic, cryptographic policy control powered by Dmint Core V1.
Architecture
┌──────────────────────────────────────┐
│ AI Agent / MCP Client │
└──────────────────┬───────────────────┘
│ Transport: STDIO or Streamable HTTP (SSE)
│ Auth: Optional Bearer token with identity binding
▼
┌──────────────────────────────────────┐
│ Dmint MCP Gateway │
│ │
│ - Request mapping & anti-spoofing │
│ - Multi-server tool routing │
│ - Request size bounds & CORS │
│ - Sanitized error boundary │
└──────────────────┬───────────────────┘
│
▼
┌──────────────────────────────────────┐
│ Dmint Core V1 │
│ (Frozen Security Engine) │
│ │
│ - Deterministic policy evaluation │
│ - ALLOW / DENY / APPROVAL_REQUIRED │
│ - RFC 8785 request fingerprinting │
│ - Ed25519 approval assertions │
│ - Single-use atomic consumption │
└──────────────────┬───────────────────┘
│ Forwarding only on ALLOW / Consumed Approval
├────────────────────────────┐
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ Downstream Server 1 │ │ Downstream Server 2 │
│ (STDIO) │ │ (Streamable HTTP) │
└─────────────────────┘ └─────────────────────┘dmint-mcp serves strictly as the integration and protocol bridge. All authorization decisions, approval verification, and credential consumption semantics are owned authoritatively by Dmint Core.
Related MCP server: protect-mcp
Key Features
Multi-Server Gateway: Aggregates and routes tool calls across multiple downstream MCP servers with collision avoidance.
Bi-Directional Transports: Supports STDIO and Streamable HTTP (SSE) for both upstream agent connections and downstream server connections.
Zero Downstream Execution on Block: Unapproved (
APPROVAL_REQUIRED) or forbidden (DENY) tool calls never reach downstream server processes.Double-Gate Approval Retry: Retrying an approval requires an Ed25519-signed assertion that is revalidated against current policy and atomically consumed in SQLite storage before downstream tool execution.
Strict Identity Binding & Anti-Spoofing: Binds transport authentication directly to the calling agent identity; client cannot forge or override
agent_id.SSRF Protection: Protects remote downstream HTTP endpoints against SSRF, blocking private IP ranges, link-local addresses, and cloud provider metadata services.
Downstream Timeout Controls: Hard bounded timeouts for connect, list, and call operations.
Sanitized Errors: Error disclosure modes (
DOG,CAT,GOD) ensure internal paths, credentials, and stack traces never leak to untrusted agents.CLI Artifact Compatibility: Natively loads the canonical
mcp_protection.jsongenerated bydmint-cli.
Security Model
Every incoming tool call passes through pre-execution authorization before any downstream action is permitted:
ALLOW: The request complies with authoritative policy. The gateway forwards the call downstream and returns the tool result.DENY: The request violates policy. The gateway immediately terminates the request and returns an error. Zero downstream tool execution occurs.APPROVAL_REQUIRED: The capability requires elevated authorization. The exact request is fingerprinted and persisted as a pending approval record. The gateway challenges the caller with a structured approval error. Zero downstream tool execution occurs.Approval Retry: An administrative authority signs an approval assertion over the exact request fingerprint. When the agent retries the call presenting the credential:
The gateway verifies the Ed25519 signature and audience.
The current policy is re-evaluated to ensure it has not changed to
DENY.The approval record is atomically consumed (
APPROVED -> CONSUMED) in SQLite storage to prevent replay attacks.Only upon successful atomic consumption does the tool execute downstream.
Transports
dmint-mcp supports two independent transport dimensions:
Upstream (Agent-Facing)
STDIO (
stdio, default): Communicates directly over standard input and standard output. This is the zero-overhead default suited for local AI runtime processes.Streamable HTTP (
http): Runs an ASGI HTTP server with Server-Sent Events (SSE) via Starlette and Uvicorn. Enables remote agents and multi-tenant systems to communicate over HTTP.
Downstream (Server-Facing)
STDIO (
stdio): Launches and supervises downstream MCP server subprocesses.Streamable HTTP (
streamable_http): Connects to remote downstream MCP servers over HTTPS with strict SSRF validation and redirect prevention.
Authentication
When running the agent-facing transport over HTTP:
Bearer Token Auth: Clients authenticate by sending an
Authorization: Bearer <token>header.Constant-Time Verification: Tokens are verified using
hmac.compare_digestto prevent timing attacks.Multi-Agent Identity Mapping: The gateway supports binding specific tokens to distinct agent identities (e.g.
token1=agent_coder,token2=agent_reviewer).Safe Binding Enforced: Attempting to bind the HTTP server to a public interface (
0.0.0.0or routable IP) without authentication configured fails closed at startup.Wildcard CORS Defense: Wildcard CORS (
*) is prohibited when authentication is enabled.
Configuration (mcp_protection.json)
The gateway configuration specifies policy provenance, approval storage, and downstream integrations:
{
"$schema": "https://dmint.app/schemas/mcp_protection_v1.json",
"version": "1.0",
"server_name": "dmint-secure-gateway",
"agent_id": "worker-agent",
"policy": {
"rules": [
{
"effect": "allow",
"tool": "calc",
"action": "add",
"resource": "*"
},
{
"effect": "approval_required",
"tool": "db",
"action": "wipe",
"resource": "*"
}
]
},
"approval_store": {
"path": "./approvals.db",
"ttl_seconds": 300
},
"disclosure_mode": "DOG",
"integrations": [
{
"id": "calculator",
"transport": "stdio",
"command": "python3",
"args": ["-m", "calculator_mcp"],
"tools": {
"add": {
"capability": "calc.add",
"discovery": "exposed"
}
}
},
{
"id": "database",
"transport": "streamable_http",
"url": "https://mcp.internal.infra/mcp",
"connect_timeout": 10.0,
"call_timeout": 30.0,
"tools": {
"wipe_data": {
"capability": "db.wipe",
"discovery": "exposed"
}
}
}
]
}Command Line Interface (CLI)
Install dmint-mcp:
pip install dmint-mcpRun over Local STDIO (Default)
dmint-mcp run --config mcp_protection.jsonOr using the short flag:
dmint-mcp -c mcp_protection.jsonOr via Python module invocation:
python -m dmint_mcp -c mcp_protection.jsonRun over Remote HTTP
dmint-mcp run \
--config mcp_protection.json \
--transport http \
--host 127.0.0.1 \
--port 8000 \
--auth-token "secret_token_123"Environment variables can also configure execution:
DMINT_CONFIG_PATH: Path to configuration file.DMINT_TRANSPORT:stdioorhttp.DMINT_HOST: Interface to bind (default:127.0.0.1).DMINT_PORT: Port to bind (default:8000).DMINT_AUTH_TOKEN: Bearer token or token mapping string.DMINT_LOG_LEVEL: Logging verbosity (info,debug, etc.).
Python API Quickstart
Developers can also instantiate and embed the gateway programmatically:
import asyncio
from pathlib import Path
from dmint_mcp import MCPGateway, load_protection_config
async def run_gateway():
# 1. Load validated configuration
config = load_protection_config(Path("mcp_protection.json"))
# 2. Instantiate gateway
gateway = MCPGateway(config)
# 3. Serve over STDIO or HTTP
await gateway.serve_stdio()
if __name__ == "__main__":
asyncio.run(run_gateway())Testing
Run the full test suite with pytest:
pytest -vLicense
Licensed under the Apache License, Version 2.0.
This server cannot be deployed
Maintenance
Related MCP Connectors
Security & DLP proxy for MCP: tool-poisoning scans, PII redaction on tool args/results. Beta.
- gatewayOAuthai.sealgate
MCP gateway with runtime security policy, tool-call-level control, and audit of agent actions.
Zero-secret MCP gateway for AI agents: risk-scored, audited calls with human-in-the-loop approval.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Related MCP Servers
- AlicenseBqualityCmaintenanceSecurity gateway that wraps any MCP server with per-tool policies, approval gates, and optional Ed25519-signed decision receipts. Shadow mode logs every tool call without blocking; enforce mode applies block, rate-limit, and minimum-tier rules. Receipts are independently verifiable offline with no accounts needed.5785 npm10MIT
- AlicenseNot gradedqualityAmaintenanceSecurity gateway for MCP servers. Wraps any MCP server with per-tool policies (Cedar + JSON), Ed25519-signed decision receipts, human approval gates, and trust tiers. Shadow mode by default — logs everything, blocks nothing.785 npm9MIT
- AlicenseNot gradedqualityAmaintenanceSecurity gateway for MCP tool calls. Sits between your LLM client and MCP servers, enforcing per-tool policies (allow/block/approve/read-only), logging every call, and pausing dangerous operations for human approval in terminal or Slack.1 npm1MIT
- AlicenseNot gradedqualityBmaintenanceSelf-hosted MCP gateway that applies deterministic, compiled policy to tool discovery, invocation, and outbound data flow, with no model in the enforcement path. Every decision emits a hash-chained receipt sealed with Ed25519 and verifiable using public keys only.Apache 2.0