postgres-mcp
# Getting started
### Setup
Create `.env` file with your postgres db vars
```
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_NAME": "<table>",
"DB_USER": "<user>",
"DB_PASSWORD": "<password>"
```
1. ``` npm i ```
2. ``` npm run build ```
3. Ensure your server script is executable:
```chmod +x ./dist/server.js```
4. Ensure the shebang line at the top of your compiled server.js:
```#!/usr/bin/env node```
### Setup cursor mcp server:
In cursor go to:
Settings > MCP Servers
```
{
"mcpServers": {
"postgres": {
"command": "node",
"args": ["./dist/server.js"],
"env": {
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_NAME": "<db_name>",
"DB_USER": "<db_user>",
"DB_PASSWORD": "<password>"
}
}
}
}
```
To test run in terminal:
```
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | node dist/server.js
```
Once you add it in cursor settings, restart cursor and then reopen and make sure it loads
## To chat
Start a new chat and tell it to use your MCP server
>Give me the first record in the table
>
>Do not read my local code files - use the database MCP server instead.TDQS
Scored across 3 tools
The three tools have clearly distinct purposes: listing tables, describing a table's schema, and executing arbitrary SQL. There is no overlap in their intended use, making selection unambiguous.
All tools follow a consistent snake_case verb_noun pattern (describe_table, query_database, list_tables). This is predictable and readable.
Three tools is minimal but appropriate for a database query interface; each tool serves a distinct, necessary function. The count is slightly low but well-scoped.
The set covers the core workflow of exploring and querying a database: list tables, inspect schema, and run SQL (which can handle reads and writes). Some auxiliary functions like listing schemas or databases are absent but can be achieved via query_database.