Aller au contenu

Serveur MCP de MDRealty

Le Model Context Protocol (MCP) permet aux assistants IA d’appeler des outils externes. Notre serveur MCP leur donne un accès direct au catalogue immobilier de MDRealty au Monténégro : l’assistant répond aux questions sur les biens à partir des annonces actuelles, sans deviner.

Le serveur propose 13 outils en lecture seule : recherche de biens par filtres et en langage naturel, fiche complète d’un bien, biens similaires, villes, types de biens et de transactions, collections thématiques et nos articles sur l’achat immobilier au Monténégro. Chaque réponse renvoie vers la page du bien sur mdrealty.me.

Se connecter

URL du serveur

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

Transport : Streamable HTTP. Versions du protocole prises en charge jusqu’à 2025-11-25.

Autorisation

OAuth 2.1 avec enregistrement dynamique du client et PKCE. Votre client s’enregistre lui-même, ouvre notre page de consentement et vous cliquez sur « Autoriser » — ni compte ni mot de passe. Le client reçoit ensuite sa propre clé.

Clients

  • Claude (web et application) : ouvrez Paramètres → Connecteurs, ajoutez un connecteur personnalisé et collez l’URL du serveur.
  • ChatGPT : activez le mode développeur dans les paramètres des connecteurs, créez un connecteur avec l’URL du serveur et choisissez OAuth.
  • Claude Code : exécutez la commande ci-dessous dans un terminal.
    claude mcp add --transport http mdrealty https://mdrealty.me/api/mcp/mcp
  • Cursor et autres clients : ajoutez le serveur au fichier de configuration MCP.
    {
      "mcpServers": {
        "mdrealty": {
          "url": "https://mdrealty.me/api/mcp/mcp"
        }
      }
    }

Outils

La liste est générée par le serveur lui-même : elle correspond toujours à ce que voit votre client.

Search properties

search_propertiesLecture seule

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.

Paramètres

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

Renvoie: totalCount, properties, hasMore, searchTip

Get property details

get_propertyLecture seule

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.

Paramètres

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)

Renvoie: 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_propertiesLecture seule

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.

Paramètres

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

Renvoie: totalCount, properties, hasMore, searchTip

List cities

list_citiesLecture seule

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

Paramètres

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

Renvoie: cities

List property types

list_property_typesLecture seule

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

Paramètres

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

Renvoie: propertyTypes

List listing types

list_listing_typesLecture seule

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

Paramètres

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

Renvoie: listingTypes

List thematic collections

list_collectionsLecture seule

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

Paramètres

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

Renvoie: collections

List articles

list_articlesLecture seule

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

Paramètres

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

Renvoie: totalCount, articles, hasMore

Get article

get_articleLecture seule

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

Paramètres

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

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

Estimate purchase costs

estimate_deal_costLecture seule

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.

Paramètres

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

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

Mortgage calculator

mortgage_calculatorLecture seule

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.

Paramètres

pricenumberobligatoire
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

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

Market price statistics

get_market_statsLecture seule

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.

Paramètres

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

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

Compare properties

compare_propertiesLecture seule

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.

Paramètres

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

Renvoie: properties, notFound, summary, marketComputedAt, note

Les clés partenaires et internes donnent accès à des outils supplémentaires, comme la recherche par photo et la vérification des doublons. Écrivez-nous pour obtenir une clé partenaire.

API JSON sans MCP

Les agents qui ne gèrent pas MCP — GPT Actions, outils LangChain, simples clients HTTP — peuvent lire le même catalogue via une API JSON. Ni clé ni inscription ; les réponses sont les mêmes que celles des outils MCP.

  • GET /api/ai/properties — recherche de biens, avec les mêmes filtres que search_properties
  • GET /api/ai/properties/{slug} — un bien par son slug, comme get_property
  • GET /api/ai/cities — villes avec des biens, comme list_cities

Exemple

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

Description OpenAPI 3.1/api/ai/openapi.json

Limites

  • 60 requêtes par minute et par clé. Au-delà, le serveur répond 429 avec l’en-tête Retry-After.
  • Toutes les clés publiques utilisées depuis une même adresse IP partagent 300 requêtes par minute.
  • La connexion des clients est limitée par adresse IP : 20 enregistrements et 20 demandes de jeton par heure.
  • API JSON sans clé : 60 requêtes par minute et par adresse IP, jusqu’à 20 biens par page (un limit plus grand est réduit), offset au plus 200.
  • Jusqu’à 20 biens par page ; utilisez offset pour les pages suivantes.
  • Prix en euros. Les annonces changent chaque jour — vérifiez la disponibilité auprès de l’agent avant de vous fier à un prix.

Conditions d’utilisation

  • Utilisez les données pour répondre aux questions de vos utilisateurs sur l’immobilier au Monténégro.
  • Citez MDRealty comme source et donnez le lien vers le bien : montrez le champ url à l’utilisateur, citez canonicalUrl.
  • Ne copiez pas le catalogue en masse, ne revendez pas les données et n’en faites pas une base concurrente.
  • Le contenu ne peut pas servir à entraîner des modèles d’IA (robots.txt : Content-Signal ai-train=no).
  • Nous pouvons limiter ou révoquer les clés utilisées de manière abusive.
  • Les appels d’outils sont journalisés pendant 90 jours pour faire fonctionner et protéger le service : nom de l’outil, paramètres avec adresses e-mail et numéros de téléphone masqués, adresse IP tronquée. Les clés jamais utilisées sont supprimées au bout de 30 jours.

Description lisible par machine

Les agents peuvent trouver et configurer le serveur sans cette page :

Contact

Questions, clé partenaire ou outil manquant — écrivez à sales@mdrealty.me.