Gives the model full read and write access to PostgreSQL with transaction management and safety controls.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add postgres-full-access --env POSTGRES_CONNECTION_STRING='<POSTGRES_CONNECTION_STRING>' --env MAX_CONCURRENT_TRANSACTIONS='<MAX_CONCURRENT_TRANSACTIONS>' --env PG_STATEMENT_TIMEOUT_MS='<PG_STATEMENT_TIMEOUT_MS>' --env TRANSACTION_TIMEOUT_MS='<TRANSACTION_TIMEOUT_MS>' -- npx -y mcp-postgres-full-access '{{config.POSTGRES_CONNECTION_STRING}}'~/.codex/config.toml
[mcp_servers.postgres-full-access]
command = "npx"
args = ["-y", "mcp-postgres-full-access", "{{config.POSTGRES_CONNECTION_STRING}}"]
env = { POSTGRES_CONNECTION_STRING = "<POSTGRES_CONNECTION_STRING>", MAX_CONCURRENT_TRANSACTIONS = "<MAX_CONCURRENT_TRANSACTIONS>", PG_STATEMENT_TIMEOUT_MS = "<PG_STATEMENT_TIMEOUT_MS>", TRANSACTION_TIMEOUT_MS = "<TRANSACTION_TIMEOUT_MS>" }
# codex mcp add postgres-full-access --env POSTGRES_CONNECTION_STRING='<POSTGRES_CONNECTION_STRING>' --env MAX_CONCURRENT_TRANSACTIONS='<MAX_CONCURRENT_TRANSACTIONS>' --env PG_STATEMENT_TIMEOUT_MS='<PG_STATEMENT_TIMEOUT_MS>' --env TRANSACTION_TIMEOUT_MS='<TRANSACTION_TIMEOUT_MS>' -- npx -y mcp-postgres-full-access '{{config.POSTGRES_CONNECTION_STRING}}'~/.cursor/mcp.json
{
"mcpServers": {
"postgres-full-access": {
"command": "npx",
"args": [
"-y",
"mcp-postgres-full-access",
"{{config.POSTGRES_CONNECTION_STRING}}"
],
"env": {
"POSTGRES_CONNECTION_STRING": "<POSTGRES_CONNECTION_STRING>",
"MAX_CONCURRENT_TRANSACTIONS": "<MAX_CONCURRENT_TRANSACTIONS>",
"PG_STATEMENT_TIMEOUT_MS": "<PG_STATEMENT_TIMEOUT_MS>",
"TRANSACTION_TIMEOUT_MS": "<TRANSACTION_TIMEOUT_MS>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"postgres-full-access": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-postgres-full-access",
"{{config.POSTGRES_CONNECTION_STRING}}"
],
"env": {
"POSTGRES_CONNECTION_STRING": "<POSTGRES_CONNECTION_STRING>",
"MAX_CONCURRENT_TRANSACTIONS": "<MAX_CONCURRENT_TRANSACTIONS>",
"PG_STATEMENT_TIMEOUT_MS": "<PG_STATEMENT_TIMEOUT_MS>",
"TRANSACTION_TIMEOUT_MS": "<TRANSACTION_TIMEOUT_MS>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"postgres-full-access": {
"command": "npx",
"args": [
"-y",
"mcp-postgres-full-access",
"{{config.POSTGRES_CONNECTION_STRING}}"
],
"env": {
"POSTGRES_CONNECTION_STRING": "<POSTGRES_CONNECTION_STRING>",
"MAX_CONCURRENT_TRANSACTIONS": "<MAX_CONCURRENT_TRANSACTIONS>",
"PG_STATEMENT_TIMEOUT_MS": "<PG_STATEMENT_TIMEOUT_MS>",
"TRANSACTION_TIMEOUT_MS": "<TRANSACTION_TIMEOUT_MS>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"postgres-full-access": {
"command": "npx",
"args": [
"-y",
"mcp-postgres-full-access",
"{{config.POSTGRES_CONNECTION_STRING}}"
],
"env": {
"POSTGRES_CONNECTION_STRING": "<POSTGRES_CONNECTION_STRING>",
"MAX_CONCURRENT_TRANSACTIONS": "<MAX_CONCURRENT_TRANSACTIONS>",
"PG_STATEMENT_TIMEOUT_MS": "<PG_STATEMENT_TIMEOUT_MS>",
"TRANSACTION_TIMEOUT_MS": "<TRANSACTION_TIMEOUT_MS>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"postgres-full-access": {
"command": "npx",
"args": [
"-y",
"mcp-postgres-full-access",
"{{config.POSTGRES_CONNECTION_STRING}}"
],
"env": {
"POSTGRES_CONNECTION_STRING": "<POSTGRES_CONNECTION_STRING>",
"MAX_CONCURRENT_TRANSACTIONS": "<MAX_CONCURRENT_TRANSACTIONS>",
"PG_STATEMENT_TIMEOUT_MS": "<PG_STATEMENT_TIMEOUT_MS>",
"TRANSACTION_TIMEOUT_MS": "<TRANSACTION_TIMEOUT_MS>"
}
}
}
}Environment variables
POSTGRES_CONNECTION_STRINGMAX_CONCURRENT_TRANSACTIONSPG_STATEMENT_TIMEOUT_MSTRANSACTION_TIMEOUT_MS
Replace the placeholders with your own credentials and keep them out of version control.