CLIO Geo
MCP server for rendering GeoJSON vector layers into map images with basemaps
Descripción del creador (original en inglés)
Bulgarian real-estate listings, district prices and monthly market reports from imotai.bg.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Funciona en Claude para web, escritorio y móvil:
https://imotai.bg/mcpEjecuta esto en tu terminal
claude mcp add --transport http imotai https://imotai.bg/mcpPégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"imotai": {
"url": "https://imotai.bg/mcp"
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"imotai": {
"type": "http",
"url": "https://imotai.bg/mcp"
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
ChatGPT solo se conecta a servidores en internet:
https://imotai.bg/mcpLos nombres de los menús pueden variar un poco según el plan y con el tiempo.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Nombres y descripciones de las herramientas tal como los informó el servidor el 6 nov 2026. Los escribió el creador, no nosotros; los mostramos como texto sin formato.
list_districtsList the districts (neighbourhoods) of a Bulgarian city that ImotAI has data for, with the count of active listings in each where a public price page exists. Call this first to learn which "district" values are valid for the other ImotAI tools in a given city.
search_propertiesSearch Bulgarian real-estate listings on imotai.bg by city, district, property type, price range, area range and rooms. Returns up to 25 listings with structured fields, a link to each, and a district-level marketContext block (district average price per m² and how far this listi
get_propertyGet the full structured data for one ImotAI listing by its id or slug: price, price per m², area, rooms, floor, construction, heating, location (city/district), features, and an authoritative per-listing marketContext (district average and median price per m², deviation percent,
get_market_statsThe market picture for a Bulgarian city or district on imotai.bg: number of offers, average and P25/P50/P75 for total price and price per m², a breakdown by room count, and the neighbouring districts for comparison. Apartments for sale. Returns { available: false } below 8 offers
estimate_valueRough price positioning for a property by city, district, type and area — based on the CURRENT ASKING PRICES of comparable active listings, not on closed transactions. Returns an estimate, a low–high range, a confidence level from sample size, and a mandatory disclaimer. Refuses
get_market_reportThe monthly ImotAI market report for a Bulgarian city: median asking price per m² of apartments for sale, change versus the previous month, the same per district, and the number of new listings in the month. Omit "month" for the latest report. Cite the "url" and "source" fields w
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 9 nov 2026
El nombre en el registro se verificó con el dominio imotai.bg (el registro comprueba quién es dueño del dominio)
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Respondió en 91 ms (HTTP 200)
No hace falta iniciar sesión
Leímos 6 descripciones de herramientas y no encontramos instrucciones ocultas para la IA
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 3 de 3 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en la nube del creador. Te conectas por internet sin instalar nada, pero lo que envías pasa por los servidores del creador.
El repo de GitHub cambió por última vez –, y la última versión (0.2.0) llegó al registro hace 7 días.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.
En la misma categoría: CLIO Geo, US Weather Alerts (NWS Warnings & Watches) — buy per-query in-session (usweathe…, Marine buoy weather observations (marinewatch)
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
MCP server for rendering GeoJSON vector layers into map images with basemaps
US weather alerts (NWS): warnings, watches. $0.01/query. Be born in one call — free testnet funds.
Marine weather: NOAA buoy obs, waves, wind. $0.01/query. Be born in one call — free testnet funds.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
A Model Context Protocol server that gives AI agents (Claude Desktop, Claude Code, …) a read-only window onto Bulgarian real-estate data from imotai.bg.
It is a thin client over the site's public API — no API keys, no writes, no personal data (broker names, phones and free-text descriptions never leave the API). Numbers are based on current asking prices of active listings, not on closed transactions.
The server runs at `https://imotai.bg/mcp` (Streamable HTTP, stateless, no key).
https://imotai.bg/mcpclaude mcp add --transport http imotai https://imotai.bg/mcpmcp.json):{ "mcpServers": { "imotai": { "url": "https://imotai.bg/mcp" } } }
https://imotai.bg/mcp (developer mode, depending on plan).Instructions in Bulgarian: https://imotai.bg/ii-asistenti. Online limits: 30 requests/min per client.
v0.2.0. Six tools (list_districts, search_properties, get_property, get_market_stats, get_market_report, estimate_value), each with an explicit output allowlist; the property tools carry a marketContext block. Two transports: stdio (dist/index.js, local) and Streamable HTTP (src/http.ts, the hosted endpoint above). get_market_report returns the monthly ImotAI market report for a city (median asking price per m², month-over-month change, districts, new listings).
Data: CC BY 4.0 — credit ImotAI (imotai.bg).
git clone https://github.com/pdimiev-prog/imotai-mcp.git
cd imotai-mcp npm install npm run build # produces dist/index.js
Add this to claude_desktop_config.json (use the absolute path to dist/index.js):
{
"mcpServers": { "imotai": { "command": "node", "args": ["/absolute/path/to/imotai-mcp/dist/index.js"], "env": { "IMOTAI_API_URL": "https://imotai.bg/api" } } } }
Restart Claude Desktop, then ask something like:
*Which districts does ImotAI track in Sofia, and how many active listings are in each?*
Claude will call list_districts and answer from the result.
list_districtsInput: { city: string } — a city slug ("sofia") or its Bulgarian name ("София").
Output:
{
"city": { "slug": "sofia", "name": "София" }, "districts": [ { "name": "Лозенец", "slug": "lozenets", "activeListings": 64 }, { "name": "Витоша", "slug": "vitosha", "activeListings": null } ], "note": "activeListings is filled only for districts with a public price page (>= 8 offers); a null count does not mean zero." }
An unknown city returns { "error": "Unknown city \"…\". Recognised city slugs: …" }. Call this first — the slugs it returns are the valid district values for the other tools.
search_propertiesInput:
| Field | Type | Notes | |
|---|---|---|---|
city | string, required | Slug or Bulgarian name | |
transactionType | "sale" \ | "rent", required | |
district | string | Slug from list_districts | |
propertyType | enum | apartment, house, villa, studio, office, shop, warehouse, land, garage, other | |
minPrice / maxPrice | number | EUR | |
minArea / maxArea | number | m² | |
rooms | string | CSV, e.g. "2,3"; "5+" for 5 or more | |
limit | integer 1–25 | Default 10 |
Output: { results: [...], total, shown }. Each result has structured fields plus a url to the listing. No contact details, no free-text description, no coordinates.
get_propertyInput: { id: string } — the listing's UUID or its URL slug.
Output: { found: true, url, ...structured fields, features: [] }, or { found: false, reason } if there is no such listing. Never returns the broker description, phone/name, or exact coordinates.
get_market_statsInput: { city: string, district?: string } — slugs or Bulgarian names from list_districts. Omit district for city-level stats.
Output: { available: true, city, district, count, avgPrice, avgPricePerSqm, price: {p25,p50,p75}, pricePerSqm: {p25,p50,p75}, byRooms: [...], neighbouringDistricts: [...], basis, url }. Sale offers, all residential types. Below 8 offers → { available: false, count, reason }. Unknown city/district → { error } pointing at list_districts.
Both property tools attach a marketContext — "is this listing priced above or below its district":
districtAveragePricePerSqm, districtMedianPricePerSqm, deviationPercent (+ = pricier than the district), comparableActiveListings, basedOnCount, pricePageUrl.districtAveragePricePerSqm, deviationPercent, comparableListings, basis.Both are null when the district has fewer than 8 offers or no price page. The two levels use slightly different denominators, so their numbers are close but not identical — the get_property figure is the precise one.
estimate_valueInput:
| Field | Type | Notes |
|---|---|---|
city | string, required | Slug or Bulgarian name from list_districts |
district | string, required | Slug or Bulgarian name from list_districts |
propertyType | enum, required | apartment, house, villa, studio, land |
area | number, required | Living area in m² |
rooms | integer | Accepted but not used for filtering |
Output:
{
"available": true, "estimate": 208000, "rangeLow": 184000, "rangeHigh": 240000, "basedOnCount": 40, "confidence": "medium", // from sample size; forced "low" for the market blend "disclaimer": "…", // ALWAYS present — show verbatim "referenceUrl": "https://imotai.bg/ceni/sofia/lozenets" }
Below 5 comparable offers it returns { "available": false, "reason": "…", "disclaimer": "…" } — still with a disclaimer. An unknown city or district returns { "error": "…" } pointing at list_districts (no disclaimer there).
confidence is high at ≥ 50 comparable offers, medium at ≥ 15, otherwise low; it is always `low` when external market data was blended into the figure, and the disclaimer then says so.
⚠️ **This is positioning against the CURRENT ASKING PRICES of comparable active
listings — not an appraisal, not an official valuation, not based on closed
transactions.** The
disclaimerfield is present on everyavailableresult;
show it to the user verbatim whenever you cite any number from this tool.
The server allows 60 downstream requests per minute per process (token bucket, refills continuously). Every call to imotai.bg/api counts — a search_properties that resolves three distinct districts spends four requests (one search + three price pages).
When the bucket is empty a tool returns, without throwing:
{ "error": "Твърде много заявки за кратко — изчакайте минута." }
Wait about a minute and retry. The limit is per running server process; a single Claude Desktop client is one process. Override it with IMOTAI_RATE_LIMIT_PER_MIN if you run your own instance.
| Env var | Default | Meaning |
|---|---|---|
IMOTAI_API_URL | https://imotai.bg/api | Base URL of the ImotAI public API |
IMOTAI_HTTP_TIMEOUT_MS | 15000 | Per-request timeout |
IMOTAI_RATE_LIMIT_PER_MIN | 60 | Max downstream requests per minute (token bucket, per process) |
stdio MCP server (Node ≥ 20, ESM). Each tool maps to one or two calls against the public imotai.bg/api endpoints and reshapes the response through an explicit field allowlist. No state, no cache, no credentials.
MIT.