Real Estate Capitale MCP
Real estate MCP server for Morocco — search, valuation, market analysis, 17 tools.
Should I use this
Quality & Safety
Findings (11)
- LOWin get_listing
- LOWin estimate_property
- LOWin get_market_trends
- LOWin get_quartier_stats
- LOWin get_comparables
- LOWin get_price_analytics
- LOWin get_rental_yield
- LOWin get_quartier_comparison
- LOWin get_suspicious_listings
- LOWin get_liquidity
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"rabatrealestate-mcp": {
"url": "https://realestatecapitale.ma/mcp"
}
}
}Remote endpoints
https://realestatecapitale.ma/mcpstreamable-httpWhat it can do
Tool inventory
Tools (17)
🟢search_listings(transaction, location, propertyType, priceMin, priceMax, ...)
Rechercher des biens immobiliers avec filtres (transaction, location, budget, surface, pieces, type de bien, mot-cle)
Input Schema
{
"type": "object",
"properties": {
"transaction": {
"type": "string",
"enum": [
"Vente",
"Location"
],
"description": "Type de transaction"
},
"location": {
"type": "string",
"description": "Quartier ou ville (ex: Agdal, Hay Riad, Salé)"
},
"propertyType": {
"type": "string",
"enum": [
"Appartement",
"Maison",
"Villa",
"Studio",
"Terrain",
"Bureau",
"Commerce",
"Riad"
],
"description": "Type de bien"
},
"priceMin": {
"type": "number",
"description": "Prix minimum en MAD"
},
"priceMax": {
"type": "number",
"description": "Prix maximum en MAD"
},
"surfaceMin": {
"type": "number",
"description": "Surface minimum en m²"
},
"surfaceMax": {
"type": "number",
"description": "Surface maximum en m²"
},
"roomsMin": {
"type": "number",
"description": "Nombre minimum de pieces"
},
"roomsMax": {
"type": "number",
"description": "Nombre maximum de pieces"
},
"q": {
"type": "string",
"description": "Mot-cle dans le titre ou la description"
},
"sort": {
"type": "string",
"enum": [
"price_asc",
"price_desc",
"date_desc",
"date_asc"
],
"description": "Tri"
},
"page": {
"type": "number",
"description": "Page (defaut: 1)"
},
"pageSize": {
"type": "number",
"description": "Resultats par page (defaut: 12, max: 60)"
}
}
}🟢get_listing(id)
Obtenir le détail complet d'un bien immobilier par son ID
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "ID du bien immobilier"
}
},
"required": [
"id"
]
}⚪estimate_property(type, quartier, surface, ville, pieces, ...)
Estimer la valeur d'un bien immobilier (prix au m², fourchette basse/haute)
Input Schema
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"vente",
"location"
],
"description": "Type de transaction"
},
"quartier": {
"type": "string",
"description": "Quartier (ex: Agdal, Hay Riad)"
},
"surface": {
"type": "number",
"description": "Surface en m²"
},
"ville": {
"type": "string",
"description": "Ville (optionnel, defaut: Rabat)"
},
"pieces": {
"type": "number",
"description": "Nombre de pieces (optionnel)"
},
"etage": {
"type": "string",
"enum": [
"rdc",
"bas",
"milieu",
"haut",
"dernier"
],
"description": "Type d'etage (optionnel)"
},
"etat": {
"type": "string",
"enum": [
"renover",
"bon",
"neuf"
],
"description": "Etat du bien (optionnel)"
},
"standing": {
"type": "string",
"enum": [
"economique",
"standard",
"standing",
"luxe"
],
"description": "Standing (optionnel)"
}
},
"required": [
"type",
"quartier",
"surface"
]
}🟢get_market_trends(status, months)
Obtenir les tendances du marche immobilier par quartier (variation de prix sur N mois)
Input Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"vente",
"location",
"all"
],
"description": "Filtrer par type (defaut: all)"
},
"months": {
"type": "number",
"description": "Periode en mois (3-36, defaut: 12)"
}
}
}🟢get_quartier_stats(transaction)
Obtenir les statistiques agregees par quartier (prix m² moyen, nombre d'annonces)
Input Schema
{
"type": "object",
"properties": {
"transaction": {
"type": "string",
"enum": [
"Vente",
"Location"
],
"description": "Filtrer par transaction"
}
}
}🟢list_quartiers
Lister tous les quartiers disponibles avec leur ville
Input Schema
{
"type": "object",
"properties": {}
}🟢list_villes
Lister toutes les villes disponibles
Input Schema
{
"type": "object",
"properties": {}
}🟡create_lead(name, phone, source, listingId)
Creer un lead (contact client) pour prise de rendez-vous ou demande d'information
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Nom du contact (2-120 caracteres)"
},
"phone": {
"type": "string",
"description": "Telephone (8-24 caracteres, ex: 0612345678)"
},
"source": {
"type": "string",
"enum": [
"website",
"whatsapp_click",
"facebook",
"phone",
"other",
"mcp"
],
"description": "Source du lead (defaut: mcp)"
},
"listingId": {
"type": "number",
"description": "ID du bien concerne (optionnel)"
}
},
"required": [
"name",
"phone"
]
}🟢get_comparables(listingId)
Trouver les annonces les plus similaires a un bien donne (pour evaluation ou estimation)
Input Schema
{
"type": "object",
"properties": {
"listingId": {
"type": "number",
"description": "ID du bien de reference"
}
},
"required": [
"listingId"
]
}🟢get_investor_alerts(status, minDiscountPct, minSample, page, pageSize)
Identifier les biens sous-evalues (opportunites d'investissement avec discount)
Input Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"vente",
"location",
"all"
],
"description": "Filtrer par type (defaut: vente)"
},
"minDiscountPct": {
"type": "number",
"description": "Discount minimum en pourcentage (10-70, defaut: 15)"
},
"minSample": {
"type": "number",
"description": "Echantillon minimum par segment (12-300, defaut: 20)"
},
"page": {
"type": "number",
"description": "Page (defaut: 1)"
},
"pageSize": {
"type": "number",
"description": "Resultats par page (defaut: 20, max: 100)"
}
}
}🟢get_price_analytics(transaction, location, propertyType, priceMin, priceMax, ...)
Analyser les prix au m² par quartier avec tendances et distribution
Input Schema
{
"type": "object",
"properties": {
"transaction": {
"type": "string",
"enum": [
"Vente",
"Location",
"Achat"
],
"description": "Type de transaction (defaut: Vente)"
},
"location": {
"type": "string",
"description": "Quartier ou ville specifique (optionnel)"
},
"propertyType": {
"type": "string",
"description": "Type de bien (optionnel, ex: Appartement, Villa)"
},
"priceMin": {
"type": "number",
"description": "Prix minimum (optionnel)"
},
"priceMax": {
"type": "number",
"description": "Prix maximum (optionnel)"
},
"page": {
"type": "number",
"description": "Page (defaut: 1)"
},
"pageSize": {
"type": "number",
"description": "Resultats par page (defaut: 20, max: 100)"
}
}
}🟢get_rental_yield(quartier)
Obtenir le rendement locatif brut par quartier (comparatif achat vs location)
Input Schema
{
"type": "object",
"properties": {
"quartier": {
"type": "string",
"description": "Quartier specifique (optionnel, tous si omis)"
}
}
}🟢get_market_predictions(quartier, status, months)
Previsions de prix a 90 jours par quartier (regression lineaire)
Input Schema
{
"type": "object",
"properties": {
"quartier": {
"type": "string",
"description": "Quartier specifique (optionnel, tous si omis)"
},
"status": {
"type": "string",
"enum": [
"vente",
"location",
"all"
],
"description": "Filtrer par type (defaut: all)"
},
"months": {
"type": "number",
"description": "Periode d'analyse en mois (3-36, defaut: 12)"
}
}
}🟢get_quartier_comparison(q1, q2, status)
Comparer deux quartiers cote-a-cote (prix m², nombre d'annonces, volatilite)
Input Schema
{
"type": "object",
"properties": {
"q1": {
"type": "string",
"description": "Premier quartier (ex: Agdal)"
},
"q2": {
"type": "string",
"description": "Second quartier (ex: Hay Riad)"
},
"status": {
"type": "string",
"enum": [
"vente",
"location",
"all"
],
"description": "Filtrer par type (defaut: all)"
}
},
"required": [
"q1",
"q2"
]
}🟢get_suspicious_listings(status, minSample, iqrMultiplier, minDeviationPct, page, ...)
Detecter les annonces avec des prix anormaux (IQR outliers, scores de severite)
Input Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"vente",
"location",
"all"
],
"description": "Filtrer par type (defaut: all)"
},
"minSample": {
"type": "number",
"description": "Echantillon minimum (12-300, defaut: 20)"
},
"iqrMultiplier": {
"type": "number",
"description": "Multiplicateur IQR (1.5-3.0, defaut: 2.0)"
},
"minDeviationPct": {
"type": "number",
"description": "Deviation minimum (10-90%, defaut: 30)"
},
"page": {
"type": "number",
"description": "Page (defaut: 1)"
},
"pageSize": {
"type": "number",
"description": "Resultats par page (defaut: 20, max: 100)"
}
}
}🟢get_liquidity(quartier, status)
Indice de liquidite du marche par quartier (taux de rotation, stock, delai de vente)
Input Schema
{
"type": "object",
"properties": {
"quartier": {
"type": "string",
"description": "Quartier specifique (optionnel, tous si omis)"
},
"status": {
"type": "string",
"enum": [
"vente",
"location",
"all"
],
"description": "Filtrer par type (defaut: all)"
}
}
}🟢get_agency_leaderboard(limit)
Classement des agences immobilieres par volume d'annonces
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"description": "Nombre d'agences (5-100, defaut: 20)"
}
}
}Community
Evidence