Real Estate Capitale MCP

Real estate MCP server for Morocco — search, valuation, market analysis, 17 tools.

Should I use this

Quality & Safety

B
Description quality
65%
Schema completeness
86%
Naming quality
99%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (11)

  • LOWTool 'get_listing' description lacks action verbin get_listing
  • LOWTool 'estimate_property' description lacks action verbin estimate_property
  • LOWTool 'get_market_trends' description lacks action verbin get_market_trends
  • LOWTool 'get_quartier_stats' description lacks action verbin get_quartier_stats
  • LOWTool 'get_comparables' description lacks action verbin get_comparables
  • LOWTool 'get_price_analytics' description lacks action verbin get_price_analytics
  • LOWTool 'get_rental_yield' description lacks action verbin get_rental_yield
  • LOWTool 'get_quartier_comparison' description lacks action verbin get_quartier_comparison
  • LOWTool 'get_suspicious_listings' description lacks action verbin get_suspicious_listings
  • LOWTool 'get_liquidity' description lacks action verbin get_liquidity

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,120Tokens (tool definitions)
~1009 BTypical response size
Moderate attention impact (1.66% of 128k context)

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-http

What it can do

Tool inventory

Tools (17)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded17 tools