mcp-postgres
mcp-postgres
Servidor MCP para PostgreSQL. Proporciona a los agentes de IA inteligencia de esquemas, ejecución de consultas y herramientas de DBA, a través del Model Context Protocol.
A diferencia de los servidores MCP de bases de datos genéricos, mcp-postgres es nativo de Postgres. Extrae comentarios de tablas/columnas, entiende las vistas de catálogo específicas de Postgres, proporciona análisis de índices y se entrega con niveles de acceso configurables para que no otorgues a un LLM acceso ilimitado a la base de datos.
Características
Inteligencia de esquemas
Listar esquemas, tablas y vistas con tamaños y recuentos de filas
Descripciones completas de tablas: columnas, tipos, restricciones, índices, claves foráneas
Extrae metadatos
COMMENT ON: proporciona al LLM contexto semántico sobre el significado de las columnasBuscar objetos por nombre o comentario en toda la base de datos
Ejecución de consultas
Herramienta
queryde solo lectura con límite automático de filasHerramienta
executecon capacidad de escritura limitada por nivel de accesoEXPLAIN ANALYZEcon salida legible para humanos
Herramientas de DBA
Estadísticas de tablas: tuplas activas/muertas, porcentaje de bloat, historial de vacuum, patrones de escaneo
Análisis de índices: estadísticas de uso, detección de índices no utilizados, sugerencias de índices faltantes
Salud de la base de datos: conexiones, ratio de aciertos de caché, consultas de larga duración, rendimiento
Seguridad
Cuatro niveles de acceso:
readonly,readwrite,admin,unrestrictedClasificación de sentencias SQL (SELECT, DML, DDL, admin) con cumplimiento
Registro de auditoría en stderr (JSON, una entrada por consulta)
Inicio rápido
npx mcp-postgres --connection-string "postgres://user:pass@localhost:5432/mydb"O con variables de entorno:
DATABASE_URL="postgres://user:pass@localhost:5432/mydb" npx mcp-postgresClaude Desktop
Añadir a tu claude_desktop_config.json:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"mcp-postgres",
"--connection-string",
"postgres://user:pass@localhost:5432/mydb"
]
}
}
}Claude Code
Añadir al .mcp.json de tu proyecto:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "mcp-postgres"],
"env": {
"DATABASE_URL": "postgres://user:pass@localhost:5432/mydb"
}
}
}
}Herramientas
Herramienta | Descripción | Acceso |
| Listar esquemas con recuentos de tablas y tamaños | readonly |
| Listar tablas con comentarios, recuentos de filas, tamaños | readonly |
| Descripción completa de tabla con columnas, índices, FKs, comentarios | readonly |
| Buscar objetos por nombre o comentario | readonly |
| Ejecutar consultas SELECT | readonly |
| Ejecutar INSERT/UPDATE/DELETE/CREATE/etc | varía |
| EXPLAIN (ANALYZE) con salida legible | readonly* |
| Estadísticas de tabla, bloat, información de vacuum | readonly |
| Uso de índices, índices no utilizados, sugerencias de índices faltantes | readonly |
| Conexiones, ratio de caché, consultas largas, bloat | readonly |
*explain_query con analyze=true ejecuta la consulta, por lo que respeta el nivel de acceso de la sentencia.
Recursos
URI | Descripción |
| DDL completo para un esquema (sentencias CREATE TABLE con comentarios) |
| Extensiones de PostgreSQL instaladas |
Prompts
Prompt | Descripción |
| Exploración guiada de la base de datos: esquemas, tablas, relaciones |
| Analizar una consulta lenta con EXPLAIN, índices y recomendaciones |
| Evaluación integral de la salud de la base de datos |
Configuración
Opciones de CLI
--connection-string PostgreSQL connection URL
--access-level readonly|readwrite|admin|unrestricted (default: readonly)
--row-limit Max rows returned per query (default: 500)
--schema Default schema filter (default: public)
--audit Enable query audit logging to stderrVariables de entorno
Variable | Descripción |
| URL de conexión a PostgreSQL |
| URL de conexión alternativa |
| Anulación del nivel de acceso |
| Anulación del límite de filas |
Niveles de acceso
Nivel | SELECT | INSERT/UPDATE/DELETE | CREATE/ALTER/DROP | TRUNCATE/DROP DATABASE |
| sí | no | no | no |
| sí | sí | no | no |
| sí | sí | sí | no |
| sí | sí | sí | sí |
El valor predeterminado es readonly. Utiliza el nivel mínimo necesario.
Registro de auditoría
Habilitar con --audit. Registra cada invocación de herramienta en stderr como JSON:
{"timestamp":"2026-04-03T12:00:00.000Z","tool":"query","sql":"SELECT * FROM users","statementType":"select","accessLevel":"readonly","allowed":true,"durationMs":12,"rowCount":42}Redirige stderr a un archivo para capturarlo: mcp-postgres --audit 2>audit.log
Arquitectura
src/
├── index.ts Entry point and CLI
├── server.ts MCP server setup
├── config.ts Configuration parsing
├── db/
│ ├── pool.ts Connection pool management
│ └── query.ts Query execution with timing
├── tools/
│ ├── schema.ts Schema exploration tools
│ ├── query.ts Query execution tools
│ └── performance.ts DBA and health tools
├── resources/
│ └── schema.ts Schema DDL resources
├── prompts/
│ └── index.ts Prompt templates
└── safety/
├── classifier.ts SQL statement classification
├── access.ts Access level enforcement
└── audit.ts Audit loggingDesarrollo
npm install
npm test # run tests
npm run build # compile TypeScript
npm run dev -- --connection-string "postgres://..." # run in dev modeLicencia
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/divinedev111/mcp-postgres'
If you have feedback or need assistance with the MCP directory API, please join our Discord server