ThornGuard offers two setup paths:Documentation Index
Fetch the complete documentation index at: https://qwady.wiki/llms.txt
Use this file to discover all available pages before exploring further.
- Quick setup — mint one activation, then paste a JSON config into your MCP client. No CLI install required.
- CLI setup — install
@thornguard/clifor secure secret storage, profile management, and multi-client config generation. Recommended for production use.
Prerequisites
- Your ThornGuard license key (starts with
THORN-). - The upstream MCP URL you want ThornGuard to protect.
- If the upstream server needs its own auth, an upstream bearer token.
- A supported MCP client or service entry point. The ThornGuard CLI can generate launcher config for Claude Desktop, VS Code, Cursor, Zed, Windsurf, Cline, and Continue. The manual direct-HTTP path works in clients that can send a remote MCP URL plus custom headers.
Quick Setup (No CLI Required)
The fastest way to start is pointing your MCP client directly at ThornGuard with custom headers.1. Create an Activation for This Client
Manual setups need one activation per browser, editor, CLI install, or device. Create it first with your primary ThornGuard license key:activation_idactivation_proof
2. Add the Protected Config
Local Bridge Pattern (Claude Desktop Shape)
Use this when your client launches a local command instead of talking directly to a remote HTTP MCP server. The example below uses Claude Desktop’smcpServers envelope; the inner npx mcp-remote ... command is the part that
matters.
Add this to your MCP client config (e.g., claude_desktop_config.json):
If you want the exact launcher shape for Claude Desktop, VS Code, Cursor, or
Zed, prefer
thornguard print-config --client <client> .... The CLI writes
the correct top-level config structure for each supported client.Direct HTTP Pattern (Header-Capable Clients)
If your client supports direct remote MCP connections with custom headers (for example, a header-capable VS Code MCP surface), you can skipmcp-remote:
All secrets are in the
env block, not visible in the args array. For the
manual path, that includes the activation proof as well as the license key.
The surrounding JSON envelope differs by client, so verify the outer config
shape against your client’s own MCP docs if you are not using the CLI.CLI Setup (Recommended for Production)
The ThornGuard CLI stores secrets in your platform’s native keyring and generates client-specific config without embedding raw tokens.Install
Fastest Path: thornguard onboard
The interactive wizard handles license storage, profile creation, and verification in one session:
doctor to verify the connection.
Manual Path
If you prefer step-by-step control, use the individual commands below.Authenticate
- macOS: Keychain
- Linux: freedesktop.org Secret Service (gnome-keyring / KDE Wallet)
- Windows: DPAPI-encrypted credential file
Create a Profile
--display-name flag sets the label shown in your MCP client (spaces and special characters are fine). The internal name (github-copilot) is used for CLI commands.
Generate Client Config
Print the config snippet to paste manually:--apply flag merges the profile into the client’s config file, preserving any existing settings. Supported clients: claude, vscode, cursor, zed.
The generated config uses a local launcher command — client UIs show the display name, not raw secrets:
Verify the Connection
Already Have MCP Servers Configured?
If you already have MCP servers set up in your client, you can protect them in two commands:protect wizard automatically extracts the upstream URL, creates a ThornGuard profile, and rewrites your client config — preserving the original server name with “(Protected)” appended.
Verify Your Defenses
Run a quick test to confirm ThornGuard is actively protecting the connection.Test Ingress Protection
Ask your MCP client to send a tool invocation containing:
rm -rf /
Expected: ThornGuard blocks the request and records a BLOCKED_MALICIOUS audit event.
Test Egress Redaction
Place a fake secret likeAKIAIOSFODNN7EXAMPLE somewhere your upstream MCP server can read, then ask the client to fetch it.
Expected: ThornGuard redacts the secret before it reaches the client.