streamable-httpMITupdated 1mo ago
MCP server for EU AI Act vendor sovereignty scanning. MIT-licensed free tier.
What can you do with Sovereignty Scan?
@kajaril/sovereignty-scan-mcp
MCP server for EU AI Act vendor sovereignty scanning. MIT-licensed free tier.
Know where your stack processes data before the enforcer does. Covers 55 providers across 12 categories.
Install
1. Get a free API key
curl -s -X POST https://sovereignty-scan.kajaril.com/register \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com"}' | jq .api_key
Save the returned key ā it cannot be recovered.
2. Add to claude_desktop_config.json
{
"mcpServers": {
"sovereignty-scan": {
"type": "http",
"url": "https://sovereignty-scan.kajaril.com/mcp",
"headers": {
"Authorization": "Bearer ks_free_YOUR_KEY"
}
}
}
}
Restart Claude Desktop.
Client compatibility
| Client | Status |
|---|---|
| Claude Desktop | ā Supported |
| Cursor / Windsurf | ā Supported (HTTP MCP) |
| claude.ai web | ā Not supported (no HTTP MCP) |
Quick test
Verify the endpoint is live:
curl -s https://sovereignty-scan.kajaril.com/health | jq .
Call a tool with your key:
curl -s -X POST https://sovereignty-scan.kajaril.com/mcp \
-H "Authorization: Bearer ks_free_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"scan_provider","arguments":{"name":"cloudflare"}}}' \
| jq .
Tools
scan_provider ā Full jurisdictional profile for a single vendor: headquarters country, data residency regions, EU residency option, US CLOUD Act exposure, GDPR DPA availability, and legal framework.
nameā string, case-insensitive
Example response:
{
"name": "Cloudflare",
"hq_country": "US",
"data_residency_regions": ["US", "EU", "APAC"],
"eu_residency_option": true,
"us_cloud_act_subject": true,
"gdpr_dpa_available": true,
"legal_framework": "GDPR+SCC"
}
scan_stack ā Aggregate jurisdictional summary for a list of vendors: CLOUD Act exposure count, EU residency coverage, missing DPAs. Maximum 50 providers per call.
providersā string[], max 50
list_providers ā List all tracked providers. Optional category filter.
category?ā AI Ā· Hosting Ā· Database Ā· Auth Ā· Analytics Ā· Observability Ā· CI/CD Ā· Communications Ā· Payments Ā· Search Ā· Sandbox Ā· Cache
get_us_cloud_act_providers ā All providers subject to US CLOUD Act compelled disclosure (18 U.S.C. § 2713). No parameters.
suggest_eu_alternatives ā EU/EEA/UK/CH-based alternatives in the same category as a given provider. Deterministic ordering: EU/EEA first, then UK/CH. Capped at 10.
provider_nameā string, case-insensitive
Pricing
| Free | Paid | |
|---|---|---|
| Price | ā | ā¬39ā149 / mo |
| License | MIT | Subscription |
| Status | Live | Coming soon |
| Output | Jurisdiction, residency, legal framework, CLOUD Act | + Proprietary risk score + Remediation guidance |
| Auth | API key (free registration) | API key |
| Rate limit | 100 req / day / IP | Extended |
Paid tier notifications: studio@kajaril.com
Self-hosting
Requires a Cloudflare account (Workers + D1 + KV).
1. Clone and install
git clone https://github.com/mightbesaad/sovereignty-scan-mcp
cd sovereignty-scan-mcp
npm install
2. Create infrastructure
npx wrangler d1 create sovereignty-db-free
npx wrangler kv namespace create CACHE_KV
npx wrangler kv namespace create KEYS_KV
npx wrangler rate-limit:namespace create RATE_LIMITER
npx wrangler rate-limit:namespace create BURST_LIMITER
Copy the IDs printed by each command into wrangler.jsonc under d1_databases, kv_namespaces, and unsafe.bindings.
3. Apply schema and seed data
npx wrangler d1 execute sovereignty-db-free --remote --file=migrations/0001_providers.sql
node --input-type=module -e "
import { generateSeedSQL } from './src/seed.js';
process.stdout.write(generateSeedSQL());
" | npx wrangler d1 execute sovereignty-db-free --remote --command=-
4. Deploy
npx wrangler deploy
The custom domain (sovereignty-scan.kajaril.com) in the default config is owned by kajaril ā remove or replace the routes entry with your own domain or use the default *.workers.dev URL.
Health
GET https://sovereignty-scan.kajaril.com/health
Returns a structured payload (HTTP 200):
{
"status": "ok",
"provider_count": 55,
"anthropic_path_count": 3,
"last_kv_refresh": "2026-05-11T00:00:00.000Z",
"cache_age_seconds": 86400,
"schema_version": "0001"
}
status is "ok" when D1 is reachable, "degraded" otherwise. cache_age_seconds is null if the KV cache has never been warmed.
License
MIT ā see LICENSE.
Install
Add Sovereignty Scan to your client. Pick the one you use.
claude mcp add --transport http sovereignty-scan https://sovereignty-scan.kajaril.com/mcpcodex mcp add sovereignty-scan --url https://sovereignty-scan.kajaril.com/mcp{
"mcpServers": {
"sovereignty-scan": {
"url": "https://sovereignty-scan.kajaril.com/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"sovereignty-scan": {
"type": "http",
"url": "https://sovereignty-scan.kajaril.com/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"sovereignty-scan": {
"url": "https://sovereignty-scan.kajaril.com/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"sovereignty-scan": {
"serverUrl": "https://sovereignty-scan.kajaril.com/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
1 tool
Sovereignty Scan exposes one tool to a connected agent.
- provider_name
- string, case-insensitive
Score
73 / 100
Good
- Documentation25/25
- Maintenance19/25
- Trust13/20
- Capability4/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 28 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 1 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint ā no local install
Version history
| Versions | Published |
|---|---|
| 0.1.2Latest | May 11, 2026 |