MCP PostgreSQL
About
Servidor Model Context Protocol que expone introspección y consulta read-only sobre PostgreSQL
Details
- Author
- cuevacelis
- Categories
- Developer Tools
Jump to
Setup
Install MCP PostgreSQL in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/cuevacelis/mcp_postgres
Follow the installation instructions in the repository README, then restart your MCP client.
- 13 toolsde introspección, consulta, EXPLAIN y estadísticas de almacenamiento
- 2 resourcesnavegables (postgres://schema/{schema},postgres://table/{schema}/{table})
- 4 promptslistos para usar (audit-table,find-tables,explain-foreign-keys,profile-slow-query)
- Read-only reforzado:SET TRANSACTION READ ONLY, statement timeout, cap de filas, single-statement, validación de keywords
- Schema allow-listvíaDB_SCHEMAS
- Empaquetable comoMCPBpara Claude Desktop (pnpm run mcpb:pack)
- Quickstart
- Configuración
- Integración con Claude Code
- Integración con Claude Desktop (MCPB)
- Tools
- Resources
- Prompts
- Seguridad
- Estructura del proyecto
- Desarrollo
- Troubleshooting
pnpm install pnpm run build cp .env.example .env # edita tus credenciales npx tsx test-connection.ts # verifica conectividad
Luego registra el servidor en Claude Code:
claude mcp add --transport stdio postgres \ -- node /ruta/absoluta/al/proyecto/dist/index.js
Copia.env.examplea.envy edita los valores:
DB_HOST=localhost DB_PORT=5432 DB_NAME=nombre_base_datos DB_USER=usuario DB_PASSWORD=contraseña DB_SSL=false # true para AWS RDS / Supabase / Neon DB_SSL_REJECT_UNAUTHORIZED=true # mantener true en producción DB_SCHEMAS=public # esquemas permitidos, separados por coma. Vacío = todos los no-sistema DEFAULT_LIMIT=5 # LIMIT por defecto en queries (máx 100)
Hay varios archivos.env.<entorno>para alternar entre bases de datos sin reescribir credenciales:
cp .env.ecosistema-prd .env # producción cp .env.ecosistema-tst .env # testing cp .env.db-admision-tst .env # admisión testing # ...etc.
Recomendación: usa unrol de PostgreSQL de solo lectura(CREATE ROLE ... LOGIN; GRANT USAGE ON SCHEMA ... TO ...; GRANT SELECT ON ALL TABLES IN SCHEMA ... TO ...;). El servidor refuerza READ ONLY, pero la defensa en profundidad importa.
Pasando credenciales como variables de entorno:
claude mcp add \ --transport stdio \ --env DB_HOST=localhost \ --env DB_PORT=5432 \ --env DB_NAME=mi_base \ --env DB_USER=mi_user \ --env DB_PASSWORD=mi_password \ --env DB_SCHEMAS=public \ postgres \ -- node /ruta/absoluta/al/proyecto/dist/index.js
Tomando el.envdel propio repo (omite los--env):
claude mcp add --transport stdio postgres \ -- node /ruta/absoluta/al/proyecto/dist/index.js
Scope global (disponible en todos los proyectos):
claude mcp add --scope user --transport stdio postgres \ -- node /ruta/absoluta/al/proyecto/dist/index.js
{ "mcpServers": { "postgres": { "command": "node", "args": ["/ruta/absoluta/al/proyecto/dist/index.js"], "env": { "DB_HOST": "...", "DB_NAME": "...", "DB_USER": "...", "DB_PASSWORD": "...", "DB_SCHEMAS": "public" } } } }
El proyecto incluye unmanifest.jsonlisto para empaquetar comoMCPB(Claude Desktop Bundle).
pnpm run build pnpm run mcpb:pack # genera mcp_postgres.mcpb en la raíz del repo
El.mcpbes unartefacto de build(está en.gitignore) — se regenera cuando lo necesites. No lo subas al repo.
Uso personal (instalarlo en tu Claude Desktop):
- Abre Claude Desktop →Settings→Extensions
- Arrastramcp_postgres.mcpba la ventana (o usa "Install extension")
- Claude Desktop te pedirá los datos de conexión (host, user, password, etc.) mediante el formulario definido enuser_configdelmanifest.json— el campodb_passwordestá marcado comosensitive
- Una vez instalado, puedes borrar el archivo.mcpblocal
Distribución privada (compartir con tu equipo):
- Súbelo como release asset en GitHub:gh release create v1.1.0 mcp_postgres.mcpb
- O distribúyelo por un storage interno (S3, Drive, etc.) y comparte el link
- Tus compañeros descargan el.mcpby lo arrastran a Claude Desktop
Distribución pública:publícalo en el MCP Bundle Directory cuando esté disponible. Mientras tanto, GitHub Releases es el canal estándar.
Si no lo vas a instalar ahora:simplemente bórralo (rm mcp_postgres.mcpb) y regenéralo conpnpm run mcpb:packcuando lo necesites.
Todas las tools llevanreadOnlyHint: true,destructiveHint: falseyoutputSchemaZod parastructuredContent. Los errores recuperables se devuelven como{ isError: true, content }, no como excepciones de protocolo.
Las tools paginadas (postgres_list_) aceptanlimit/offsety devuelvenhas_more/next_offsetpara iterar.
URIs navegables que el host puede consumir como contexto:
Slash commands disponibles en Claude Code (/mcp__postgres__<prompt>):
/mcp__postgres__audit-table schema=public table=users /mcp__postgres__profile-slow-query sql="SELECT FROM orders WHERE customer_id IN (SELECT id FROM customers WHERE country='PE')"
- Filtrado de esquemas:DB_SCHEMASrestringe acceso a nivel de aplicación; ademáspostgres_execute_queryajustasearch_pathlocal por consulta.
- Query table seguro:postgres_query_tableusa columnas/filtros estructurados con parámetros SQL — nunca concatena strings.
- Read-only reforzado:postgres_execute_queryypostgres_explain_querycorren bajoSET TRANSACTION READ ONLYconstatement_timeout = 30s.
- Single-statement: rechaza queries con;interno y palabras clave de escritura (INSERT/UPDATE/DELETE/DROP/ALTER/CREATE/TRUNCATE/GRANT/REVOKE/EXECUTE/COPY) validadas por regex con\b.
- Cap de filas: máximo 100 filas por consulta; se inyecta o clampa elLIMITautomáticamente.
- TLS seguro por defecto: cuandoDB_SSL=true,DB_SSL_REJECT_UNAUTHORIZED=truepor defecto.
- Timeouts: 10 s para establecer conexión, 30 s para statement.
- Defensa en profundidad: aun así,usa un rol de PostgreSQL de solo lecturaen elDB_USER.
src/ ├── index.ts # Bootstrap — conecta transport y verifica DB ├── server.ts # createServer() — instancia McpServer, registra tools/resources/prompts ├── db/ │ └── pool.ts # Pool, allowedSchemas, defaultLimit, isSchemaAllowed ├── tools/ │ ├── introspection.ts # list_schemas / list_tables / describe_table / list_views / search_columns │ ├── objects.ts # list_functions / list_triggers / get__definition │ ├── query.ts # query_table / execute_query │ └── analysis.ts # explain_query / get_table_stats ├── resources/ │ └── index.ts # postgres://schema/ y postgres://table/* ├── prompts/ │ └── index.ts # audit-table / find-tables / explain-foreign-keys / profile-slow-query └── utils/ └── response.ts # formatResult(), assertSchemaAllowed(), CHARACTER_LIMIT
pnpm run build # Compila TypeScript → dist/ pnpm run dev # Watch mode pnpm start # Ejecuta el servidor compilado pnpm run mcpb:pack # Empaqueta como .mcpb para Claude Desktop
Tras editar cualquier archivo ensrc/, ejecutapnpm run buildantes de probar cambios. El binario que Claude Code/Desktop lanza esdist/index.js.
Error: schema "X" is not allowed— añadeXaDB_SCHEMAS(o déjalo vacío para permitir todos los no-sistema).
statement timeout— la query supera 30 s. Usapostgres_explain_queryconanalyze=falseprimero, o filtra por una columna indexada.
self-signed certificateen RDS / Supabase— estableceDB_SSL=true. Solo bajaDB_SSL_REJECT_UNAUTHORIZED=falsesi el proveedor usa cert auto-firmado.
Claude Code no ve las tools— verifica conclaude mcp listquepostgresaparece comoconnected. Si no,claude mcp get postgreste muestra el comando registrado; comprueba que la ruta absoluta adist/index.jses correcta y que el build está actualizado.
Query devuelvehas_more: true— vuelve a llamar la tool pasandooffset = next_offset. Las listas están paginadas para no inflar el contexto.
This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.
Create crafted UI components inspired by the best 21st.dev design engineers.
Bring agent evaluations, observability, and synthetic test set generation directly into your IDE for free with Galileo's new MCP server
An MCP server to help AI assistants to answer questions and generate AccelByte Extend SDK code more effectively .
MCP server for AI Diagram Maker — generate beautiful software engineering diagrams directly inside Cursor, Claude Desktop, Claude Code, or any MCP-compatible AI agent
ALAPI MCP Tools,Call hundreds of API interfaces via MCP
AI-powered SVG animation generator that transforms static files into animated SVG components using the Allyson platform
MCP server that gives AI assistants on-demand access to 1,500+ amCharts docs, ~300 code examples, and 1000+ class API references.
APIMatic MCP Server is used to validate OpenAPI specifications using APIMatic. The server processes OpenAPI files and returns validation summaries by leveraging APIMatic’s API.
One shared context layer for AI agents and humans — live API specs, DB schemas, and versioned contracts across repos so every agent and teammate works from the same source of truth.
Build and deploy full-stack Next.js apps with 98 tools for React, AWS, and MongoDB
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





