Model Context Protocol PostgreSQL Server

by endaoment
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Uses .ENV files to load database credentials from environment variables, with fallback to shell configuration files when needed.

  • Runs on Node.js runtime environment to implement the MCP server, with configuration options for credentials management and verbose logging.

  • Connects to a PostgreSQL database via MCP, allowing AI models to execute SQL queries with retry logic, view database schema information, and interact with database tables while handling connection errors gracefully.

Protocolo de contexto de modelo del servidor PostgreSQL

Este proyecto implementa un servidor de Protocolo de Contexto de Modelo (MCP) que se conecta a una base de datos PostgreSQL. Permite que los modelos de IA interactúen con la base de datos mediante un protocolo estandarizado.

Características

  • Se conecta a una base de datos PostgreSQL mediante agrupación de conexiones
  • Implementa el Protocolo de Contexto de Modelo para la interacción del modelo de IA
  • Proporciona información del esquema de base de datos como recursos
  • Permite ejecutar consultas SQL con lógica de reintento
  • Maneja errores de conexión con elegancia

Prerrequisitos

  • Node.js 20 o superior
  • Base de datos PostgreSQL
  • Credenciales de acceso a la base de datos

Instalación

  1. Clonar este repositorio
  2. Instalar dependencias:
npm install

Configuración

El servidor lee las credenciales de la base de datos desde un archivo .env en el directorio raíz del proyecto. Debe agregar las credenciales de la base de datos como una cadena JSON en la variable de entorno DB_CREDENTIALS :

  1. Cree un archivo .env en la raíz del proyecto:
touch .env
  1. Agregue la siguiente línea con sus credenciales de base de datos reales:
export DB_CREDENTIALS='{"DB_USER":"your-username","DB_PASSWORD":"your-password","DB_HOST":"your-host","DB_PORT":"5433","DB_NAME":"your-database"}'

Regresar a los archivos de configuración del shell

Si el archivo .env no está presente o no se encuentra la variable de credenciales, el servidor buscará automáticamente las credenciales en los archivos de configuración de shell en el siguiente orden:

  1. ~/.zshrc
  2. ~/.bashrc
  3. ~/.bash_profile
  4. ~/.profile

Esto es especialmente útil en entornos donde los archivos de configuración de shell no se obtienen automáticamente, como el entorno Cursor MCP.

Para configurar credenciales en cualquiera de los archivos de configuración de shell:

  1. Abra el archivo de configuración de shell que prefiera, por ejemplo:
nano ~/.zshrc # or nano ~/.bashrc
  1. Agregue la siguiente línea con sus credenciales de base de datos reales:
export DB_CREDENTIALS='{"DB_USER":"your-username","DB_PASSWORD":"your-password","DB_HOST":"your-host","DB_PORT":"5433","DB_NAME":"your-database"}'

El servidor detectará y utilizará automáticamente estas credenciales cuando el archivo .env no esté disponible.

Variable de credenciales personalizadas

También puede utilizar un nombre de variable de entorno personalizado en lugar de DB_CREDENTIALS utilizando el indicador --credentials-var al iniciar el servidor:

node server.js --credentials-var MY_CUSTOM_DB_CREDS

En este caso, deberá definir MY_CUSTOM_DB_CREDS en su archivo .env .

Combinando opciones

Puede combinar diferentes opciones de línea de comandos según sea necesario:

# Use custom credentials and enable verbose mode node server.js --credentials-var MY_CUSTOM_DB_CREDS --verbose # Short form also works node server.js -c MY_CUSTOM_DB_CREDS -v

Uso

Inicie el servidor MCP:

# Directly with Node.js node server.js # Or with npm npm start

Opciones de registro

De forma predeterminada, el servidor se ejecuta en modo silencioso y solo muestra mensajes de error. Si desea ver todos los mensajes de registro, puede usar la opción verbose:

# With verbose logging node server.js --verbose # Or with npm npm start -- --verbose

También puedes utilizar la bandera corta -v :

node server.js -v

El servidor hará lo siguiente:

  1. Probar la conexión a la base de datos
  2. Inicie el servidor MCP usando el transporte stdio
  3. Gestionar solicitudes de modelos de IA

Integración con Cursor

Este servidor admite el Protocolo de contexto de modelo (MCP) y se integra con Cursor AI.

Configuración automática

Este proyecto incluye un archivo .cursor/mcp.json preconfigurado para la configuración automática dentro de Cursor.

Configuración manual

Para agregar manualmente este servidor a Cursor:

  1. Vaya a Configuración del cursor → Funciones → MCP
  2. Haga clic en "+ Agregar nuevo servidor MCP"
  3. Introduzca los siguientes datos:
    • Nombre : Postgres MCP
    • Tipo : stdio
    • Comando : node /full/path/to/server.js

Para obtener más información sobre la integración de MCP con Cursor, consulte la documentación oficial .

Herramientas disponibles

El servidor proporciona las siguientes herramientas a los modelos de IA:

  • query : Ejecutar consultas SQL con lógica de reintento

Recursos

El servidor expone las tablas de la base de datos como recursos, lo que permite que los modelos de IA:

  • Listar todas las tablas en la base de datos
  • Ver información del esquema para cada tabla

Manejo de errores

El servidor incluye:

  • Lógica de reintento de conexión
  • Registro detallado de errores
  • Manejo elegante del apagado

Solución de problemas

Problemas de conexión

  1. Error en la conexión a la base de datos
    • Compruebe si PostgreSQL se está ejecutando: pg_isready -h localhost -p 5433
    • Verifique que sus credenciales en el archivo .env sean correctas
    • Asegúrese de que su dirección IP tenga acceso a la base de datos (verifique pg_hba.conf)
    • Intente conectarse con otra herramienta como psql para verificar las credenciales
  2. Problemas de variables ambientales
    • Asegúrese de que su archivo .env esté en el directorio raíz del proyecto
    • Compruebe que la estructura JSON en DB_CREDENTIALS sea válida
    • Verifique que no haya espacios adicionales ni saltos de línea en la cadena JSON
    • Prueba con: node -e "console.log(JSON.parse(process.env.DB_CREDENTIALS))" < .env
  3. Problemas de versión de Node.js
    • Comprueba tu versión de Node.js: node -v
    • Este servidor requiere Node.js 20+
    • Si usa una versión anterior, instale Node.js 20: nvm install 20 && nvm use 20

Integración del cursor

  1. El servidor no se muestra en el cursor
    • Asegúrese de que el archivo .cursor/mcp.json exista y tenga el formato correcto
    • Intente reiniciar Cursor para detectar la configuración específica del proyecto
    • Verifique los registros del cursor para ver si hay mensajes de error
  2. Error "No se pudo crear el cliente"
    • Esto generalmente indica que el servidor falló durante el inicio.
    • Ejecute el servidor manualmente con registro detallado para ver el error: node server.js -v
    • Compruebe si las credenciales de la base de datos son accesibles en el entorno del Cursor
  3. No hay herramientas disponibles en el cursor
    • Asegúrese de que el servidor esté funcionando correctamente (verifique los registros)
    • Intente hacer clic en el botón Actualizar en el panel de herramientas de MCP
    • Reinicie el cursor e inténtelo nuevamente

Problemas específicos de PostgreSQL

  1. Errores de permiso denegado
    • Asegúrese de que el usuario de la base de datos tenga los permisos adecuados para las tablas
    • Intente otorgar los permisos necesarios: GRANT SELECT ON ALL TABLES IN SCHEMA public TO username;
  2. Errores "La relación no existe"
    • Verifique que la tabla exista: \dt tablename en psql
    • Comprueba si te estás conectando a la base de datos correcta
    • Asegúrese de que el usuario tenga acceso al esquema donde se encuentra la tabla
  3. Problemas de rendimiento
    • Los resultados de consultas grandes pueden causar retrasos, considere agregar cláusulas LIMIT
    • Comprueba si tu base de datos necesita optimización (índices, limpieza)

Para obtener ayuda adicional, puede ejecutar el servidor con registro detallado (indicador -v ) para ver mensajes de error detallados y registros de operaciones.

Licencia

Instituto Tecnológico de Massachusetts (MIT)

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

Un servidor que permite que los modelos de IA interactúen con bases de datos PostgreSQL a través de un protocolo estandarizado, proporcionando información del esquema de la base de datos y capacidades de ejecución de consultas SQL.

  1. Features
    1. Prerequisites
      1. Installation
        1. Configuration
          1. Fallback to Shell Config Files
          2. Custom Credentials Variable
          3. Combining Options
        2. Usage
          1. Logging Options
        3. Integration with Cursor
          1. Automatic Configuration
          2. Manual Configuration
        4. Available Tools
          1. Resources
            1. Error Handling
              1. Troubleshooting
                1. Connection Issues
                2. Cursor Integration
                3. PostgreSQL Specific Issues
              2. License
                ID: qapryqnth9