mcp-postgres-query
v1.0.1
Published
MCP server to query any PostgreSQL database from Claude. Schema explorer, safe read queries, explain plans.
Maintainers
Readme
mcp-postgres-query
MCP server that connects Claude to any PostgreSQL database. Explore schemas, run queries, analyze performance — all through natural conversation.
Built by THRYXAGI.
Install
npm install -g mcp-postgres-queryOr run directly:
npx mcp-postgres-queryConfiguration
Set the DATABASE_URL environment variable with your PostgreSQL connection string:
DATABASE_URL=postgresql://user:password@localhost:5432/mydbClaude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "mcp-postgres-query"],
"env": {
"DATABASE_URL": "postgresql://user:password@localhost:5432/mydb"
}
}
}
}Claude Code
Add to your .mcp.json:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "mcp-postgres-query"],
"env": {
"DATABASE_URL": "postgresql://user:password@localhost:5432/mydb"
}
}
}
}Tools (7)
| Tool | Description | Params |
|------|-------------|--------|
| query | Execute a SQL query | sql (string), params (optional array) |
| list_tables | List all tables in the public schema | none |
| describe_table | Get column details (type, nullable, default) | table_name |
| list_indexes | List indexes on a table | table_name |
| explain_query | Get EXPLAIN ANALYZE plan (safe, rolls back) | sql |
| get_table_stats | Row counts and table size | table_name |
| get_db_info | Database overview (version, size, table count) | none |
Example Usage
Once connected, ask Claude things like:
- "What tables are in this database?"
- "Describe the users table"
- "SELECT * FROM orders WHERE created_at > '2024-01-01' LIMIT 10"
- "Explain this slow query: SELECT ..."
- "How big is the events table?"
Security Notes
- The
querytool executes arbitrary SQL. Connect with a read-only database user for safety. - The
explain_querytool wraps EXPLAIN ANALYZE in a transaction that always rolls back, so it never modifies data. - Parameterized queries are supported via the
paramsargument to prevent SQL injection. - Never expose
DATABASE_URLin public repositories or logs.
License
MIT
