We love MCP. We just want your site locked when you’re not around. ClearComet Cloak for MCP is a simple on/off lock for your site’s AI connections.
WordPress sites now have “doors” that AI tools use: the MCP Adapter’s mcp routes, the Abilities API, and MCP servers added by other plugins. Anyone on the internet can find them in your site’s public route list and start knocking.
Cloak hides those doors. Strangers get WordPress’s own ordinary “not found” answer (rest_no_route, 404) and the doors disappear from the public /wp-json index. It works the moment you activate it. There are no keys to set up and nothing to configure. The people and tools you choose still get in:
X-BlindPig-Key header.WordPress still checks the app password after the door, so Cloak adds a lock; it never removes one.
People are already scanning the internet for MCP servers:
initialize handshakes POSTed to /mcp from 49 different IP addresses, on a server that runs no MCP at all. SANS Internet Storm Center, diary 33150/wp-json route list; it is fixed in 3.1.4. Wordfence/wp-json/mcp/v1/. Rapid7 Metasploit, Packet Storm via VulnersTo be honest about it: most of these knocks are reconnaissance, not attacks. GreyNoise saw no MCP-specific exploitation attempts in its honeypots. But being listed is how a site ends up on someone’s target list, and Cloak keeps your MCP doors off that list.
Activate the plugin and protection is on. There’s no wizard and no setup notice. Strangers can’t find your site’s AI connections, and you still get in when you’re logged in.
Settings > Cloak for MCP shows one door-slot switch and one line telling you whether you’re protected. Click the slot to pause or resume. Everything else is optional and lives on the Advanced pages: doors, the guest list, a secret key for your own apps, Cloudflare, access rules, an activity log and tools (export/import).
You don’t need a key. It’s only for your own apps or scripts that connect from changing addresses. Generate a key, or paste your own (20+ characters: letters, digits, _ and -). Apps send it in the X-BlindPig-Key header. Rotate keeps the old key working for 24 hours so you can update your apps; Turn off stops it. The key page has ready-made snippets for a desktop AI assistant, curl and n8n.
Cloak stores only a fingerprint of the key (a salted HMAC-SHA256), never the key itself, so a new key is shown once, right after it is made. Lost it? Make a new one. Keys are never exported and are compared in constant time.
Cloak trusts the CF-Connecting-IP header only when the request really comes from one of Cloudflare’s published ranges. X-Forwarded-For is never used. The plugin ships with Cloudflare’s list (checked 2026-10-06); Refresh from Cloudflare on the Guest list page downloads the current official list from Cloudflare’s public API over a checked HTTPS connection, and keeps the old list if anything looks wrong.
These optional constants pin a setting in code. The matching field shows as locked on the settings screen. They apply once protection is on, except BLINDPIG_DISABLED, which always switches protection off.
define( 'BLINDPIG_KEY', 'your-long-random-key' ); (20+ characters; works alongside a key made on the screen)
define( 'BLINDPIG_GUESTS', array( '203.0.113.7', '198.51.100.0/24' ) );
define( 'BLINDPIG_MODES', array( '/acme/v1' => 'lights_out' ) ); (modes: `open`, `unlisted`, `lights_out`)
define( 'BLINDPIG_DISABLED', true ); (emergency off switch)
blindpig_presets: change or add guest presets (for example an address range an AI assistant or bot publishes). Each preset is id => array( 'label' => ..., 'cidr' => ... ).blindpig_cf_ranges: change the Cloudflare ranges used to trust CF-Connecting-IP.blindpig_client_ip: supply the visitor address yourself if your site sits behind another trusted proxy. It must return a valid IP.Cloak never phones home: no tracking, no analytics, no account, no ads. It makes no outside requests except two optional ones that only run when an administrator clicks a button: the quick check, which asks your own site for one hidden door, and Refresh from Cloudflare (see “External services” below). The activity log keeps the last 200 visits to hidden doors (time, IP address, door, result) on your site only and never records headers or keys. Deleting the plugin deletes all of its data.
Cloak is one layer of protection, not a guarantee. Keep WordPress, your plugins and your passwords up to date. Cloak is provided as-is, without warranty of any kind, under the GPL (see license.txt).
Cloak connects to one outside service, and only when an administrator asks it to.
Cloudflare IP list (optional, manual). When you click Refresh from Cloudflare on Settings > Cloak for MCP > Guest list, the plugin sends one HTTPS GET request to https://api.cloudflare.com/client/v4/ips to download Cloudflare’s public list of its own server address ranges. The list is used only to decide when the CF-Connecting-IP header can be trusted.
The optional quick check sends one request from your site to your own site’s address; nothing goes to a third party.