Postgres MCP Server
Proporciona acceso seguro a bases de datos PostgreSQL utilizando el ORM Kysely.
GitHub
1
Prueba este MCPPatrocinadoDocumentación
Servidor MCP de Postgres
Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona acceso seguro a bases de datos PostgreSQL a través de Kysely ORM. Este servidor permite que Claude Desktop interactúe con bases de datos PostgreSQL usando lenguaje natural.
Características
- Herramientas MCP: Ejecución de consultas, listado de tablas, inspección de esquemas e información de restricciones
- Seguridad de tipos: Soporte completo de TypeScript con entradas/salidas tipadas
- Agrupación de conexiones: Límites de conexión configurables con tiempo de espera de inactividad
- Manejo de errores: Mensajes de error claros para problemas de conexión y consultas
- Seguridad: Consultas parametrizadas para prevenir inyección SQL
Instalación
npx postgres-mcp-server
Configuración
Crea un archivo .env con tus credenciales de base de datos:
DB_HOST=127.0.0.1
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=your_password_here
DB_NAME=postgres
DB_SSL=true
Herramientas Disponibles
| Herramienta | Descripción | Parámetros Requeridos | Parámetros Opcionales |
|---|---|---|---|
query | Ejecuta consultas SQL con soporte de paginación | sql (string) | pageSize (1-500), offset (number), parameters (array) |
describe_table | Obtiene la estructura de la tabla y detalles de columnas | schema (string), table (string) | - |
list_tables | Lista todas las tablas en un esquema | schema (string) | - |
list_schemas | Lista todos los esquemas en la base de datos | - | includeSystemSchemas (boolean) |
get_constraints | Obtiene restricciones de tabla (PK, FK, etc.) | schema (string), table (string) | - |
list_indexes | Lista índices para una tabla o esquema | schema (string) | table (string) |
list_views | Lista vistas en un esquema | schema (string) | - |
list_functions | Lista funciones y procedimientos | schema (string) | - |
explain_query | Obtiene el plan de ejecución de consultas | sql (string) | analyze (boolean), format (text/json/xml/yaml) |
get_table_stats | Obtiene el tamaño de la tabla y estadísticas | schema (string) | table (string) |
Características Clave
- Paginación: La herramienta de consulta soporta hasta 500 filas por página con manejo automático de LIMIT/OFFSET
- Seguridad: Las consultas parametrizadas previenen la inyección SQL, modo READ_ONLY por defecto
- Seguridad de tipos: Soporte completo de TypeScript con validación de esquema Zod
Configuración de Claude Desktop
Agrega este servidor a tu archivo de configuración de Claude Desktop:
Edita claude_desktop_config.json:
{
"mcpServers": {
"postgres-mcp-server": {
"command": "npx",
"args": ["postgres-mcp-server"],
"env": {
"DB_HOST": "127.0.0.1",
"DB_PORT": "5432",
"DB_USER": "postgres",
"DB_PASSWORD": "your_password_here",
"DB_NAME": "your_database_name",
"DB_SSL": "true"
}
}
}
}
Ubicaciones de Archivos de Configuración
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Desarrollo
# Clone and install dependencies
git clone https://github.com/abiswas97/postgres-mcp-server.git
cd postgres-mcp-server
npm install
# Run in development mode with hot reload
npm run dev
# Build for production
npm run build
# Run tests
npm run test
# Run specific test suites
npm run test:unit
npm run test:integration
Variables de Entorno
| Variable | Default | Descripción |
|---|---|---|
DB_HOST | 127.0.0.1 | Host de PostgreSQL |
DB_PORT | 5432 | Puerto de PostgreSQL |
DB_USER | postgres | Usuario de la base de datos |
DB_PASSWORD | requerido | Contraseña de la base de datos |
DB_NAME | postgres | Nombre de la base de datos |
DB_SSL | true | Habilitar conexión SSL |
READ_ONLY | true | Restringir a consultas SELECT/WITH/EXPLAIN |
QUERY_TIMEOUT | 30000 | Tiempo de espera de consulta en milisegundos |
MAX_PAGE_SIZE | 500 | Máximo de filas por página |
DEFAULT_PAGE_SIZE | 100 | Tamaño de página predeterminado cuando no se especifica |
Licencia
ISC