Claude Desktop Proxy
Govern Claude Desktop MCP servers with zero code changes — install thoth via curl and wrap your claude_desktop_config.json in one command.
thoth is a cross-platform Rust binary that runs as a stdio sidecar between Claude Desktop and any
MCP server. Every tools/call passes through the Thoth enforcer before reaching the upstream server —
enforcing HIPAA/SOC2 policy, requiring human approval for sensitive operations, and emitting tamper-evident
audit evidence.
This page is optimized for single-machine setup and validation. For managed fleet rollout, use Claude Desktop Fleet Configuration with your MDM-specific onboarding: Jamf Onboarding Overview or Intune Onboarding Overview.
The proxy intercepts at the transport layer. Your MCP server, Claude Desktop, and LLM prompt are all unmodified. Governance is transparent to end users.
How it works
The proxy speaks MCP on both sides — it forwards initialize and tools/list transparently, and
intercepts every tools/call for policy evaluation before proxying the result back to Claude Desktop.
Endpoint routing contract
| Purpose | URL pattern |
|---|---|
| Control-plane API host | https://<tenant>.<apex-domain> |
| Endpoint proxy policy checks | Derived as https://enforce.<tenant>.<apex-domain> |
| Endpoint registration + check-ins | Derived automatically as https://grid.<tenant>.<apex-domain> |
For endpoint proxy traffic, enforcer_url and govapi_url are derived from
THOTH_TENANT_ID + THOTH_APEX_DOMAIN; users do not need to set separate URL overrides.
Installation
Install thoth
Choose one installation method, then run verification.
Method A (recommended): automated installer (macOS/Linux)
Method B: manual binary install (GitHub Releases)
Use the platform-matching asset from the same release:
thoth-macos-universal,thoth-linux-x86_64,thoth-linux-arm64, orthoth-windows-x86_64.exe. On Windows, downloadthoth-windows-x86_64.exeand place it on yourPATH.
The proxy is distributed as a native binary (not a pip package).
Verify installation
First run also bootstraps a local profile at ~/.thoth (Linux/macOS/Windows):
~/.thoth/intent_map.json~/.thoth/proxy_api_key.json
The proxy tightens ~/.thoth/proxy_api_key.json file permissions to 0600 where supported.
Set endpoint identity and tenant defaults
Set these identity values per endpoint/user session:
Endpoint identity is auto-resolved by proxy in this order:
- Managed device ID override (
THOTH_INTUNE_DEVICE_ID/INTUNE_DEVICE_ID/THOTH_JAMF_COMPUTER_ID/JAMF_COMPUTER_ID) - OS machine identity
- Hostname fallback (
HOSTNAME/hostname)
Optional:
When THOTH_TENANT_ID is set, the proxy derives fleet registration URL automatically:
https://grid.<tenant>.<apex-domain>/v1/endpoints/register
Get a Thoth API key
Use a key provisioned by your security team, or create one through the control-plane API
(POST /:tenant-id/thoth/api-keys).
Recommended: store key material with the built-in helper:
Wrap your Claude Desktop config
thoth wrap-config transforms your existing claude_desktop_config.json — adding the proxy in front
of each MCP server without removing any of your current configuration.
wrap-config is idempotent — running it twice on an already-governed config is safe. Already-wrapped
servers are only updated when selected values change (for example --env, intent, or enforcement mode).
Restart Claude Desktop
Quit and reopen Claude Desktop. The proxy starts automatically — no user action required.
Verify governance
Expected output:
Servers showing ✓ are governed. Any server without a checkmark is running without Thoth policy.
Manual configuration
If you prefer editing claude_desktop_config.json directly, wrap a server by setting command to
thoth and prepending run args:
Everything after -- is passed unchanged to the upstream MCP server.
Session intent (HIPAA minimum-necessary)
For healthcare or regulated workflows, declare a session intent to enforce minimum-necessary access. The enforcer checks every tool call against the allowed tools for that intent before any score-based decisions run.
intent_map.json maps each server name to its intent:
Session intent creates a machine-readable audit record of why each tool was called — satisfying the minimum-necessary documentation requirement for PHI access.
Enforcement modes
Use progressive for most deployments — it builds a behavioral baseline before escalating to step-up
or block. Use block for servers that access PHI or financial data where you want explicit approval
on every out-of-scope call.
Environment variables
| Variable | Required | Description |
|---|---|---|
THOTH_TENANT_ID | Yes | Tenant identifier used for governance scope and derived endpoint URLs |
THOTH_USER_ID | Yes | Per-user identifier for audit trail. Must be a valid email address |
THOTH_FLEET_ID | Optional | Fleet association used for endpoint registration/check-ins |
THOTH_INTUNE_DEVICE_ID / INTUNE_DEVICE_ID | Optional | Managed-device override for endpoint identity (preferred over hostname) |
THOTH_JAMF_COMPUTER_ID / JAMF_COMPUTER_ID | Optional | Jamf managed-device override for endpoint identity |
THOTH_API_KEY_FILE | Recommended | Path to API key JSON file (~/.thoth/proxy_api_key.json auto-default) |
THOTH_API_KEY | Optional fallback | Direct API key env value (use file-backed secret where possible) |
THOTH_APEX_DOMAIN | Optional | Apex domain used in derived URLs (default: atensecurity.com) |
THOTH_ENV | Optional | Endpoint environment (prod default) |
THOTH_ENDPOINT_CHECKIN_INTERVAL_SEC | Optional | Endpoint heartbeat interval in seconds (default: 60) |
THOTH_ENFORCER_URL / --enforcer-url are deprecated for proxy runtime and ignored in current releases.
Customer email-domain controls are enforced centrally in Thoth backend tenant policy (admin-managed metadata), not by endpoint-local environment variables.
If a key is valid but endpoint/fleet context does not match exactly, enforcer now allows the request and emits warning logs for investigation. Keep endpoint identity mapping clean in MDM to avoid noisy authorization warnings.
Keep MDM operational details in one place: Jamf Onboarding Overview and Intune Onboarding Overview. Use Claude Desktop Fleet Configuration for governed config lifecycle, provider sync, and direct manual endpoint enrollment flows.