Real Estate Investment MCP Server

by ericnsibley

Integrations

  • Powers the web server that connects to the MCP server and handles client requests from the htmx UI.

  • Provides a lightweight frontend interface for the chatbot, allowing users to interact with the real estate data analysis tools.

  • Templates webpages that are returned to the htmx frontend, enabling dynamic content generation for the chat interface.

Die Motivation

Wie interagiert ein LLM mit seiner Umgebung in Ihren Systemen? Nein. Es handelt sich um eine Call-and-Response-API. Ich höre immer wieder von Agenten, aber mir scheint, dass Agenten ohne Zugriff auf Werkzeuge, die es ihnen ermöglichen, ihre Umgebung zu beobachten oder zu manipulieren, grundsätzlich in der Ausführung der für uns wichtigen Aufgaben eingeschränkt sind.

Die ersten zehn Male, wenn ich ein neues Schlagwort sehe, versuche ich, den Lärm zu ignorieren. Doch nachdem das Model Context Protocol (MCP) immer wieder auftauchte, habe ich mich damit beschäftigt. Durch die Bereitstellung eines einheitlichen Formats für die Bekanntmachung der Existenz von Tools und Ressourcen und deren Nutzung wird das Problem elegant gelöst. Wenn Sie einen neuen Connector für ein LLM zu einem Tool oder einer Datenbank erstellen müssen, können Sie einen vorgefertigten Open-Source-MCP-Server verwenden. MCP wird außerdem von einem Unternehmenssponsor gepflegt – Anthropic , einem der wichtigsten Branchenakteure –, sodass es vom ersten Tag an praxiserprobt und für die Ewigkeit gebaut wurde.

Der Plan

Ich lerne gerne Neues, indem ich reale Probleme löse – die Ergebnisse bleiben mir so besser im Gedächtnis. Ich habe viel Arbeit mit Retrieval Augmented Generation (RAG) geleistet und bereite vieles davon für Open Source vor. Ich sehe MCP als die nächste Evolutionsstufe der RAG-Architekturen. Ich denke, wer RAG in naher Zukunft gut umsetzt, wird es auf MCP aufbauen.

Ich habe mich in letzter Zeit intensiv mit Immobilieninvestitionen beschäftigt, da ich mit einer Marktkorrektur in den nächsten ein bis zwei Jahren rechne. Ich werde kostenlose Zillow-Daten in eine Datenbank laden und anschließend einen MCP-Server darauf laufen lassen. Anschließend werde ich einen FastAPI-Server starten, der sich mit dem MCP-Server verbindet und Anfragen einer HTMX-Benutzeroberfläche bearbeitet. Das Endziel ist ein Chatbot, der mir hilft, diese Immobiliendaten zu analysieren und Entscheidungen darüber zu treffen, in welchen Märkten ich nach Angeboten suchen soll.

Die Daten, die ich laden werde, umfassen:

  • Zillow Home Value Index (ZHVI)Ein Maß für den typischen Hauswert für eine bestimmte Region und einen bestimmten Haustyp innerhalb des 65. bis 95. Präperzentils.
  • Zillow Home Value Forecast (ZHVF)Eine zukunftsorientierte Schätzung der Immobilienwerttrends, basierend auf aktuellen und historischen Marktdaten.
  • Zillow Observed Rent Index (ZORI)Ein geglätteter Messwert der typischen Marktmieten, die bei aktuellen und nicht auf dem Markt befindlichen Mietangeboten beobachtet wurden.
  • Zillow Observed Rent Forecast (ZORF)Prognostizierte Änderungen der Mietpreise basierend auf Trends im ZORI und Marktindikatoren.

Ihnen fällt vielleicht auf, dass ich die ZHVI-Daten ausschließe. Das liegt daran, dass nicht genügend Daten vorliegen – sie haben erst vor Kurzem damit begonnen, diese Daten zu erfassen.

Dies sind sehr domänenspezifische Daten. Sie möchten vielleicht keine Vermutungen über die Daten anstellen, ohne die Definitionen zu lesen. Ich denke daher, dass dies ein großartiges Beispiel sein wird, da das LLM nicht in der Lage sein wird, sich intuitiv durch eine Reihe trivialer Probleme zu arbeiten.

Ich möchte den LLM bitten, mir bei der Suche nach einem Markt mit einem ausgewogenen Angebot an bezahlbaren Häusern mit attraktiven Mieten und hohen prognostizierten Wachstumsraten zu helfen. Ich möchte diese prognostizierten Wachstumsraten nicht als selbstverständlich ansehen – lasst uns ein wenig programmieren, um zu sehen, wie oft und in welchem Bereich sie tendenziell zutreffen. Ich gehe davon aus, dass dies viel Aufwand für die Erstellung verschiedener Abfragen erfordern wird. Anschließend kann ich diese Eingabeaufforderungen als MCP-Eingabeaufforderungen speichern, um sie dem Chatbot vorzuschlagen und in der Datenbank auszuführen.

Ich wähle SQLite als Datenbank, da es den Speicher in einer lokalen Datei speichert und somit kein Neuladen oder Hoch-/Herunterfahren der Datenbank erforderlich ist. Ich werde die Datenbank aus Portabilitätsgründen in einem Container betreiben. Durch die Speicherung des Datenbankstatus in einer Datei kann ich ihn bei Bedarf als „gecachten“ Datenladevorgang behandeln. Auf diese Weise muss ich die Zillow-Daten nicht bei jedem Neustart des Containers neu in die Datenbank laden, wenn ich ihn auf einem lokalen Volume mounte.

Um mit diesen Daten kommunizieren zu können, muss ich einen MCP-Server schreiben, der Abfragen für die gerade erstellten Tabellen ausführen kann. Nach meinen bisherigen Erkenntnissen werde ich nützliche Abfragen entweder als MCP-Eingabeaufforderungen oder als Tools kodieren, die dann dem LLM hinter dem MCP-Client präsentiert werden. Wie das in der Praxis aussieht, weiß ich aber noch nicht genau. Ich beginne mit dieser Dokumentation von Langchain, kombiniert mit einigen anderen Informationen, die ich als Grundlage für einen Starterserver verwendet habe. Anschließend habe ich mich beim Schreiben des ersten MCP-Clients größtenteils an die Anthropoc-Dokumentation gehalten, wobei ich einen Großteil des Codes durch einen Langgraph ReAct-Agenten ersetzt habe. Ich war mir dann nicht sicher, wie ich Client und Server miteinander kommunizieren lassen sollte, und habe daher diese hervorragende MCP-Dokumentation gefunden, die die verschiedenen in MCP integrierten Transportmethoden beschreibt. Ich verwende die Standardmethode, die Nachrichten zwischen Client und Server über stdio übermittelt. Dies wird ein einzelner Container mit einer lokalen Datenbank und dem Backend einer App sein, daher ist das sinnvoll. Für die Produktion stelle ich mir jedoch vor, dass der MCP-Server vom Backend entkoppelt wird, was eine komplexere HTTP-Streaming-Konfiguration erfordern würde. Das hebe ich mir auf, bis ich so etwas für die Arbeit bauen muss.

Im Moment ist dies ein einzelnes Skript, das ich für eine einzelne Nachrichtengenerierung ausführe. Um dies sinnvoll zu nutzen, muss ich einen Webserver anschließen, der Benutzeranfragen entgegennimmt und über diese Funktionen ausführt. Um den Webserver nutzbar zu machen, benötige ich ein Frontend, das wie eine Chat-Oberfläche aussieht, um Anfragen an den Server zu stellen. Streamlit ist in letzter Zeit der letzte Schrei für KI-Projekte wie dieses, und ich habe es in früheren Projekten sowie mit internen Tools für die Arbeit ausprobiert. Ich bin jedoch zu dem Schluss gekommen, dass die Ausführung von langsamem React-Code aus langsamem Python-Code, der einen ganzen zusätzlichen Teil Servercode erfordert, der für Python bereitgestellt werden muss, nicht der beste Weg ist, leichtgewichtige Frontends zu erstellen. Niemand möchte einen Proof of Concept nach der Genehmigung in etwas wirklich Produktionsreifes umschreiben, daher scheint dies oft einfach nicht zu gelingen. Ich habe überdurchschnittlich viel React-Code geschrieben, was den Python-Mittelsmann hier eliminieren würde, aber es fühlt sich wirklich übertrieben an. Jedes Mal, wenn ich etwas Fullstack entwickle, verbringe ich am Ende mehr Frontend-Entwicklung, als ich eigentlich lernen wollte. HTML ist schon länger auf meinem Radar und ich werde es für dieses Projekt ausprobieren – es ist unglaublich leichtgewichtig und bietet genau die minimalistische Funktionalität, die ein Low-Logic-Frontend wie eine Chat-App benötigt. Außerdem sind die Memes erstklassig . Die einzige Auswirkung auf meine Serverwahl ist, dass ich HTML-Vorlagen zurückgeben muss. Daher werde ich Jinja verwenden, um meine Webseiten zu erstellen und sie mit einem HTML-Skript-Tag zu senden. Das ist wirklich alles, was man braucht, um es auszuführen – es ist fantastisch.

Echo-Server sind allerdings nicht besonders interessant, also schließen wir unseren LLM-Agenten an. Ich habe den MCP-Client in die Lebensdauer des FastAPI-Servers integriert und ihn an den App-Status gebunden, damit er threadsicher an die Worker weitergegeben werden kann. Client/Server sind jedoch nicht mit Pooling ausgestattet. Wir übergeben die Nachricht einfach an den Agenten, formatieren die Ausgabe in kleinem HTML und geben sie an die Benutzeroberfläche zurück.

-
security - not tested
F
license - not found
-
quality - not tested

Ein MCP-Server, der eine Verbindung zu einer SQLite-Datenbank mit Immobiliendaten von Zillow herstellt und es Benutzern ermöglicht, über eine Chat-Schnittstelle Immobilienwerte, Mietindizes und Prognosen zu erkunden, um fundierte Investitionsentscheidungen zu treffen.

  1. Der Plan

    Related MCP Servers

    • -
      security
      F
      license
      -
      quality
      An MCP server that provides safe, read-only access to SQLite databases through MCP. This server is built with the FastMCP framework, which enables LLMs to explore and query SQLite databases with built-in safety features and query validation.
      Last updated -
      49
      Python
    • -
      security
      A
      license
      -
      quality
      An MCP server implementation that enables Claude AI to interact with Clickhouse databases. Features include secure database connections, query execution, read-only mode support, and multi-query capabilities.
      Last updated -
      Python
      MIT License
      • Apple
    • -
      security
      F
      license
      -
      quality
      An MCP server that monitors and provides analytics on weekly report submissions in a Google Sheet, allowing users to check missing submissions, view statistics, and track individual reporting status.
      Last updated -
      Python
    • A
      security
      A
      license
      A
      quality
      An open-source MCP server that connects to various data sources (SQL databases, CSV, Parquet files), allowing AI models to execute SQL queries and generate data visualizations for analytics and business intelligence.
      Last updated -
      10
      19
      Python
      MIT License
      • Linux
      • Apple

    View all related MCP servers

    ID: jum3oymicm