Skip to content
ToolCargo

The MCP directory / Open to explore

MCP server directory.
Find your next tool.

Search 3,974 indexed servers from the official MCP Registry and selected vendor documentation. Find remote endpoints and local packages, inspect the publisher’s setup details, then connect in your AI client.

Where will your next task take you?

Free discovery · no account · no API key

Let your agent do the finding.

Paste into your AI agent
Read https://toolcargo.com/agents.txt, then find the MCP servers I need and help me connect them. Ask me what I want to do first.

Or add https://toolcargo.com/mcp as a Streamable HTTP MCP server. Discovery is free and needs no account.

Compare task fit, publisher, permissions and a small acceptance test with the MCP server selection guide.

Connect directly to official MCP servers

Vendor setup guides for your existing accounts. These connections run with the vendor; ToolCargo does not host them or supply their credentials.

Browse the remote MCP server directory →

Not sure which connection to choose? Read local vs remote MCP servers. Building a discovery workflow? See the MCP server search API reference.

PostgreSQL

Close details

MCP server for PostgreSQL: local, Docker, RDS, Neon, Supabase, or behind an SSH bastion.

Directory identity: io.github.antonorlov/mcp-postgres-server · Version: 0.3.1

Publisher connection metadata
{
  "remotes": [],
  "packages": [
    {
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "identifier": "mcp-postgres-server",
      "version": "0.3.1",
      "runtimeHint": "npx",
      "transport": {
        "type": "stdio"
      },
      "environmentVariables": [
        {
          "description": "Full connection string (preferred). Supports sslmode in the URL.",
          "format": "string",
          "isSecret": true,
          "placeholder": "postgres://user:password@localhost:5432/mydb?sslmode=require",
          "name": "DATABASE_URL"
        },
        {
          "description": "Database host (fallback when DATABASE_URL is not set).",
          "format": "string",
          "name": "PG_HOST"
        },
        {
          "description": "Database port.",
          "format": "number",
          "default": "5432",
          "name": "PG_PORT"
        },
        {
          "description": "Database user.",
          "format": "string",
          "name": "PG_USER"
        },
        {
          "description": "Database password.",
          "format": "string",
          "isSecret": true,
          "name": "PG_PASSWORD"
        },
        {
          "description": "Database name.",
          "format": "string",
          "name": "PG_DATABASE"
        },
        {
          "description": "When true, execute performs writes and reads are sent directly. Off (default) is read-only: execute refuses writes and each read runs in a READ ONLY transaction.",
          "format": "boolean",
          "default": "false",
          "choices": [
            "false",
            "true"
          ],
          "name": "PG_ALLOW_WRITE"
        },
        {
          "description": "TLS mode. require/allow/prefer encrypt without verifying the certificate; verify-ca/verify-full verify it (supply a CA via PG_SSL_CA). Unlike libpq, allow/prefer do not fall back to plaintext, so a server without TLS needs disable.",
          "format": "string",
          "choices": [
            "disable",
            "allow",
            "prefer",
            "require",
            "verify-ca",
            "verify-full"
          ],
          "name": "PG_SSLMODE"
        },
        {
          "description": "Path to a CA certificate file. Setting it by itself implies verify-full.",
          "format": "filepath",
          "name": "PG_SSL_CA"
        },
        {
          "description": "Register the connect_db tool (runtime credential switching).",
          "format": "boolean",
          "default": "false",
          "choices": [
            "false",
            "true"
          ],
          "name": "PG_ENABLE_RUNTIME_CONNECT"
        },
        {
          "description": "Byte budget for a query result sent to the model. Whole rows are kept while they fit; over the budget returnedRows < rowCount and truncated is true.",
          "format": "number",
          "default": "32768",
          "name": "PG_MAX_RESULT_BYTES"
        },
        {
          "description": "Statement timeout in milliseconds, applied to every session.",
          "format": "number",
          "default": "30000",
          "name": "PG_STATEMENT_TIMEOUT"
        },
        {
          "description": "Timeout in milliseconds for a single connect attempt (raise it for slow links or SSH tunnels).",
          "format": "number",
          "default": "10000",
          "name": "PG_CONNECT_TIMEOUT"
        },
        {
          "description": "SSH bastion host. Setting it enables tunneling: the server reaches the database only through an SSH tunnel to this host. Needs the ssh2 optional dependency.",
          "format": "string",
          "name": "PG_SSH_HOST"
        },
        {
          "description": "SSH bastion port.",
          "format": "number",
          "default": "22",
          "name": "PG_SSH_PORT"
        },
        {
          "description": "SSH username.",
          "format": "string",
          "name": "PG_SSH_USER"
        },
        {
          "description": "Path to a private key file. If unset, auth falls back like ssh: a running agent (SSH_AUTH_SOCK), then a default key (~/.ssh/id_ed25519, id_rsa, id_ecdsa).",
          "format": "filepath",
          "name": "PG_SSH_PRIVATE_KEY"
        },
        {
          "description": "Passphrase for the private key, if encrypted.",
          "format": "string",
          "isSecret": true,
          "name": "PG_SSH_PASSPHRASE"
        },
        {
          "description": "true to use the ambient agent (SSH_AUTH_SOCK), or an explicit socket path / Windows named pipe.",
          "format": "string",
          "name": "PG_SSH_AGENT"
        },
        {
          "description": "SSH login password. Opt-in; a key or agent takes precedence. Prefer keys, a bastion often disables password auth.",
          "format": "string",
          "isSecret": true,
          "name": "PG_SSH_PASSWORD"
        },
        {
          "description": "Pinned host-key fingerprint (SHA256:...). Host-key verification is mandatory and set only this way: without it the tunnel refuses to connect. Get it with ssh-keygen -lF host.",
          "format": "string",
          "placeholder": "SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "PG_SSH_FINGERPRINT"
        },
        {
          "description": "SSH keepalive interval in ms; the tunnel drops after 3 unanswered keepalives, and the next call reconnects.",
          "format": "number",
          "default": "15000",
          "name": "PG_SSH_KEEPALIVE_INTERVAL"
        }
      ]
    }
  ]
}

Remote URLs go into your client's MCP settings. Local packages need a compatible runtime. Check required headers, environment variables, permissions and provider costs before setup.

Publisher repository ↗

3,974 results

Index updated 2026-10-02

This directory combines dated registry listings and selected vendor-documentation entries. Documentation checks are not live account or client verification. Third-party servers run with their own providers, credentials and pricing. ToolCargo discovery supplies setup metadata; it does not run their tools. Explore ToolCargo's hosted connectors.