streamable-httpApache-2.0updated 11d ago
Open-source adapter for IPRATE's four-tool, anonymous, read-only MCP endpoint:
What can you do with European IP Data & Analytics — IPRATE?
IPRATE Free Public MCP
Open-source adapter for IPRATE's four-tool, anonymous, read-only MCP endpoint:
https://mcp.iprate.eu/mcp
The adapter exposes bounded selections from one completed IPRATE static release:
find_ip_representativesget_ip_representative_profileget_ip_market_snapshotget_iprate_coverage
It has no database, ORM, SQL, database credential, application-API fallback, or private
IPRATE package dependency. Ratings and statistics are copied from released JSON assets;
they are never recomputed by the MCP service. Anonymous calls are rate limited in memory
(HTTP 429 with Retry-After; results are never silently truncated), and GET /healthz
reports whether one internally consistent release is servable.
Static input
Set IPRATE_MCP_ASSET_ROOT to a completed /data/v1-shaped release directory containing
manifest.json, the released cohort and global assets, and mcp/v0.1/catalog.json. Set
IPRATE_MCP_ASSET_BASE_URL to the public URL used in source citations.
The catalogue is derived only from static profile assets:
iprate-free-mcp-build-catalog /path/to/data/v1
The builder fails if required indexes are missing, checksums differ, profile counts do not match the release manifest, or a profile asset is unreadable. It never imports or connects to IPRATE's database, API, models, or pipeline.
Release snapshots
In production the adapter never reads the live, mutating export tree. A refresher
(iprate-free-mcp-refresh-release) watches the live manifest.json and, when a new
release_id appears, copies every manifest-declared asset into an immutable per-release
snapshot (checksum-verified against the manifest), builds the catalogue inside that
snapshot, and atomically repoints a current symlink. The server keeps serving the
previous complete release until the next one is activated; a release that changes while
it is being snapshotted is abandoned and retried on the next pass. Snapshots contain no
entity profile files — profile data enters only through the derived catalogue — and the
catalogue is never written into the publicly served tree.
Development
python -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/pytest
.venv/bin/ruff check .
Run the adapter against a compatible static release:
export IPRATE_MCP_ASSET_ROOT=/path/to/data/v1
export IPRATE_MCP_ASSET_BASE_URL=https://iprate.eu/data/v1
iprate-free-mcp
The local endpoint is http://127.0.0.1:8000/mcp; liveness is GET /healthz.
Production containers
compose.yaml runs two hardened services built from the same image:
mcp— the server, unprivileged and read-only, mounting only the snapshot directory (read-only) and servingIPRATE_MCP_ASSET_ROOT=/data/current. It joins the existingruntime_defaultnetwork for Cloudflare Tunnel routing and publishes no host port.refresher— the snapshot builder, withnetwork_mode: none, mounting the live export tree read-only and the snapshot directory read-write.
docker compose up -d --build
Environment overrides: IPRATE_STATIC_ROOT (live export tree),
IPRATE_MCP_RELEASES_ROOT (snapshot directory), IPRATE_MCP_REFRESH_UID/GID
(owner of the snapshot directory), IPRATE_MCP_RATE_LIMIT_PER_MINUTE (default 120),
IPRATE_MCP_STALE_AFTER_DAYS (default 21). Neither service receives a database or
application secret.
Documentation: https://iprate.eu/developers/mcp/
Licence
Adapter code is Apache-2.0. IPRATE data and website content have separate terms and licences; this code licence does not grant rights to them or to IPRATE trademarks.
Install
Add European IP Data & Analytics — IPRATE to your client. Pick the one you use.
claude mcp add --transport http european-ip-data-analytics-iprate https://mcp.iprate.eu/mcpcodex mcp add european-ip-data-analytics-iprate --url https://mcp.iprate.eu/mcp{
"mcpServers": {
"european-ip-data-analytics-iprate": {
"url": "https://mcp.iprate.eu/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"european-ip-data-analytics-iprate": {
"type": "http",
"url": "https://mcp.iprate.eu/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"european-ip-data-analytics-iprate": {
"url": "https://mcp.iprate.eu/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"european-ip-data-analytics-iprate": {
"serverUrl": "https://mcp.iprate.eu/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Score
39 / 100
Incomplete
- Documentation18/25
- Maintenance19/25
- Trust13/20
- Capability0/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 3 days ago
- Has a release history
- Repository is not archived
- Licensed Apache-2.0
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 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.3.0Latest | Aug 28, 2026 |