Wrappers.ai Logo
Conversando con nuestra base de datos gracias a MCP
Lo último en IA
Jon Ortega 13/05/2025 9 MIN

Conversando con nuestra base de datos gracias a MCP

English version here: Building a database querier with MCP

La inteligencia artificial se ha convertido en una herramienta fundamental para muchas empresas. He estado escuchando mucho sobre MCP (Model Context Protocol) últimamente. Se promociona como la próxima gran innovación, y honestamente, sentí un poco de FOMO. Pero hasta que pude experimentar con ello este fin de semana, me costó encontrar ejemplos prácticos que realmente se adaptaran a mis necesidades. Había muchas demostraciones divertidas, pero no muchas útiles.

Después de finalmente ponerme al día, estoy gratamente sorprendido. He revisado la documentación disponible, he probado varias opciones... y algunas de ellas resultaron ser genuinamente útiles para mí. En esta publicación, explicaré cómo he integrado una de ellas en mi flujo de trabajo. Al final, tendrás una interfaz de chat que te permite consultar una base de datos SQL usando lenguaje natural. Suena bien, ¿verdad?

¿Qué es un servidor MCP?

Para quienes no están familiarizados, expliquemos brevemente esta nueva forma de conectar LLMs y herramientas.

MCP Diagram

MCP, o Model Context Protocol, es un protocolo diseñado por Anthropic para permitir que los modelos de lenguaje grandes (LLMs) interactúen con herramientas externas, APIs o fuentes de datos de manera estructurada y dinámica. Un servidor MCP actúa como puente entre el modelo y estos recursos externos. Escucha las solicitudes del modelo, ejecuta tareas (como llamar a una API) y envía los resultados de vuelta en un formato que el modelo puede entender.

Básicamente, resuelve el problema de tener que definir y pasar cada función manualmente al LLM, lo que, hasta ahora, se hacía típicamente a través de "function calling".

Podemos comparar MCP con un "puerto USB-C para aplicaciones de IA", ya que ofrece una conexión universal entre modelos de IA y diversas fuentes de datos o herramientas, similar a cómo USB-C conecta dispositivos a periféricos.

¿Cómo estamos usando MCP en nuestro proyecto?

Un sistema MCP tiene dos componentes principales:

  • Cliente MCP: Son las aplicaciones de IA (asistentes de chat, IDEs o herramientas potenciadas por IA) que quieren acceder a datos a través de MCP. Típicamente se usa Claude, pero como estamos construyendo nuestra propia aplicación, usaremos modelos de OpenAI a través de su API.
  • Servidor MCP: Puede ser cualquier herramienta que exponga su funcionalidad a través de MCP. Ejemplos de servidores MCP disponibles públicamente incluyen Drive, Zapier, GitHub y muchos otros. En nuestro caso, usaremos el servidor MCP de Postgre, que nos permite consultar e interactuar con una base de datos PostgreSQL.

Vamos al código

Primero, elegimos el servidor MCP con el que queremos experimentar (también podríamos construir el nuestro, pero eso es un poco más complicado y está fuera del alcance de esta publicación). Para nuestro ejemplo, usaremos Postgre MCP. Lo accederemos usando el paquete de código abierto mcp-use, disponible aquí.

Este paquete nos permite ejecutar cualquier servidor MCP con solo unas pocas líneas de código. Una vez que la base de datos está lista (la he poblado con algunos datos de usuario sintéticos para esta demostración), configuramos las credenciales e inicializamos la aplicación. Nuestro objetivo es permitir a los usuarios hacer preguntas en lenguaje natural, y que esas consultas se traduzcan y ejecuten automáticamente contra la base de datos PostgreSQL, sin escribir SQL. Esto hace que el sistema sea accesible también para usuarios no técnicos.

Aquí está el código completo para la aplicación basada en CLI:

import asyncio
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from mcp_use import MCPAgent, MCPClient

async def main():
    # Load environment variables
    load_dotenv()
    DB_LINK = os.getenv("DB_LINK") # DB connection is in .env file

    # Create configuration dictionary
    config = {
      "mcpServers": {
        "postgres": {
          "command": "npx",
          "args": [
            "-y",
            "@modelcontextprotocol/server-postgres",
            DB_LINK
          ]
        }
      }
    }

    # Create MCPClient from configuration dictionary
    client = MCPClient.from_dict(config)

    # Create LLM
    llm = ChatOpenAI(model="gpt-4o") # could also be Anthropic

    # Create agent with the client
    agent = MCPAgent(llm=llm, client=client, max_steps=30)

    # Run the query
    result = await agent.run(
        "This is where we place the query"
   )
    print(f"\nResult: {result}")

if __name__ == "__main__":
    asyncio.run(main())

¡Lo tenemos! Ya debería funcionar ejecutando python app.py en nuestra terminal. Pero seamos honestos, aún no es muy amigable para el usuario...

Creando la interfaz para la aplicación

Vamos a envolver esta funcionalidad útil en una interfaz gráfica basada en chat, para que cualquiera pueda consultar la base de datos fácilmente.

Construimos algunos archivos frontend, añadimos estilos básicos para que se vea bien, y configuramos una simple aplicación Flask, que debería ser más que suficiente para lo que necesitamos aquí. ¡Y así, tenemos una interfaz funcional para nuestra aplicación MCP!

MCP Interface

La interfaz está funcionando, y nuestra aplicación ahora puede usar funciones SQL bajo el capó para consultar la base de datos, añadiendo una valiosa capa de abstracción.

Como no sabemos nada sobre el esquema de la base de datos, comencemos explorando su estructura:

MCP Database Schema

Genial, ahora podemos ver los nombres de las columnas y los tipos de datos. Veamos si puede manejar consultas más complejas...

Y lo hace perfectamente. Ahora podríamos llevar esto más allá añadiendo otro MCP para graficar algunos datos o generar informes a partir de los resultados de las consultas. ¡Recuerda que los servidores MCP están diseñados para trabajar juntos!

¡Gracias por seguir este tutorial! Espero que te dé un punto de partida útil para explorar MCP en tus propios proyectos, o al menos una idea más clara de cómo integrarlo, como lo hizo para mí. ¡Más por venir!

Código completo disponible aquí: https://github.com/jonortega20/mcp-sql-query

¡Gracias por leer! Si te ha gustado, piensa en ver si Wrappers AI podría ayudarte:

Ver Planes