mcp postgres server
Enables AI models to interact with PostgreSQL databases through a standardized interface, supporting operations like queries, table manipulation, and schema inspection.
Enables AI models to interact with PostgreSQL databases through a standardized interface, supporting operations like queries, table manipulation, and schema inspection.
A Model Context Protocol server that provides PostgreSQL database operations. This server enables AI models to interact with PostgreSQL databases through a standardized interface.
npm install mcp-postgres-server
Or run directly with:
npx mcp-postgres-server
The server requires the following environment variables:
{
"mcpServers": {
"postgres": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-postgres-server"],
"env": {
"PG_HOST": "your_host",
"PG_PORT": "5432",
"PG_USER": "your_user",
"PG_PASSWORD": "your_password",
"PG_DATABASE": "your_database"
}
}
}
}
Establish connection to PostgreSQL database using provided credentials.
use_mcp_tool({
server_name: "postgres",
tool_name: "connect_db",
arguments: {
host: "localhost",
port: 5432,
user: "your_user",
password: "your_password",
database: "your_database"
}
});
Execute SELECT queries with optional prepared statement parameters. Supports both PostgreSQL-style ($1, $2) and MySQL-style (?) parameter placeholders.
use_mcp_tool({
server_name: "postgres",
tool_name: "query",
arguments: {
sql: "SELECT * FROM users WHERE id = $1",
params: [1]
}
});
Execute INSERT, UPDATE, or DELETE queries with optional prepared statement parameters. Supports both PostgreSQL-style ($1, $2) and MySQL-style (?) parameter placeholders.
use_mcp_tool({
server_name: "postgres",
tool_name: "execute",
arguments: {
sql: "INSERT INTO users (name, email) VALUES ($1, $2)",
params: ["John Doe", "[email protected]"]
}
});
List all schemas in the connected database.
use_mcp_tool({
server_name: "postgres",
tool_name: "list_schemas",
arguments: {}
});
List tables in the connected database. Accepts an optional schema parameter (defaults to 'public').
// List tables in the 'public' schema (default)
use_mcp_tool({
server_name: "postgres",
tool_name: "list_tables",
arguments: {}
});
// List tables in a specific schema
use_mcp_tool({
server_name: "postgres",
tool_name: "list_tables",
arguments: {
schema: "my_schema"
}
});
Get the structure of a specific table. Accepts an optional schema parameter (defaults to 'public').
// Describe a table in the 'public' schema (default)
use_mcp_tool({
server_name: "postgres",
tool_name: "describe_table",
arguments: {
table: "users"
}
});
// Describe a table in a specific schema
use_mcp_tool({
server_name: "postgres",
tool_name: "describe_table",
arguments: {
table: "users",
schema: "my_schema"
}
});
The server provides detailed error messages for common issues:
MIT
[
{
"description": "Connect to PostgreSQL database. NOTE: Default connection exists - only use when requested or if other commands fail",
"inputSchema": {
"properties": {
"database": {
"description": "Database name",
"type": "string"
},
"host": {
"description": "Database host",
"type": "string"
},
"password": {
"description": "Database password",
"type": "string"
},
"port": {
"description": "Database port (default: 5432)",
"type": "number"
},
"user": {
"description": "Database user",
"type": "string"
}
},
"required": [
"host",
"user",
"password",
"database"
],
"type": "object"
},
"name": "connect_db"
},
{
"description": "Execute a SELECT query",
"inputSchema": {
"properties": {
"params": {
"description": "Query parameters (optional)",
"items": {
"type": [
"string",
"number",
"boolean",
"null"
]
},
"type": "array"
},
"sql": {
"description": "SQL SELECT query (use $1, $2, etc. for parameters)",
"type": "string"
}
},
"required": [
"sql"
],
"type": "object"
},
"name": "query"
},
{
"description": "Execute an INSERT, UPDATE, or DELETE query",
"inputSchema": {
"properties": {
"params": {
"description": "Query parameters (optional)",
"items": {
"type": [
"string",
"number",
"boolean",
"null"
]
},
"type": "array"
},
"sql": {
"description": "SQL query (INSERT, UPDATE, DELETE) (use $1, $2, etc. for parameters)",
"type": "string"
}
},
"required": [
"sql"
],
"type": "object"
},
"name": "execute"
},
{
"description": "List all tables in the database",
"inputSchema": {
"properties": {},
"required": [],
"type": "object"
},
"name": "list_tables"
},
{
"description": "Get table structure",
"inputSchema": {
"properties": {
"table": {
"description": "Table name",
"type": "string"
}
},
"required": [
"table"
],
"type": "object"
},
"name": "describe_table"
}
]