Supabase
Supabase’s official server lets AI create tables, query data and review project settings in your Supabase database.
Description from the maker (original English)
MCP server for read-only PostgreSQL database queries in Claude Desktop
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"read-only-local-postgres": {
"command": "npx",
"args": [
"-y",
"@hovecapital/read-only-postgres-mcp-server"
]
}
}
}Run this in your terminal
claude mcp add read-only-local-postgres -- npx -y @hovecapital/read-only-postgres-mcp-serverPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"read-only-local-postgres": {
"command": "npx",
"args": [
"-y",
"@hovecapital/read-only-postgres-mcp-server"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"read-only-local-postgres": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@hovecapital/read-only-postgres-mcp-server"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified against the domain hove.capital (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.1.0) reached the registry 9 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Supabase, MongoDB MCP Server, Elasticsearch MCP Server
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Supabase’s official server lets AI create tables, query data and review project settings in your Supabase database.
MongoDB Model Context Protocol Server
MCP server for interacting with Elasticsearch
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
A Model Context Protocol (MCP) server that enables Claude Desktop to interact with PostgreSQL databases through natural language queries.
READ ONLY transactionsclaude mcp add postgres -s user -- npx -y @hovecapital/read-only-postgres-mcp-server
Then set your database environment variables:
export DB_HOST=localhost
export DB_PORT=5432 export DB_DATABASE=your_database_name export DB_USERNAME=your_username export DB_PASSWORD=your_password
Done! Restart Claude Code and ask: "What tables are in my database?"
1. Open your config file:
# macOS
open ~/Library/Application\ Support/Claude/claude_desktop_config.json
notepad %APPDATA%\Claude\claude_desktop_config.json
2. Add this configuration:
{
"mcpServers": { "postgres": { "command": "npx", "args": ["-y", "@hovecapital/read-only-postgres-mcp-server"], "env": { "DB_HOST": "localhost", "DB_PORT": "5432", "DB_DATABASE": "your_database_name", "DB_USERNAME": "your_username", "DB_PASSWORD": "your_password" } } } }
3. Save, restart Claude Desktop, and test!
This server is published in the Model Context Protocol Registry as capital.hove/read-only-local-postgres-mcp-server.
claude mcp add postgres -s user -- npx -y @hovecapital/read-only-postgres-mcp-server
Then configure your database credentials using environment variables. Restart Claude Code and you're done!
Benefits:
For Claude Desktop:
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": { "postgres": { "command": "npx", "args": ["-y", "@hovecapital/read-only-postgres-mcp-server"], "env": { "DB_HOST": "localhost", "DB_PORT": "5432", "DB_DATABASE": "your_database_name", "DB_USERNAME": "your_username", "DB_PASSWORD": "your_password" } } } }
For Claude Code:
Edit ~/.config/claude-code/settings.json (macOS/Linux) or %APPDATA%\claude-code\settings.json (Windows):
{
"mcp": { "servers": { "postgres": { "command": "npx", "args": ["-y", "@hovecapital/read-only-postgres-mcp-server"], "env": { "DB_HOST": "localhost", "DB_PORT": "5432", "DB_DATABASE": "your_database_name", "DB_USERNAME": "your_username", "DB_PASSWORD": "your_password" } } } } }
npm install -g @hovecapital/read-only-postgres-mcp-server
If you're using Claude Code, you can easily install this MCP server:
# Clone the repository
git clone https://github.com/hovecapital/read-only-local-postgres-mcp-server.git cd read-only-local-postgres-mcp-server
npm install npm run build
Then configure Claude Code by adding to your MCP settings.
Save the repository to a directory on your system:
mkdir ~/mcp-servers/postgres
cd ~/mcp-servers/postgres git clone https://github.com/hovecapital/read-only-local-postgres-mcp-server.git .
npm install
npm run build
Note: If you installed via Option 1 (MCP Registry with npx), you've already configured everything! This section is for users who chose Options 2, 3, or 4 (npm or manual installation).
If you're using Claude Code with a manual installation, add the PostgreSQL server to your MCP settings:
~/.config/claude-code/settings.json on macOS/Linux or %APPDATA%\claude-code\settings.json on Windows){
"mcp": { "servers": { "postgres": { "command": "node", "args": ["/absolute/path/to/read-only-local-postgres-mcp-server/dist/index.js"], "env": { "DB_HOST": "localhost", "DB_PORT": "5432", "DB_DATABASE": "your_database_name", "DB_USERNAME": "your_username", "DB_PASSWORD": "your_password" } } } } }
If you're using Claude Desktop with a manual installation, open your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add the PostgreSQL server configuration:
{
"mcpServers": { "postgres": { "command": "node", "args": ["/absolute/path/to/read-only-local-postgres-mcp-server/dist/index.js"], "env": { "DB_HOST": "localhost", "DB_PORT": "5432", "DB_DATABASE": "your_database_name", "DB_USERNAME": "your_username", "DB_PASSWORD": "your_password" } } } }
If you're using mise for Node.js version management, make sure to use the full path to the Node.js executable in your configuration.
| Variable | Description | Default |
|---|---|---|
DB_HOST | PostgreSQL server hostname | localhost |
DB_PORT | PostgreSQL server port | 5432 |
DB_DATABASE | Database name | postgres |
DB_USERNAME | PostgreSQL username | postgres |
DB_PASSWORD | PostgreSQL password | (empty) |
DB_SSL | Enable SSL connection | false |
DB_ALLOWED_HOSTS | Comma-separated host:port pairs that runtime connection strings may target, in addition to DB_HOST:DB_PORT | (empty) |
This MCP server exposes three tools that Claude can use to interact with PostgreSQL databases.
connectConnect to a PostgreSQL database using a connection string. The connection persists for subsequent queries until changed or disconnected. The target must be DB_HOST:DB_PORT or listed in DB_ALLOWED_HOSTS.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
connectionString | string | Yes | PostgreSQL connection string |
Connection String Format:
postgres://username:password@host:port/database?sslmode=require
postgresql://username:password@host:port/database
SSL Modes Supported:
sslmode=require - Require SSL (recommended for remote connections)sslmode=verify-full - Require SSL with certificate verificationExample Usage (natural language):
"Connect to postgres://myuser:mypass@db.example.com:5432/production"
"Connect to this database: postgres://admin:secret@localhost/analytics"
Response:
{
"status": "connected", "host": "db.example.com", "port": 5432, "database": "production", "user": "myuser", "ssl": true }
disconnectDisconnect from the current runtime database and revert to the default environment-configured connection.
Parameters: None
Example Usage (natural language):
"Disconnect from the current database"
"Go back to the default database"
Response:
{
"status": "disconnected", "message": "Reverted to default environment connection", "host": "localhost", "database": "postgres" }
queryRun a read-only SQL query against the currently connected database. Optionally override the connection for a single query.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
sql | string | Yes | SQL query to execute (SELECT only) |
connectionString | string | No | Override connection for this query only |
Example Usage (natural language):
"Show me all tables in the database"
"SELECT * FROM users LIMIT 10" "Run this query on postgres://other:pass@host/db: SELECT count(*) FROM orders"
Response:
[
{ "id": 1, "name": "Alice", "email": "alice@example.com" }, { "id": 2, "name": "Bob", "email": "bob@example.com" } ]
When using this MCP server, Claude can:
User: "What tables are in my database?"
Claude: [Uses query tool with SQL: "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'"]
User: "Connect to postgres://user:pass@newhost/newdb and show me the users table"
Claude: [Uses connect tool first, then query tool]
User: "How many records are in the orders table on postgres://user:pass@analytics/warehouse?"
Claude: [Uses query tool with connectionString parameter]
User: "Go back to my local database"
Claude: [Uses disconnect tool]
Basic queries (uses default/active connection):
"Show me all tables in my database"
"What's the structure of the users table?" "Get the first 10 records from the products table" "How many orders were placed last month?" "Show me users with email addresses ending in @gmail.com"
Dynamic connection examples:
"Connect to postgres://analyst:password@analytics.example.com:5432/warehouse"
"Now show me all the tables" "What's the total revenue in the sales table?" "Disconnect and go back to my local database"
One-off queries to different databases:
"Run SELECT count(*) FROM users on postgres://admin:secret@prod.example.com/app"
"Check the orders table on my staging database: postgres://dev:dev@staging/app"
Claude will automatically convert your natural language requests into appropriate SQL queries and execute them against your database.
The server enforces read-only access on all connections (both environment-configured and runtime dynamic connections) in three layers:
BEGIN READ ONLY, and the connection is closed afterwards, so nothing is ever committed. PostgreSQL itself rejects INSERT, UPDATE, DELETE, MERGE, DDL, SELECT INTO, nextval(), large-object writes and any writOnly the beginning is shown; read the rest in the repo