European IP Data & Analytics — IPRATE
Free anonymous selections from released European IP profiles, rankings, and market statistics.
Open source Repository Open in the app JSON README (API)
About
Free anonymous selections from released European IP profiles, rankings, and market statistics.
Details
- Kind
- MCP servers
- Topic
- Marketing & analytics
- Publisher
- eu.iprate
- Origin
- official
- Category
- ferramentas
- Transport
- http
- Version
- 0.3.0
- Last push
- 2026-08-28T21:23:24Z
- Repository state
- ativo
- Language
- Python
- License
- Apache-2.0
- Added
- 2026-08-29 03:01:33
- Updated
- 2026-08-29 03:01:33
- Origin id
eu.iprate/ip-analytics
README
# IPRATE Free Public MCP Open-source adapter for IPRATE's four-tool, anonymous, read-only MCP endpoint: ```text https://mcp.iprate.eu/mcp ``` The adapter exposes bounded selections from one completed IPRATE static release: - `find_ip_representatives` - `get_ip_representative_profile` - `get_ip_market_snapshot` - `get_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: ```bash 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 ```bash 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: ```bash 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 serving `IPRATE_MCP_ASSET_ROOT=/data/current`. It joins the existing `runtime_default` network for Cloudflare Tunnel routing and publishes no host port. - `refresher` — the snapshot builder, with `network_mode: none`, mounting the live export tree read-only and the snapshot directory read-write. ```bash 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.