Przejdź do treści

Serwer MCP MDRealty

Model Context Protocol (MCP) pozwala asystentom AI wywoływać zewnętrzne narzędzia. Nasz serwer MCP daje im bezpośredni dostęp do katalogu nieruchomości MDRealty w Czarnogórze, dzięki czemu asystent odpowiada na pytania o nieruchomości na podstawie aktualnych ofert, a nie domysłów.

Serwer udostępnia 13 narzędzi tylko do odczytu: wyszukiwanie nieruchomości z filtrami i zapytaniami w języku naturalnym, pełne szczegóły oferty, podobne oferty, miasta, rodzaje nieruchomości i transakcji, kolekcje tematyczne oraz nasze artykuły o zakupie nieruchomości w Czarnogórze. Każda odpowiedź prowadzi do strony oferty na mdrealty.me.

Jak się połączyć

Adres serwera

https://mdrealty.me/api/mcp/mcp

Transport: Streamable HTTP. Obsługiwane są wersje protokołu do 2025-11-25.

Autoryzacja

OAuth 2.1 z dynamiczną rejestracją klienta i PKCE. Klient rejestruje się sam, otwiera naszą stronę zgody, a Ty klikasz „Zezwól” — konto ani hasło nie są potrzebne. Następnie klient otrzymuje własny klucz.

Klienci

  • Claude (web i aplikacja): otwórz Ustawienia → Łączniki, dodaj własny łącznik i wklej adres serwera.
  • ChatGPT: włącz tryb dewelopera w ustawieniach łączników, utwórz łącznik z adresem serwera i wybierz OAuth.
  • Claude Code: uruchom poniższe polecenie w terminalu.
    claude mcp add --transport http mdrealty https://mdrealty.me/api/mcp/mcp
  • Cursor i inni klienci: dodaj serwer do pliku konfiguracyjnego MCP.
    {
      "mcpServers": {
        "mdrealty": {
          "url": "https://mdrealty.me/api/mcp/mcp"
        }
      }
    }

Narzędzia

Lista jest generowana przez sam serwer, więc zawsze odpowiada temu, co widzi Twój klient.

Search properties

search_propertiesTylko odczyt

Search real estate properties in Montenegro. Supports natural language queries like "apartment in Budva near the sea under 200k" or structured filters. Returns up to 20 properties with key details. Prices in EUR.

Parametry

querystring
Natural language search, e.g. "villa with pool in Tivat"
citySlugstring
City name or slug, e.g. "budva", "tivat", "kotor", "herceg-novi". Supports partial matching.
listingType"sale" | "rent" | "daily-rent"
Listing type: sale, rent (long-term), daily-rent (short-term). Default: sale
propertyTypestring
Type slug: apartments, houses, villas, land, business, offices, hotels, residential-complexes, luxury-complexes, exclusive
minPricenumber
Min price in EUR
maxPricenumber
Max price in EUR
bedroomsinteger
Minimum bedrooms
bathroomsinteger
Minimum bathrooms
minAreanumber
Min area in m²
maxAreanumber
Max area in m²
maxDistanceToSeanumber
Max distance to sea in meters
limitinteger
Results per page (max 20). Default: 10
offsetinteger
Skip N results for pagination. Default: 0
sort"relevance" | "price_asc" | "price_desc" | "area_asc" | "area_desc" | "newest" | "sea_distance"
Sort order. Default: relevance
locale"ru" | "en" | "sr" | "de" | "fr" | "tr" | "pl"
Response language. Default: en

Zwraca: totalCount, properties, hasMore, searchTip

Get property details

get_propertyTylko odczyt

Get full details of a specific property by internal ID or slug. "propertyId" is the internal database ID, NOT the property number shown in titles (e.g. "Apartment in Budva No. 2584" has propertyId=2473, propertyNumber="2584"). Use slug for reliable lookups.

Parametry

propertyIdinteger
Internal database ID (the "id" field in search results), not the number shown in the title
slugstring
Property URL slug
locale"ru" | "en" | "sr" | "de" | "fr" | "tr" | "pl"
Response language. Default: en
includeImageboolean
Also return the main photo inline as an image block. Default: false (photo URLs are always included)

Zwraca: id, propertyNumber, slug, title, url, canonicalUrl, price, currency, priceFormatted, propertyType, listingType, city, district, area, bedrooms, bathrooms, distanceToSea, imageUrl, isVerified, excerpt, contactUrl, description, address, latitude, longitude, landArea, rooms, floor, totalFloors, yearBuilt, furnished, parking, features, galleryUrls, totalPhotos, virtualTourUrl, videoUrl, agent, pricePerSqm, isSuperPrice, isUrgent, isNew

Find similar properties

find_similar_propertiesTylko odczyt

Find properties similar to a given one. Uses AI embeddings to find visually and semantically similar listings. Great for "show me more like this" scenarios.

Parametry

propertyIdintegerwymagany
Reference property ID
limitinteger
Number of similar properties (max 12). Default: 6
locale"ru" | "en" | "sr" | "de" | "fr" | "tr" | "pl"
Response language. Default: en

Zwraca: totalCount, properties, hasMore, searchTip

List cities

list_citiesTylko odczyt

Get list of all cities where MDRealty has properties. Use city slugs from this list for the citySlug filter in search_properties.

Parametry

locale"ru" | "en" | "sr" | "de" | "fr" | "tr" | "pl"
Response language. Default: en

Zwraca: cities

List property types

list_property_typesTylko odczyt

Get available property types (apartment, house, villa, land, etc.) with slugs for search filters.

Parametry

locale"ru" | "en" | "sr" | "de" | "fr" | "tr" | "pl"
Response language. Default: en

Zwraca: propertyTypes

List listing types

list_listing_typesTylko odczyt

Get available listing types (sale, rent) with slugs for search filters.

Parametry

locale"ru" | "en" | "sr" | "de" | "fr" | "tr" | "pl"
Response language. Default: en

Zwraca: listingTypes

List thematic collections

list_collectionsTylko odczyt

List available thematic property collections, e.g. "Beachfront Villas", "Investment Apartments". Curated groups of properties organized by theme.

Parametry

locale"ru" | "en" | "sr" | "de" | "fr" | "tr" | "pl"
Response language. Default: en
limitinteger
Max results. Default: 10

Zwraca: collections

List articles

list_articlesTylko odczyt

List blog articles about Montenegro real estate. Covers buying guides, investment tips, area overviews, and market analysis.

Parametry

categorystring
Category slug to filter by
limitinteger
Max results. Default: 10
offsetinteger
Skip N results. Default: 0
locale"ru" | "en" | "sr" | "de" | "fr" | "tr" | "pl"
Response language. Default: en

Zwraca: totalCount, articles, hasMore

Get article

get_articleTylko odczyt

Get a blog article by slug or ID. Articles include guides about Montenegro locations, buying process, and investment advice.

Parametry

slugstring
Article URL slug
idinteger
Article ID
locale"ru" | "en" | "sr" | "de" | "fr" | "tr" | "pl"
Response language. Default: en

Zwraca: id, slug, title, url, canonicalUrl, excerpt, category, imageUrl, publishedAt, content, relatedProperties

Estimate purchase costs

estimate_deal_costTylko odczyt

Authoritative purchase-cost calculator for Montenegro, the same as /tools/deal-cost-calculator on mdrealty.me: property transfer tax (PROGRESSIVE — 3% up to €150,000, 5% for €150,000–500,000, 6% above; a new build from a VAT-registered developer is exempt) and the notary fee by the official tariff (Sl. list CG 49/2026; +5% of the tariff per party beyond two, +€15 per court interpreter, cadastre filing, 21% VAT). Also returns the agency fee: none for a listing from the MDRealty catalog, a separate deal-support fee for a property found elsewhere. Pass a price, or propertyId/slug of a catalog listing to use its price. Always use this instead of computing taxes or fees yourself.

Parametry

pricenumber
Property price in EUR. Not needed when propertyId or slug is given.
propertyIdinteger
Internal ID of a catalog listing (the "id" field of search results) — its price is used
slugstring
Slug of a catalog listing — its price is used
dealSupportboolean
The property was found elsewhere and MDRealty is asked to handle the purchase. Ignored for catalog listings.
newBuildFromVatPayerboolean
New build bought from a VAT-registered developer — no transfer tax. Default: the listing's own exemption for a catalog listing, otherwise false
buyersinteger
People buying (spouses = 2, a company = 1). Default: 1
sellersinteger
People selling, same rule. Default: 1
interpretersinteger
Court interpreters at the signing, one per language. Default: 0
cadastreFilingboolean
The notary files the cadastre application. Default: true
locale"ru" | "en" | "sr" | "de" | "fr" | "tr" | "pl"
Language of the links. Default: en

Zwraca: price, currency, property, transferTax, notary, extraFees, agencyFee, totalCosts, totalWithProperty, totalWithDealSupport, calculatorUrl, notes

Mortgage calculator

mortgage_calculatorTylko odczyt

Monthly mortgage payment for a property price in EUR — the same annuity calculation and defaults as /tools/mortgage-calculator on mdrealty.me: down payment 30%, 20 years, and unless a rate is given, the cheapest current bank rate for the borrower segment (5% when no bank rate is on file). Indicative only: bank terms in Montenegro differ.

Parametry

pricenumberwymagany
Property price in EUR
downPaymentPctnumber
Down payment as % of the price. Default: 30
downPaymentnumber
Down payment in EUR — overrides downPaymentPct
termYearsinteger
Loan term in years. Default: 20
annualRatePctnumber
Annual interest rate, %. Default: the cheapest current bank rate for the segment
segment"resident" | "non_resident_permit" | "non_resident" | "young" | "diaspora"
Borrower: resident, non_resident_permit (has a residence permit), non_resident, young, diaspora. Default: resident
locale"ru" | "en" | "sr" | "de" | "fr" | "tr" | "pl"
Language of the link. Default: en

Zwraca: price, downPayment, downPaymentPct, loan, termYears, annualRatePct, rateSource, bank, monthlyPayment, totalPaid, totalInterest, calculatorUrl, note

Market price statistics

get_market_statsTylko odczyt

Asking-price statistics of real estate in Montenegro from the MDRealty catalog: number of active listings, price and price-per-m² quartiles (25th percentile, median, 75th) and median area — for the whole country, a city or a region, a property type and a deal type (sale, monthly rent, nightly rent). A region (e.g. budvanskaya-rivera) covers every town in it; city.isRegion marks it. Groups with fewer than 5 listings are not shown. Refreshed daily; computedAt says when. Use it to answer "how much does an apartment in Budva cost per m²" instead of guessing from search results.

Parametry

citySlugstring
City or region slug from list_cities ("budva" works too); omit for the whole country and every city
propertyTypestring
Property type slug from list_property_types, e.g. apartments; omit for all types
listingType"sale" | "rent" | "daily-rent"
sale, rent (monthly) or daily-rent (nightly). Default: all three
limitinteger
Groups to return, 1–200. Default: 50
locale"ru" | "en" | "sr" | "de" | "fr" | "tr" | "pl"
Language of city and type names. Default: en

Zwraca: computedAt, currency, minGroupSize, totalGroups, groups, hasMore, note, searchTip

Compare properties

compare_propertiesTylko odczyt

Side-by-side comparison of 2–4 MDRealty listings: price, price per m², area, bedrooms, bathrooms, distance to the sea, city, year built and the listing page, plus how each price per m² compares with the market median for similar listings (the same figures as get_market_stats). Pass the ids from search results, or slugs.

Parametry

propertyIdsinteger[]
Internal IDs (the "id" field of search results), not the listing number in the title
slugsstring[]
Listing slugs
locale"ru" | "en" | "sr" | "de" | "fr" | "tr" | "pl"
Language of titles, names and links. Default: en

Zwraca: properties, notFound, summary, marketComputedAt, note

Klucze partnerskie i służbowe odblokowują dodatkowe narzędzia, takie jak wyszukiwanie po zdjęciu i weryfikacja duplikatów. Aby otrzymać klucz partnerski, napisz do nas.

JSON API bez MCP

Agenci, którzy nie obsługują MCP — GPT Actions, narzędzia LangChain, zwykli klienci HTTP — mogą czytać ten sam katalog przez JSON API. Bez klucza i rejestracji; odpowiedzi są takie same jak z narzędzi MCP.

  • GET /api/ai/properties — wyszukiwanie ofert z tymi samymi filtrami co search_properties
  • GET /api/ai/properties/{slug} — jedna oferta po slugu, jak get_property
  • GET /api/ai/cities — miasta z ofertami, jak list_cities

Przykład

curl "https://mdrealty.me/api/ai/properties?citySlug=budva&query=sea%20view&limit=5"

Opis OpenAPI 3.1/api/ai/openapi.json

Limity

  • 60 zapytań na minutę na klucz. Powyżej tego serwer odpowiada 429 z nagłówkiem Retry-After.
  • Wszystkie klucze publiczne używane z jednego adresu IP dzielą wspólny limit 300 zapytań na minutę.
  • Podłączanie klientów jest ograniczone na adres IP: 20 rejestracji i 20 żądań tokenu na godzinę.
  • JSON API bez klucza: 60 zapytań na minutę z jednego adresu IP, do 20 ofert na stronę (większy limit jest przycinany), offset najwyżej 200.
  • Do 20 ofert na stronę; kolejne strony pobieraj przez offset.
  • Ceny podane są w euro. Oferty zmieniają się codziennie — zanim oprzesz się na cenie, potwierdź dostępność u agenta.

Warunki korzystania

  • Używaj danych, aby odpowiadać na pytania swoich użytkowników o nieruchomości w Czarnogórze.
  • Podawaj MDRealty jako źródło i linkuj do oferty: pokazuj użytkownikowi pole url, a cytując — canonicalUrl.
  • Nie kopiuj katalogu masowo, nie odsprzedawaj danych i nie buduj na ich podstawie konkurencyjnej bazy.
  • Treści nie mogą być używane do trenowania modeli AI (robots.txt: Content-Signal ai-train=no).
  • Możemy ograniczyć lub unieważnić klucze używane w sposób nadużywający.
  • Wywołania narzędzi są zapisywane w dzienniku przez 90 dni w celu działania i ochrony usługi: nazwa narzędzia, parametry z ukrytymi adresami e-mail i numerami telefonów oraz skrócony adres IP. Klucze, których nigdy nie użyto, są usuwane po 30 dniach.

Opis do odczytu maszynowego

Agenci mogą znaleźć i skonfigurować serwer także bez tej strony:

Kontakt

Pytania, klucz partnerski lub brakujące narzędzie — napisz na sales@mdrealty.me.