PostgreSQL MCP Server

by HenkDz
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Supports PostgreSQL installation and configuration on Linux platforms with customized setup instructions tailored to Linux environments.

  • Provides platform-specific PostgreSQL installation and configuration guidance for macOS systems.

  • Requires Node.js runtime environment for server operation, with specific version requirements (≥ 18.0.0) for proper functionality.

Servidor MCP de PostgreSQL

Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona funciones de gestión de bases de datos PostgreSQL. Este servidor ayuda a analizar las configuraciones existentes de PostgreSQL, proporciona orientación para la implementación, depura problemas de la base de datos, gestiona esquemas, migra datos y supervisa el rendimiento de la base de datos.

Características

Análisis y depuración de bases de datos

1. Análisis de base de datos ( analyze_database )

Analiza la configuración de la base de datos PostgreSQL y las métricas de rendimiento:

  • Análisis de configuración
  • Métricas de rendimiento
  • Evaluación de seguridad
  • Recomendaciones para la optimización
// Example usage { "connectionString": "postgresql://user:password@localhost:5432/dbname", "analysisType": "performance" // Optional: "configuration" | "performance" | "security" }

2. Instrucciones de configuración ( get_setup_instructions )

Proporciona una guía paso a paso para la instalación y configuración de PostgreSQL:

  • Pasos de instalación específicos de la plataforma
  • Recomendaciones de configuración
  • Mejores prácticas de seguridad
  • Tareas posteriores a la instalación
// Example usage { "platform": "linux", // Required: "linux" | "macos" | "windows" "version": "15", // Optional: PostgreSQL version "useCase": "production" // Optional: "development" | "production" }

3. Depuración de bases de datos ( debug_database )

Depurar problemas comunes de PostgreSQL:

  • Problemas de conexión
  • Cuellos de botella en el rendimiento
  • Conflictos de bloqueo
  • Estado de replicación
// Example usage { "connectionString": "postgresql://user:password@localhost:5432/dbname", "issue": "performance", // Required: "connection" | "performance" | "locks" | "replication" "logLevel": "debug" // Optional: "info" | "debug" | "trace" }

Gestión de esquemas

4. Información del esquema ( get_schema_info )

Obtenga información detallada del esquema para una base de datos o una tabla específica:

  • Lista de tablas en una base de datos
  • Definiciones de columnas
  • Restricciones (claves primarias, claves externas, etc.)
  • Índices
// Example usage { "connectionString": "postgresql://user:password@localhost:5432/dbname", "tableName": "users" // Optional: specific table to get info for }

5. Crear tabla ( create_table )

Crear una nueva tabla con columnas específicas:

  • Definir nombres y tipos de columnas
  • Establecer restricciones que acepten valores nulos
  • Establecer valores predeterminados
// Example usage { "connectionString": "postgresql://user:password@localhost:5432/dbname", "tableName": "users", "columns": [ { "name": "id", "type": "SERIAL", "nullable": false }, { "name": "username", "type": "VARCHAR(100)", "nullable": false }, { "name": "email", "type": "VARCHAR(255)", "nullable": false }, { "name": "created_at", "type": "TIMESTAMP", "default": "NOW()" } ] }

6. Alterar tabla ( alter_table )

Modificar tablas existentes:

  • Agregar nuevas columnas
  • Modificar tipos de columnas o restricciones
  • Columnas de caída
// Example usage { "connectionString": "postgresql://user:password@localhost:5432/dbname", "tableName": "users", "operations": [ { "type": "add", "columnName": "last_login", "dataType": "TIMESTAMP" }, { "type": "alter", "columnName": "email", "nullable": false }, { "type": "drop", "columnName": "temporary_field" } ] }

Migración de datos

7. Exportar datos de la tabla ( export_table_data )

Exportar datos de la tabla a formato JSON o CSV:

  • Filtrar datos con la cláusula WHERE
  • Limitar el número de filas
  • Elija el formato de salida
// Example usage { "connectionString": "postgresql://user:password@localhost:5432/dbname", "tableName": "users", "outputPath": "./exports/users.json", "where": "created_at > '2023-01-01'", // Optional "limit": 1000, // Optional "format": "json" // Optional: "json" | "csv" }

8. Importar datos de la tabla ( import_table_data )

Importar datos desde archivos JSON o CSV:

  • Opcionalmente, truncar la tabla antes de importarla
  • Soporte para diferentes formatos
  • Delimitadores CSV personalizados
// Example usage { "connectionString": "postgresql://user:password@localhost:5432/dbname", "tableName": "users", "inputPath": "./imports/users.json", "truncateFirst": false, // Optional "format": "json", // Optional: "json" | "csv" "delimiter": "," // Optional: for CSV files }

9. Copiar entre bases de datos ( copy_between_databases )

Copiar datos entre dos bases de datos PostgreSQL:

  • Filtrar datos con la cláusula WHERE
  • Truncar opcionalmente la tabla de destino
// Example usage { "sourceConnectionString": "postgresql://user:password@localhost:5432/source_db", "targetConnectionString": "postgresql://user:password@localhost:5432/target_db", "tableName": "users", "where": "active = true", // Optional "truncateTarget": false // Optional }

Escucha

10. Base de datos del monitor ( monitor_database )

Monitoreo en tiempo real de la base de datos PostgreSQL:

  • Métricas de base de datos (conexiones, tasa de aciertos de caché, etc.)
  • Métricas de tabla (tamaño, número de filas, tuplas muertas)
  • Información de consulta activa
  • Información de bloqueo
  • Estado de replicación
  • Alertas configurables
// Example usage { "connectionString": "postgresql://user:password@localhost:5432/dbname", "includeTables": true, // Optional "includeQueries": true, // Optional "includeLocks": true, // Optional "includeReplication": false, // Optional "alertThresholds": { // Optional "connectionPercentage": 80, "longRunningQuerySeconds": 30, "cacheHitRatio": 0.95, "deadTuplesPercentage": 10, "vacuumAge": 7 } }

Prerrequisitos

  • Node.js >= 18.0.0
  • Servidor PostgreSQL (para operaciones de base de datos de destino)
  • Acceso de red a instancias de PostgreSQL de destino

Instalación

  1. Clonar el repositorio
  2. Instalar dependencias:
    npm install
  3. Construir el servidor:
    npm run build
  4. Agregar al archivo de configuración de MCP:
    { "mcpServers": { "postgresql-mcp": { "command": "node", "args": ["/path/to/postgresql-mcp-server/build/index.js"], "disabled": false, "alwaysAllow": [] } } }

Desarrollo

  • npm run dev : inicia el servidor de desarrollo con recarga activa
  • npm run lint - Ejecutar ESLint
  • npm test - Ejecutar pruebas

Consideraciones de seguridad

  1. Seguridad de la conexión
    • Utiliza agrupación de conexiones
    • Implementa tiempos de espera de conexión
    • Valida cadenas de conexión
    • Admite conexiones SSL/TLS
  2. Seguridad de consultas
    • Valida consultas SQL
    • Previene operaciones peligrosas
    • Implementa tiempos de espera de consultas
    • Registra todas las operaciones
  3. Autenticación
    • Admite múltiples métodos de autenticación
    • Implementa control de acceso basado en roles
    • Hace cumplir las políticas de contraseñas
    • Gestiona las credenciales de conexión de forma segura

Mejores prácticas

  1. Utilice siempre cadenas de conexión seguras con credenciales adecuadas
  2. Siga las recomendaciones de seguridad de producción para entornos sensibles
  3. Supervisar y analizar periódicamente el rendimiento de la base de datos
  4. Mantenga la versión de PostgreSQL actualizada
  5. Implementar estrategias de respaldo adecuadas
  6. Utilice la agrupación de conexiones para una mejor gestión de recursos
  7. Implementar un manejo y registro de errores adecuados
  8. Auditorías y actualizaciones de seguridad periódicas

Manejo de errores

El servidor implementa un manejo integral de errores:

  • Fallos de conexión
  • Tiempos de espera de consulta
  • Errores de autenticación
  • Problemas de permisos
  • Limitaciones de recursos

Contribuyendo

  1. Bifurcar el repositorio
  2. Crear una rama de características
  3. Confirme sus cambios
  4. Empujar hacia la rama
  5. Crear una solicitud de extracción

Licencia

Este proyecto está licenciado bajo la licencia AGPLv3: consulte el archivo de LICENCIA para obtener más detalles.

-
security - not tested
A
license - permissive license
-
quality - not tested

Un servidor de protocolo de contexto de modelo que permite potentes capacidades de gestión de bases de datos PostgreSQL, incluido análisis, gestión de esquemas, migración de datos y monitoreo a través de interacciones de lenguaje natural.

  1. Features
    1. Database Analysis and Debugging
    2. Schema Management
    3. Data Migration
    4. Monitoring
  2. Prerequisites
    1. Installation
      1. Development
        1. Security Considerations
          1. Best Practices
            1. Error Handling
              1. Contributing
                1. License
                  ID: 39cm5xytx2