easy-pg-admin-mcp
High-privilege PostgreSQL admin MCP server for database and role/grant management.
README
easy-pg-admin-mcp
High-privilege PostgreSQL admin MCP server for database and role/grant management.
This project is a DBA-style tool. It does not provide raw SQL execution and does not manage tables, schemas, views, indexes, triggers, or functions. Use easy-pg-mcp for data access and schema/table operations.
Features
- List, create, inspect, and change owners for databases
- List, create, update, and drop PostgreSQL roles
- Grant and revoke role memberships
- Grant and revoke database-level privileges
- Protect destructive actions with short-lived confirmation tokens
Available Tools
| Tool | Description |
|---|---|
pg_list_databases |
List databases in the current PostgreSQL instance |
pg_create_database |
Create a PostgreSQL database |
pg_describe_database |
Inspect a PostgreSQL database |
pg_alter_database_owner |
Change a database owner |
pg_drop_database |
Request database deletion and return a confirmation token |
pg_list_roles |
List PostgreSQL roles |
pg_create_role |
Create a PostgreSQL role without SUPERUSER support |
pg_alter_role_password |
Change a role password |
pg_alter_role_attributes |
Change supported role attributes |
pg_drop_role |
Request role deletion and return a confirmation token |
pg_grant_role |
Grant a role to another role |
pg_revoke_role |
Revoke a role from another role |
pg_show_role_memberships |
Show memberships for a role |
pg_grant_privileges |
Grant database-level privileges to a role |
pg_revoke_privileges |
Revoke database-level privileges from a role |
pg_show_grants |
Show database-level grants for a role |
pg_confirm_task |
Confirm and execute a destructive action token |
Safety
- No raw SQL passthrough
- No schema, table, view, index, trigger, or function management
- SUPERUSER role creation and modification are not supported
pg_drop_databaseandpg_drop_rolerequirepg_confirm_taskpg_drop_roledoes not supportREASSIGN OWNEDorDROP OWNED- Confirmation tokens are random, single-use, and expire quickly
Configuration
Use environment variables, matching the rest of the easy-*-mcp family.
| Variable | Required | Default | Description |
|---|---|---|---|
PG_CONNECTION_STRING |
Conditional | - | PostgreSQL connection string. Takes precedence when provided |
PG_HOST |
Conditional | - | PostgreSQL host when no connection string is provided |
PG_PORT |
No | 5432 |
PostgreSQL port |
PG_USER |
Conditional | - | PostgreSQL admin role name when no connection string is provided |
PG_PASSWORD |
No | - | PostgreSQL password |
PG_DATABASE |
Conditional | - | Default database used for the admin connection |
PG_CONNECTION_LIMIT |
No | 10 |
Maximum number of active pool connections |
PG_IDLE_TIMEOUT |
No | 30000 |
Idle connection timeout in milliseconds |
PG_ENABLE_KEEP_ALIVE |
No | true |
Whether TCP keep-alive is enabled |
PG_KEEP_ALIVE_INITIAL_DELAY |
No | 0 |
Initial TCP keep-alive delay in milliseconds |
PG_SSL |
No | false |
Use true, false, or no-verify |
PG_ADMIN_TOKEN_TTL_SECONDS |
No | 120 |
Confirmation token lifetime in seconds |
Example
PG_HOST=localhost
PG_PORT=5432
PG_USER=postgres
PG_PASSWORD=your_password
PG_DATABASE=postgres
PG_SSL=false
PG_ADMIN_TOKEN_TTL_SECONDS=120
Claude Desktop Example
{
"mcpServers": {
"easy-pg-admin-mcp": {
"command": "npx",
"args": ["-y", "easy-pg-admin-mcp"],
"env": {
"PG_HOST": "localhost",
"PG_PORT": "5432",
"PG_USER": "postgres",
"PG_PASSWORD": "your_password",
"PG_DATABASE": "postgres",
"PG_SSL": "false",
"PG_ADMIN_TOKEN_TTL_SECONDS": "120"
}
}
}
}
Codex config.toml Example
[mcp_servers.easy-pg-admin-mcp]
args = ["-y", "easy-pg-admin-mcp"]
command = "npx"
enabled = true
[mcp_servers.easy-pg-admin-mcp.env]
PG_HOST = "localhost"
PG_PORT = "5432"
PG_USER = "postgres"
PG_PASSWORD = "your_password"
PG_DATABASE = "postgres"
PG_SSL = "false"
PG_ADMIN_TOKEN_TTL_SECONDS = "120"
OpenCode opencode.jsonc Example
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"easy-pg-admin-mcp": {
"type": "local",
"command": ["npx", "-y", "easy-pg-admin-mcp"],
"enabled": true,
"environment": {
"PG_HOST": "localhost",
"PG_PORT": "5432",
"PG_USER": "postgres",
"PG_PASSWORD": "your_password",
"PG_DATABASE": "postgres",
"PG_SSL": "false",
"PG_ADMIN_TOKEN_TTL_SECONDS": "120",
},
},
},
}
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.