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.

La motivación

¿Cómo interactúa un LLM con su entorno en sus sistemas? No. Es una API de llamada y respuesta. Sigo oyendo a los agentes decir esto, a los agentes aquello, pero me parece que, sin acceso a herramientas que les permitan observar o manipular su entorno, los agentes están fundamentalmente limitados para realizar las tareas importantes que nos interesan.

Las primeras diez veces que veo una nueva palabra de moda, intento ignorar el ruido, pero después de que el Protocolo de Contexto de Modelo (MCP) apareciera una y otra vez, leí el texto original. Al presentar un formato consistente para anunciar la existencia de herramientas y recursos, y cómo usarlos, resuelve el problema a la perfección. Cuando necesitas crear un nuevo conector para un LLM con una herramienta o base de datos, puedes encontrar un servidor MCP de código abierto prediseñado e instalarlo. MCP también cuenta con un patrocinador corporativo que lo mantiene —Anthropic , una de las empresas clave del sector—, por lo que fue probado desde el primer día y diseñado para durar.

El plan

Me gusta aprender cosas nuevas resolviendo problemas reales; así me acuerdo mejor de los resultados. He trabajado muchísimo en Generación Aumentada por Recuperación (RAG) y estoy preparando gran parte para su publicación en código abierto. Veo MCP como la próxima evolución en las arquitecturas RAG. Creo que, en un futuro próximo, si se trabaja bien con RAG, se hará sobre la base de MCP.

He estado aprendiendo sobre inversión inmobiliaria últimamente, anticipándome a una corrección del mercado en el próximo año o dos. Voy a cargar datos gratuitos de Zillow en una base de datos y luego ejecutaré un servidor MCP en ella. Después, ejecutaré un servidor FastAPI que se conecta al servidor MCP y atiende solicitudes desde una interfaz HTML. El objetivo final es un chatbot que me ayude a explorar estos datos inmobiliarios y a tomar decisiones sobre en qué mercados buscar oportunidades.

Los datos que voy a cargar incluyen:

  • Índice de valor de la vivienda de Zillow (ZHVI) : una medida del valor típico de la vivienda para una región y un tipo de vivienda determinados dentro del percentil 65 al 95.
  • Pronóstico del valor de la vivienda de Zillow (ZHVF) : una estimación prospectiva de las tendencias del valor de la vivienda, basada en datos actuales e históricos del mercado.
  • Índice de alquileres observados de Zillow (ZORI) : una medida suavizada de los alquileres típicos del mercado observados en listados de alquileres actuales y fuera del mercado.
  • Pronóstico de alquiler observado de Zillow (ZORF) : cambios proyectados en los precios de alquiler basados en las tendencias de ZORI y los indicadores del mercado.

Es posible que notes que estoy excluyendo los datos de ZHVI y eso se debe a la falta de datos: hace poco comenzaron a rastrearlos.

Estos son datos muy específicos del dominio; es posible que no desee hacer conjeturas sobre los datos sin leer las definiciones, por lo que creo que será un gran ejemplo, ya que el LLM no podrá intuir su camino a través de un conjunto trivial de problemas.

Quiero pedirle al LLM que me ayude a encontrar un mercado con un equilibrio de viviendas asequibles con alquileres que generen flujo de caja y con altas tasas de crecimiento proyectadas. No quiero dar por sentado estas tasas de crecimiento proyectadas; programemos un poco para ver con qué frecuencia y en qué área tienden a ser correctas. Preveo que esto requerirá mucha ingeniería de indicaciones para crear diferentes consultas. Luego, podré almacenar estas indicaciones como indicaciones de MCP para sugerirlas al chatbot y ejecutarlas en la base de datos.

Elijo SQLite como base de datos, ya que almacena la memoria en un archivo local, por lo que no es necesario recargarla ni activarla o desactivarla. La ejecutaré en un contenedor para mayor portabilidad, así que al conservar el estado de la base de datos en un archivo, puedo tratarla como una carga de datos "en caché" si quiero. De esta forma, no necesito recargar los datos de Zillow en la base de datos cada vez que reinicio el contenedor si lo monto en un volumen local.

Para poder comunicarse con estos datos, sé que necesitaré escribir algún tipo de servidor MCP que pueda ejecutar consultas en las tablas que acabamos de escribir. Creo que querré codificar consultas útiles como indicadores o herramientas MCP que luego se presenten al LLM detrás del cliente MCP por lo que he leído hasta ahora, pero realmente no estoy seguro de cómo se ve eso en la práctica todavía. Estoy empezando con esta documentación de langchain combinada con algunas otras cosas que he estado leyendo como un servidor de inicio desde el cual puedo construir. Luego seguí principalmente la documentación de Anthropic para escribir el inicio de mi cliente MCP, aunque cambié gran parte de su código por un agente ReAct de langgraph. Luego, no estaba seguro de cómo lograr que el cliente y el servidor se comunicaran entre sí, así que encontré esta excelente documentación de MCP que habla sobre los diferentes métodos de transporte integrados en MCP. Voy a usar el método predeterminado que consiste en pasar mensajes en proceso entre el cliente y el servidor usando stdio. Este será un único contenedor con una base de datos local y el backend de una aplicación, así que tiene sentido. Sin embargo, para cualquier proyecto de producción, imagino que el servidor MCP estaría desacoplado del backend, lo que requeriría una configuración de transmisión HTTP más compleja. Lo dejaré para cuando tenga que desarrollar algo similar para el trabajo.

Ahora mismo, estoy ejecutando un solo script para la generación de un solo mensaje. Para que sea útil, necesito conectar un servidor web que reciba las consultas de los usuarios y las ejecute mediante estas funciones. Para que el servidor web sea útil, necesitaré un frontend que parezca una interfaz de chat para realizar solicitudes al servidor. Streamlit ha sido tendencia últimamente en proyectos de IA como este, y lo he probado en proyectos anteriores , así como en herramientas internas de trabajo. Sin embargo, he llegado a la conclusión de que ejecutar código lento de React desde código lento de Python, que requiere una gran cantidad de código de servidor adicional para implementar en Python, no es la mejor manera de crear frontends ligeros. Nadie quiere reescribir una prueba de concepto en algo apto para producción después de su aprobación, así que a menudo parece que eso no ocurre. He escrito bastante en React, lo que eliminaría el intermediario de Python, pero me parece excesivo. Cada vez que desarrollo algo fullstack, termino desarrollando más frontend de lo que realmente intentaba aprender. Llevo tiempo pensando en HTMX y voy a probarlo en este proyecto. Es increíblemente ligero y ofrece la funcionalidad minimalista que requiere una interfaz de usuario sencilla, como una aplicación de chat. Además, los memes son de primera . El único impacto que esto tiene en mi elección de servidor es que necesito devolver HTML con plantilla, así que usaré jinja para crear plantillas de mis páginas web y enviarlas con una etiqueta de script HTMX. Eso es todo lo que necesitas para ejecutarlo; es increíble.

Sin embargo, los servidores Echo no son muy interesantes, así que conectemos nuestro agente LLM. Agregué el cliente MCP al ciclo de vida del servidor FastAPI, vinculándolo al estado de la aplicación para que pueda pasarse entre los trabajadores de forma segura para subprocesos, sin que el cliente/servidor esté configurado con agrupación. Simplemente pasamos el mensaje al agente, formateamos la salida en un pequeño HTML y la devolvemos a la interfaz de usuario.

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

Un servidor MCP que se conecta a una base de datos SQLite de datos inmobiliarios de Zillow, lo que permite a los usuarios explorar valores de propiedades, índices de alquiler y pronósticos a través de una interfaz de chat para tomar decisiones de inversión informadas.

  1. El 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