Skip to main content
Glama
nosuchip

livo-ge-mcp

livo-ge-mcp

MCP-сервер над livo.ge - порталом недвижимости группы tnet (бывший myhome.ge).

Прозрачный stateless-прокси: один вызов инструмента = один-несколько живых запросов. Между вызовами кешируются только два справочника (локации и словари, TTL 6 часов); объявления не кешируются никогда.

У livo.ge нет публичного API. Контракт восстановлен реверс-инжинирингом бандлов Next.js и проверен живыми запросами - разбор в docs/API.md.

Установка

claude mcp add livo-ge --scope user -- npx -y livo-ge-mcp@1

Нужен Node >= 20. Клонировать и ставить вручную ничего не надо: npx сам скачает пакет из npm и закеширует. @1 фиксирует мажорную версию, обновления внутри неё приезжают сами, а ломающий релиз молча не подменит сервер.

Проверить, что сервер подключился: claude mcp list.

Для клиентов с JSON-конфигом (Claude Desktop, Cursor, Windsurf):

{
  "mcpServers": {
    "livo-ge": {
      "command": "npx",
      "args": ["-y", "livo-ge-mcp@1"],
      "env": { "LIVO_LOCALE": "ru" }
    }
  }
}
git clone https://github.com/nosuchip/livo-ge-mcp && cd livo-ge-mcp && npm install
claude mcp add livo-ge --scope user -- node "$PWD/src/index.mjs"
npm test   # смоук-тест, ходит в сеть по-настоящему

Настройки

Переменная

По умолчанию

Что делает

LIVO_LOCALE

ru

ka | en | ru. Заголовок переводит данные, а не только UI

LIVO_MIN_INTERVAL_MS

1000

Минимальный интервал между запросами, глобально

Задать при установке: claude mcp add livo-ge --scope user -e LIVO_LOCALE=en -- npx -y livo-ge-mcp@1.

Related MCP server: Qobrix CRM MCP Server

Инструменты

Инструмент

Что делает

get_skill

Инструкции: apartment-search - как разложить критерии; criteria-coverage - что источник знает, а что нет

count

Число объявлений под фильтр, без выкачивания. Один дешёвый запрос

search

Поиск. Отдаёт applied_filters - эхо API о том, что он реально разобрал

listing

Полная карточка: описание, удобства, координаты, кадастр, просмотры, настоящая дата публикации

geo

Города, районы, микрорайоны с id; query работает как автодополнение сайта

reference

Словари id → название для фильтров, которые принимают только id

projects

Новостройки (проекты застройщиков) - отдельный набор данных

Фильтр принимает человеческие названия на любом из трёх языков сайта: areas: ["Ваке", "Saburtalo"], metro: ["Руставели"], amenities: ["elevator", "pets-allowed"].

Что этот сервер намеренно делает неудобно

Пять вещей в livo устроены так, что наивная обёртка выдавала бы правдоподобную неправду. Здесь они вынесены наружу, а не спрятаны.

Свежесть. last_updated - не дата публикации: livo пишет туда любую правку и любое платное поднятие, и у объявления 2024 года там регулярно "сегодня". Настоящий возраст даёт quantity_of_day, поэтому сервер отдаёт age_days и посчитанный из него published, а updated подписан как "правка или поднятие". Проверено сверкой с created_at: сходится день в день.

Сортировка. Она не применяется ко всей выдаче: super_vip, vip_plus и vip закреплены сверху всегда, а order работает только внутри тира. Сам date_desc к тому же сортирует по last_updated, а не по публикации. Поэтому каждая карточка несёт promo_tier (null = обычное объявление), и в ответе прямо сказано, что позиция в списке про деньги, а не про свежесть.

Опечатки в фильтре. API молча игнорирует неизвестные имена полей и отдаёт неотфильтрованную выдачу: count с полем nonsense_field возвращает ровно столько же, сколько без него. Клиент сверяет фильтр с белым списком и падает, а не врёт. Плюс к этому в ответ кладётся applied_filters - эхо самого API.

Удобства объединяются по ИЛИ. [elevator, conditioner] даёт больше результатов, чем [elevator]. "С лифтом И кондиционером" через этот API одним запросом не выражается, поэтому сервер предупреждает об этом прямо в ответе.

Охват. Заголовок X-Website-Key выбирает витрину группы tnet, и витрины не равны: по одному запросу livo отдаёт 53 698 объявлений, myhome.ge - 94 116. Livo - подмножество, и criteria-coverage говорит об этом прямо.

Темп и вежливость

1 запрос в секунду глобально, честный User-Agent (livo-ge-mcp/…), без подделки под браузер. На 429 и на "настоящий" 403 предохранитель размыкается и остаётся разомкнутым: это сигнал перестать ходить. robots.txt на обоих API-хостах ничего не запрещает.

Лицензия

MIT, см. LICENSE.

Available Tools

7 tools
countСчётчики по фильтруA

Считает результаты по фильтру, не выкачивая их — один дешёвый запрос. Годится, чтобы проверить осмысленность критериев и сравнить варианты фильтра между собой. Возвращает total — полное число объявлений под фильтр.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoсвободный текст: ищет по заголовку/описанию
cityNoгород: название на любом из ka/en/ru или id. Пустая строка — вся ГрузияТбилиси
dealYesтип сделки
areasNoрайоны и микрорайоны вперемешку, по названию или id. Микрорайон имеет приоритет при совпадении имени (напр. «Ваке» — это микрорайон, а не район Ваке-Сабуртало)
metroNoстанции метро (только Тбилиси)
ownerNoкто подал: physical (собственник), broker, agency, developer
roomsNoчисло комнат, напр. [2,3]; 10 означает «10 и больше»
estateNoтип недвижимостиflat
streetsNoid улиц; названия — через geo()
with_3dNoесть 3D-тур (таких единицы)
area_maxNoплощадь до
area_minNoплощадь от
bedroomsNoчисло спален
buildingNoсостояние постройки: старая / новостройка / строящаяся
currencyNoвалюта ценового фильтра; EUR не поддержанUSD
amenitiesNoудобства по устойчивому ключу или id: elevator, furniture-equipment, conditioner, internet, guard, storeroom, swimming-pool-open, pets-allowed … список — reference('amenities'). ВНИМАНИЕ: несколько удобств API объединяет по ИЛИ, а не по И — [elevator, conditioner] даёт больше результатов, чем [elevator]. Нужен И — фильтруй по одному и пересекай сам
area_unitNoединица площади; ha — только для участковm2
floor_maxNoэтаж до
floor_minNoэтаж от
has_porchNoесть веранда
price_maxNoверхняя граница цены
price_minNoнижняя граница цены
conditionsNoсостояние ремонта, id из reference('conditions')
has_loggiaNoесть лоджия
has_balconyNoесть балкон
price_per_m2Noтрактовать price_min/price_max как цену за м² (отдельный параметр API)
can_exchangedNoвозможен обмен
heating_typesNoотопление, id из reference
parking_typesNoпарковка, id из reference
project_typesNoтип проекта дома, id из reference('project_types')
bathroom_typesNoсанузлы, id из reference
material_typesNoматериал стен, id из reference
hot_water_typesNoгорячая вода, id из reference
storeroom_typesNoкладовая, id из reference
door_window_typesNoдвери/окна, id из reference
living_room_typesNoгостиная, id из reference
has_cadastral_codeNoуказан кадастровый код

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the disclosure burden. It adequately covers the key behavioral traits: the operation is cheap ('один дешёвый запрос'), does not download results, and returns the full count ('полное число объявлений'). It does not overpromise or hide side effects, and the read-only nature is sufficiently implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences, each earning its place: what it does, when to use it, and what it returns. The core behavior is front-loaded, and there is no redundant repetition of schema information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the high parameter count, the schema fully documents all parameters, so the description does not need to enumerate them. It provides the missing contextual piece: the return value ('total') and the operational guarantee that this is a cheap count rather than a data-fetching call. For a count tool, this is complete enough for an agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and all 37 parameters already have meaningful descriptions in the schema. The tool description adds no parameter-level detail beyond the generic 'по фильтру', but it does not need to because the schema fully documents each parameter. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Считает результаты по фильтру' (counts filtered results) and explicitly distinguishes itself from fetching tools by saying 'не выкачивая их' (without downloading them). It clearly communicates that this is a count-only counterpart to search-like tools, and states the exact return value ('total').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage context: use it to 'проверить осмысленность критериев' (validate criteria) and 'сравнить варианты фильтра' (compare filter variants). It implies the alternative is fetching results with search/listing, but does not name those alternatives explicitly or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

geoСправочник локацийA

Города, районы и микрорайоны с id. search() принимает названия и резолвит их сам; этот инструмент — посмотреть доступное или снять неоднозначность. С параметром query работает как автодополнение сайта и возвращает готовую связку city/district/urban.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoгород: вернуть его районы и микрорайоны. Без него — список городов
queryNoсвободный текст: автодополнение локаций livo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden. It discloses the data scope, the id-bearing entries, the autocomplete-like behavior of query, and that query returns a ready city/district/urban bundle. It does not specify the output shape for the city-only or no-parameter case, though the schema's city parameter partially covers that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences with no wasted words. The core purpose is front-loaded, the alternative tool is named, and the query-mode behavior is stated last without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-optional-parameter read-only reference tool with no output schema, the description covers the primary usage modes and the sibling distinction. It leaves a little ambiguity about the exact response shape when called with no parameters or only city, but the input schema's city description covers the no-parameter default, so the gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds real value beyond the schema by explaining what the query parameter actually produces (site-like autocomplete returning a ready-made city/district/urban bundle) and positioning city as a browsing action. This lifts it above the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a location reference for cities, districts, and subdistricts with ids. It also names the core actions (browse available locations, disambiguate) and explicitly contrasts itself with search(), which resolves names, so an agent can tell them apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit rule: search() is for passing names that it resolves itself, while geo is for viewing what's available or removing ambiguity. This is a direct when-to-use versus alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_skillИнструкция по работе с источникомA

Возвращает инструкцию. 'apartment-search' — как разложить критерии пользователя по инструментам и в каком порядке идти. 'criteria-coverage' — на что livo.ge отвечает, на что отвечает приблизительно, и чего не знает вовсе. Вызывай перед сборкой многокритериального поиска.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesимя инструкции

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of explaining behavior. It makes clear that this is a read-only-like instruction retrieval tool, explains what each instruction covers, and frames it as a preliminary step. It does not mention output format or error behavior, but for a simple skill-fetch tool the behavioral disclosure is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: it opens with the core purpose, then details the two enum options, and closes with a clear usage directive. Every sentence contributes information, and there is no filler or repetition of schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one required enum parameter, no output schema, no nested objects), the description fully equips an agent to call it correctly. It specifies both allowed parameter values, explains their meaning, and states exactly when the tool should be invoked.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides the enum values with only a terse 'имя инструкции' label, while the description explains what each enum value actually contains: 'apartment-search' covers how to decompose criteria and sequence tools, and 'criteria-coverage' covers what livo.ge handles approximately or not at all. This adds essential meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Возвращает инструкцию' (returns an instruction), and goes further to enumerate the two specific instruction names with their content. This clearly distinguishes get_skill from sibling data-access tools like search or listing, which return actual data rather than guidance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit usage context: 'Вызывай перед сборкой многокритериального поиска' (call it before assembling a multi-criteria search). It does not explicitly list when not to use it or name alternative tools, so it stops short of a perfect 5, but the guidance is specific and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listingКарточка объявленияA

Полная карточка: описание, удобства, координаты, этажность, состояние, кадастр, просмотры, телефон (частично скрыт). Здесь есть created_at — настоящая дата публикации, единственное место, где она приходит явно.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesid объявления (поле id из search)
with_similarsNoдобавить похожие объявления (подбор livo)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden, and it does disclose useful traits: phone is 'частично скрыт' and created_at is the true publication date, which is a meaningful clarification beyond a generic timestamp. It does not explicitly label the operation as read-only or cover error behavior, but for a simple card-fetch tool the key behavioral facts are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff: the first enumerates the card contents compactly, and the second highlights the unique created_at property. Every sentence earns its place and the key differentiator is front-loaded in the second sentence after the core resource definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description does a good job of communicating what the agent will receive: a full listing card with a specified list of attributes, plus a note that phone is partially hidden and created_at is uniquely available here. The input parameters are fully covered by the schema, so the description does not need to repeat them. Missing explicit response-structure details are minor for a tool of this simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both id and with_similars. The description adds no parameter-level meaning beyond mentioning created_at, which is an output field rather than a parameter. Baseline 3 is appropriate because the schema carries the parameter documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly defines the resource: 'Полная карточка' followed by a field list (описание, удобства, координаты, этажность, состояние, кадастр, просмотры, телефон). It also differentiates from siblings by noting that created_at is 'единственное место, где она приходит явно'. However, it lacks an explicit action verb like 'return' or 'fetch', so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'единственное место, где она приходит явно' explicitly tells an agent to use this tool when the real publication date is needed, which is a clear when-to-use signal. The enumerated field list also implies this is the tool for full listing details. It does not name sibling alternatives or give when-not-to-use exclusions, so it is not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

projectsНовостройки (проекты застройщиков)A

Проекты застройщиков — отдельный набор данных livo, не подмножество объявлений. min_price приходит диапазоном и в трёх валютах. С параметром uuid возвращает карточку одного проекта.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoгород: название или id
pageNoстраница
uuidNouuid проекта — вернуть одну карточку
areasNoрайоны и микрорайоны по названию или id
limitNoсколько проектов вернуть

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the disclosure burden. It usefully reveals that min_price arrives as a range in three currencies and that uuid selects a single project card. Still, it does not describe list-mode response shape, pagination behavior, or other output fields, so disclosure is only partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, information-dense sentences with no filler. The most important distinction — separate dataset, not listings — is front-loaded, and each sentence contributes a distinct fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the single-project mode and a key output quirk, and the schema documents all parameters. But there is no output schema, and the tool's list mode, default behavior, and the interaction of city/areas/page/limit are left implicit, so an agent has to infer significant context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and every parameter already has a description. The uuid behavior in the description largely repeats the schema's own uuid description, so it adds little new parameter-level meaning. The min_price note concerns the response rather than the input parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('проекты застройщиков'), uses the concrete verb 'возвращает' for the uuid mode, and explicitly states this is a separate livo dataset, not a subset of listings. This clearly distinguishes it from the sibling 'listing' tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The uuid sentence provides a clear conditional: use it to get a single project card. The 'not a subset of listings' statement also guides the agent away from the listing sibling. However, it does not address alternatives like count, search, or geo, or say explicitly when list mode is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

referenceСправочники значенийA

Словари id -> название для фильтров, которые принимают только id: conditions, project_types, heating_types, material_types, metro_stations, amenities и др. Большинство словарей разбиты по типу недвижимости — укажи estate, чтобы получить только применимые значения. Названия приходят на языке сервера (LIVO_LOCALE).

ParametersJSON Schema
NameRequiredDescriptionDefault
estateNoоставить только значения, применимые к этому типу недвижимости
groupsYesкакие словари вернуть; 'amenities' — удобства с устойчивыми ключами. Локации сюда не входят — за ними geo()

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of explaining behavior, and it does disclose useful traits: dictionaries are split by estate, names are localized via LIVO_LOCALE, and amenities have stable keys. However, it does not mention whether the operation is read-only, how invalid groups are handled, or what the response shape looks like beyond the id->name mapping.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: purpose first, then the estate-filtering behavior, then localization. Every sentence contributes actionable information with no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple reference-data tool with only two parameters and no output schema, the description covers the essential information: what is returned, estate applicability, and localization. It could still mention behavior when estate is omitted or how the locale is determined, but these are minor gaps given the low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers 100% of parameter descriptions, so the baseline is 3. The description adds meaningful extra context by explaining that the dictionaries map IDs to names for filters, that most dictionaries are estate-specific, and that localized names depend on LIVO_LOCALE, which goes beyond the schema's basic field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource as id-to-label dictionaries for filter parameters, giving concrete examples such as conditions, project_types, and metro_stations. It lacks an explicit verb like 'return' or 'get,' but the purpose is otherwise unambiguous and distinct from the broader search/list sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states when to use the tool: for filters that accept only IDs, and directs the caller to pass estate to get applicable values. The schema additionally gives an explicit exclusion and alternative by noting that locations are not included and should be handled by geo(), providing clear when/where-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 7 tool updatesv1.0.0
    • First observedcount
    • First observedgeo
    • First observedget_skill
    • First observedlisting
    • First observedprojects
    • First observedreference
    • First observedsearch

TDQS

A4.1/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: geo handles location hierarchy, reference provides filter dictionaries, count/search/listing cover different levels of listing retrieval, projects covers developer data, and get_skill provides meta-instructions. The relationships between similar tools like count vs search and search vs listing are explicitly clarified.

Naming Consistency3/5

Tool names are short, readable, and all lowercase, but they mix noun-style resources such as geo, reference, projects, and listing with imperative verbs like search and count, plus one snake_case verb_noun tool, get_skill. This is not chaotic, but there is no consistent naming pattern across the set.

Tool Count5/5

Seven tools are well-scoped for a read-only real estate search server. Each tool serves a necessary part of the workflow: reference data, geographic lookup, counting, searching, detail retrieval, project data, and guided instructions. There is no obvious bloat or missing essential category.

Completeness5/5

For its stated purpose of searching and exploring Livo.ge listings, the tool surface is complete: search and count cover filtering, listing provides full details, geo and reference support valid filter construction, projects covers developer data, and get_skill documents workflow and known limitations. No significant dead ends or missing read-side operations are apparent.

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Enables access to Idealista API for searching and retrieving property listings across Spain, Portugal, and Italy. Supports various property types including homes, apartments, garages, commercial properties, offices, and land with detailed filtering options.
    14
    3
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A read-only MCP server providing 56 tools to query Qobrix real-estate CRM data, covering listings, leads, viewings, offers, contracts, analytics, and more, with RESO Data Dictionary alignment and caching support.
    64
    3
    Apache 2.0
  • F
    license
    A
    quality
    D
    maintenance
    Enables querying and searching for real estate listings, complexes, prices, and school information from Naver Land (Korean real estate platform) through a set of MCP tools. Supports region hierarchy navigation, coordinate-based search, and various trade types like sale, jeonse, and monthly rent.
    9
    1
    -
  • A
    license
    A
    quality
    B
    maintenance
    Provides South Korean real estate transaction price lookup (sales and rent) for apartments, row houses, single-family homes, and officetels via MCP tools using public data from data.go.kr.
    8
    51
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nosuchip/livo-ge-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server