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.
Versión 0.2.0
Características
El servidor proporciona las siguientes herramientas:
1. Análisis y configuración de la base de datos
1.1. Analizar la 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
1.2. Obtener 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
1.3. Base de datos de depuración ( debug_database
)
Depurar problemas comunes de PostgreSQL:
- Problemas de conexión
- Cuellos de botella en el rendimiento
- Conflictos de bloqueo
- Estado de replicación
2. Gestión de esquemas
2.1. Obtener 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
2.2. 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
2.3. Alterar tabla ( alter_table
)
Modificar tablas existentes:
- Agregar nuevas columnas
- Modificar tipos de columnas o restricciones
- Columnas de caída
2.4. Obtener enumeraciones ( get_enums
)
Obtenga información sobre los tipos ENUM de PostgreSQL.
2.5. Crear enumeración ( create_enum
)
Crea un nuevo tipo ENUM en la base de datos.
3. Migración de datos
3.1. Exportar datos de 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
3.2. Importar datos de 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
3.3. 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
4. Monitoreo
4.1. Base de datos de 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
5. Funciones
5.1. Obtener funciones ( get_functions
)
Obtenga información sobre las funciones de PostgreSQL.
5.2. Crear función ( create_function
)
Crear o reemplazar una función PostgreSQL.
5.3. Función de eliminación ( drop_function
)
Eliminar una función PostgreSQL.
6. Seguridad a nivel de fila (RLS)
6.1. Habilitar RLS ( enable_rls
)
Habilitar seguridad a nivel de fila en una tabla.
6.2. Deshabilitar RLS ( disable_rls
)
Deshabilitar la seguridad a nivel de fila en una tabla.
6.3. Crear una política RLS ( create_rls_policy
)
Crear una política de seguridad a nivel de fila.
6.4. Editar la política RLS ( edit_rls_policy
)
Editar una política de seguridad de nivel de fila existente.
6.5. Política de eliminación de RLS ( drop_rls_policy
)
Eliminar una política de seguridad a nivel de fila.
6.6. Obtener políticas de RLS ( get_rls_policies
)
Obtenga políticas de seguridad a nivel de fila.
7. Desencadenantes
7.1. Obtener disparadores ( get_triggers
)
Obtenga información sobre los desencadenadores de PostgreSQL.
7.2. Crear disparador ( create_trigger
)
Crear un disparador de PostgreSQL.
7.3. Disparador de caída ( drop_trigger
)
Eliminar un disparador de PostgreSQL.
7.4. Establecer el estado del disparador ( set_trigger_state
)
Habilitar o deshabilitar un disparador de PostgreSQL.
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
Instalación mediante herrería
Para instalar postgresql-mcp-server para Claude Desktop automáticamente a través de Smithery :
Instalación manual
- Clonar el repositorio
- Instalar dependencias:
- Construir el servidor:
- Agregar al archivo de configuración de MCP (por ejemplo, en la configuración de su IDE o en una configuración global de MCP):Hay algunas formas de configurar la cadena de conexión para el servidor, con el siguiente orden de precedencia:
- Argumento específico de la herramienta : si se proporciona una
connectionString
directamente en los argumentos al llamar a una herramienta específica, ese valor se utilizará para esa llamada. - Argumento CLI : puede proporcionar una cadena de conexión predeterminada al iniciar el servidor utilizando el argumento
-cs
o--connection-string
. - Variable de entorno : si no se proporciona ninguna de las anteriores, el servidor buscará una variable de entorno
POSTGRES_CONNECTION_STRING
.
Si no se encuentra ninguna cadena de conexión a través de ninguno de estos métodos, las herramientas que requieren una conexión a la base de datos fallarán.
Ejemplo de uso del argumento CLI en la configuración de MCP:
Ejemplo que utiliza una variable de entorno (si no se utiliza el argumento CLI):
El uso del argumento CLI
--connection-string
o la variable de entornoPOSTGRES_CONNECTION_STRING
hace que el argumentoconnectionString
sea opcional para la mayoría de las llamadas de herramientas. - Argumento específico de la herramienta : si se proporciona una
Configuración de herramientas
El servidor admite el filtrado de qué herramientas están habilitadas a través de un archivo de configuración JSON externo.
- Opción CLI : utilice
-tc <path>
o--tools-config <path>
para especificar la ruta a su archivo de configuración de herramientas. - Formato de archivo : el archivo JSON debe contener un objeto con una clave
enabledTools
, que contiene una matriz de cadenas de nombres de herramientas.Ejemplomcp-tools.json
: - Comportamiento :
- Si se proporciona el archivo de configuración y es válido, solo se habilitarán las herramientas enumeradas.
- Si no se proporciona el archivo, no es válido o no se puede leer, todas las herramientas se habilitarán de forma predeterminada.
- El servidor registrará qué herramientas están habilitadas en función de esta configuración.
Desarrollo
npm run dev
: inicia el servidor de desarrollo con recarga activanpm run lint
- Ejecutar ESLintnpm test
- Ejecutar pruebas (si está configurado)
Consideraciones de seguridad
- Seguridad de la conexión
- El servidor determina la cadena de conexión a la base de datos según la siguiente precedencia:
connectionString
proporcionada directamente en los argumentos de una herramienta.--connection-string
Argumento CLI utilizado al iniciar el servidor.- Variable de entorno
POSTGRES_CONNECTION_STRING
.
- Asegúrese de que las cadenas de conexión (especialmente aquellas con credenciales) se administren de forma segura.
- Utiliza agrupación de conexiones a través de
pg
(anteriormente@vercel/postgres
). - Valida cadenas de conexión.
- Admite conexiones SSL/TLS (configuración mediante cadena de conexión).
- El servidor determina la cadena de conexión a la base de datos según la siguiente precedencia:
- Seguridad de consultas
- Ejecuta operaciones predefinidas; evita la ejecución arbitraria de SQL siempre que sea posible.
- Utiliza consultas parametrizadas cuando sea aplicable para evitar la inyección de SQL.
- Registra operaciones para auditoría.
- Autenticación
- Se basa en los mecanismos de autenticación de PostgreSQL a través de la cadena de conexión.
- Administre de forma segura las credenciales de su base de datos. Si es posible, no las codifique en las solicitudes de cliente; utilice preferentemente la opción CLI
--connection-string
o la variable de entornoPOSTGRES_CONNECTION_STRING
al configurar el servidor.
Mejores prácticas
- Configure la cadena de conexión de base de datos predeterminada de forma segura utilizando la opción CLI
--connection-string
o la variable de entornoPOSTGRES_CONNECTION_STRING
. - Si una herramienta necesita conectarse a una base de datos diferente a la predeterminada, proporcione la
connectionString
directamente en los argumentos de esa herramienta. - Utilice siempre cadenas de conexión seguras con credenciales adecuadas, preferiblemente configuradas a través de la variable de entorno
POSTGRES_CONNECTION_STRING
. - Siga las recomendaciones de seguridad de producción para entornos sensibles.
- Supervise y analice periódicamente el rendimiento de la base de datos utilizando la herramienta
monitor_database
. - Mantenga la versión de PostgreSQL actualizada.
- Implementar estrategias de backup adecuadas de forma independiente.
- Utilice la agrupación de conexiones para una mejor gestión de recursos (gestionada internamente).
- Implementar el manejo y registro de errores adecuados.
- Auditorías y actualizaciones de seguridad periódicas.
Manejo de errores
El servidor implementa el manejo de errores para:
- Fallos de conexión
- Errores de consulta
- Entradas no válidas
- Problemas de permisos
Los errores se devuelven en el formato de error MCP estándar.
Contribuyendo
- Bifurcar el repositorio
- Crear una rama de características
- Confirme sus cambios
- Empujar hacia la rama
- 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.
This server cannot be installed
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.
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.
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server that provides read-only access to PostgreSQL databases with enhanced multi-schema support, allowing LLMs to inspect database schemas across multiple namespaces and execute read-only queries while maintaining schema isolation.Last updated -132JavaScriptMIT License
- -securityFlicense-qualityA Model Context Protocol server providing both read and write access to PostgreSQL databases, enabling LLMs to query data, modify records, and manage database schemas.Last updated -4JavaScript
- -securityFlicense-qualityA Model Context Protocol server that enables performing PostgreSQL database operations (create, read, update, delete) on User and Post entities through MCP tools.Last updated -TypeScript
- -securityFlicense-qualityA Model Context Protocol server that enables interaction with PostgreSQL databases to list tables, retrieve schemas, and execute read-only SQL queries.Last updated -16,948JavaScript