Skip to main content
Glama
mattcat10

postgres-mcp

by mattcat10
README.md
# 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

A3.5/5.0

Scored across 3 tools

Disambiguation5/5

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.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern (describe_table, query_database, list_tables). This is predictable and readable.

Tool Count4/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues