Skip to main content
Glama
Rabin0404

pg-mcp-bridge

by Rabin0404

pg-mcp-bridge (MCP server source)

Local stdio MCP bridge for Cursor and Claude Code so you can talk to a remote PostgreSQL database through a PHP/Apache HTTP tunnel.

Cursor / Claude Code  →  pg-mcp-bridge  →  HTTPS  →  PHP tunnel  →  PostgreSQL

PHP tunnel (required on your server)

Upload the PHP files from https://github.com/Rabin0404/pg-mcp-bridge:

  • pg_mcp_tunnel.php

  • config.example.php → copy to config.php and set DB credentials + bearer token

  • .htaccess (optional; blocks web access to config.php)

See that repo’s README for access_mode (readonly | readwrite | full) and curl test steps.

Related MCP server: postgres-mcp

Claude Code setup

Option A — project .mcp.json

Copy examples/claude.mcp.json to your project root as .mcp.json (or merge into an existing one), then set the env values:

{
  "mcpServers": {
    "remote-postgres": {
      "command": "npx",
      "args": ["-y", "pg-mcp-bridge"],
      "env": {
        "PG_MCP_TUNNEL_URL": "https://your-domain.com/pg_mcp_tunnel.php",
        "PG_MCP_TOKEN": "your-bearer-token"
      }
    }
  }
}

Claude Code also supports ${VAR} expansion, for example:

"env": {
  "PG_MCP_TUNNEL_URL": "${PG_MCP_TUNNEL_URL}",
  "PG_MCP_TOKEN": "${PG_MCP_TOKEN}"
}

Option B — CLI

claude mcp add --transport stdio remote-postgres \
  --env PG_MCP_TUNNEL_URL=https://your-domain.com/pg_mcp_tunnel.php \
  --env PG_MCP_TOKEN=your-bearer-token \
  -- npx -y pg-mcp-bridge

Scopes: local (default), project (shared .mcp.json), or user (all projects). See Claude Code MCP docs.

Verify:

claude mcp list
claude mcp get remote-postgres

Cursor setup

Add to Cursor MCP settings (mcp.json):

{
  "mcpServers": {
    "remote-postgres": {
      "command": "npx",
      "args": ["-y", "pg-mcp-bridge"],
      "env": {
        "PG_MCP_TUNNEL_URL": "https://your-domain.com/pg_mcp_tunnel.php",
        "PG_MCP_TOKEN": "your-bearer-token"
      }
    }
  }
}

Develop locally

npm install
npm run build
node dist/index.js

Environment variables

Variable

Required

Description

PG_MCP_TUNNEL_URL

Yes

Full URL to pg_mcp_tunnel.php

PG_MCP_TOKEN

Yes

Same bearer token as in server config.php

MCP tools

  • ping — connectivity + access_mode

  • list_schemas

  • list_tables

  • describe_table

  • query — SQL allowed by server access_mode

License

MIT

Available Tools

5 tools
describe_tableA

Describe columns, types, nullability, defaults, and primary key for a table

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYesTable or view name
schemaNoSchema name (default: public)public

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description only states what is returned, not behavioral traits like read-only nature, permissions needed, or error handling. Does not disclose side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence of 13 words, concise and front-loaded with the verb. No wasted or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description lists the key information returned (columns, types, etc.). Parameters are fully documented. Adequate for a simple metadata tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters described. Description adds no extra meaning beyond the schema; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Describe' and resource 'table', listing specific details returned (columns, types, nullability, defaults, primary key). Distinguishes from siblings: list_schemas and list_tables list names only, query runs arbitrary SQL.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance. Usage is implied from the description, but no mention of alternatives or prerequisites. Siblings exist but not referenced.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_schemasA

List non-system PostgreSQL schemas available through the remote tunnel

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states that the tool lists non-system schemas and that they are accessible via a remote tunnel. It does not mention side effects (likely none), authentication requirements, rate limits, or any other behavioral traits. Critical information is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that is concise and front-loaded. Every word adds value, specifying the action, resource, and scope without any unnecessary verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, no output schema, and no annotations, the description provides the basic purpose but lacks details about the output format (e.g., list of schema names only or with metadata), ordering, or any limitations. It is sufficient for a simple discovery tool but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description does not need to add meaning beyond the input schema. The schema description coverage is 100%. With no parameters, a baseline score of 4 is appropriate as there is nothing more to explain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists non-system PostgreSQL schemas available through the remote tunnel. It uses a specific verb (list) and resource (schemas), and the qualifier 'non-system' distinguishes it from system schemas. The sibling tools list_tables, describe_table, query, and ping are all distinct, so there is no confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lacks explicit guidance on when to use this tool versus alternatives. It only says schemas are available through the remote tunnel, implying they are accessible, but does not explain prerequisites, when to use, or when not to use. No comparisons or usage context is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tablesA

List tables and views in a schema

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (default: public)public

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description states it lists tables and views (read-only), but does not disclose any potential side effects, auth requirements, or output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise, front-loaded, and contains no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple tool with one optional parameter; missing output specification but otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers 100% of parameter details (name, type, default, description), so description adds no extra meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'List' and resource 'tables and views', clearly distinguishing from sibling tools like list_schemas (schemas) and describe_table (specific table).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus siblings like describe_table or query; usage is implied but not clarified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pingA

Check tunnel and PostgreSQL connectivity; returns version, database, user, and access_mode (readonly|readwrite|full)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, but description notes it's a connectivity check (non-mutating) and lists returned fields. Could be more explicit about side effects (none).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with purpose, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Comprehensive for a simple health check: no output schema, but lists return fields. No missing context given tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters; schema coverage 100%. Description adds meaning by explaining what the tool does and what it returns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it checks connectivity and returns specific fields. Distinguishes from siblings which are data retrieval tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use for checking connectivity before other operations, but no explicit when-to-use or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

queryA

Run a single SQL statement. Allowed statements depend on server access_mode: readonly (SELECT/EXPLAIN/SHOW), readwrite (+ INSERT/UPDATE/DELETE), full (+ CREATE/ALTER/DROP and other DDL). Use ping to see the current access_mode. Only one statement per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesSQL statement (permissions enforced by server access_mode)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

In the absence of annotations, the description reveals behavioral traits such as varying permissions by access_mode and the single-statement constraint. It implicitly warns about potential destructive actions by mentioning DDL/DML permissions, though it could detail error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: three sentences that front-load the primary action, then detail constraints. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers the main functionality and constraints, it lacks details on the return format or error handling, which are not covered by an output schema. For a SQL query tool, knowing the result type would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the description adds meaning by categorizing SQL types by access_mode and linking to ping. It goes beyond the schema's 'permissions enforced' note to provide concrete examples of allowed statements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs a single SQL statement, which is specific to the query action. It distinguishes from siblings like list_schemas and list_tables by focusing on executing arbitrary SQL rather than metadata listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains that allowed statements depend on server access_mode and suggests using ping to check the current mode. It also explicitly limits to one statement per call. While not covering all alternatives, it provides clear usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv1.0.2
    • First observeddescribe_table
    • First observedlist_schemas
    • First observedlist_tables
    • First observedping
    • First observedquery

TDQS

A4.1/5.0
Disambiguation5/5

Each tool has a clear, unique purpose: listing schemas, listing tables, describing columns, running SQL queries, and checking connectivity. There is no overlap or ambiguity.

Naming Consistency5/5

All tool names use a consistent snake_case verb_noun pattern, such as list_schemas, list_tables, describe_table, query, and ping. The naming is predictable and uniform.

Tool Count5/5

With 5 tools, the server covers all essential operations for a PostgreSQL bridge: schema exploration, table metadata, column details, arbitrary SQL execution, and connectivity checks. The count is well-scoped without unnecessary extras.

Completeness5/5

The tool surface is complete for its domain, providing full CRUD-like capabilities through the general query tool, plus necessary introspection tools. There are no obvious gaps; it supports both read and write operations as per access mode.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Enables querying PostgreSQL database metadata including table lists and schema information through the MCP protocol. Supports stdio transport for Cursor/IDE integration as well as HTTP transport with health check endpoints.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for PostgreSQL that enables Cursor and other MCP clients to execute SQL queries, list tables, and explore database schemas via HTTP.
    2,422
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A STDIO bridge for connecting to WordPress sites via the Model Context Protocol (MCP), enabling communication between MCP clients and WordPress installations running the websamurai plugin.
    25
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Rabin0404/pg-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server