verifyTopology

Connect to every configured connection and report what each server actually is: its role (primary or replica, from pg_is_in_recovery(), observed now rather than configured), its system identifier, database, address, port and version -- then check the declared topology against…

read-only

Synopsis

verifyTopology()

Description

Connect to every configured connection and report what each server actually is: its role (primary or replica, from pg_is_in_recovery(), observed now rather than configured), its system identifier, database, address, port and version -- then check the declared topology against them. A physical replica carries the same system identifier as its primary forever, so the identifier alone cannot separate the two axes: same identifier with the same host and port is one instance, same identifier on different hosts is a replication group.

Reports declarations the servers contradict, connections that share an identifier but are not declared together (an undeclared replica is where 'is this index used?' quietly gets the wrong answer), a replication group with no primary, and split brain. Logical replication cannot be verified this way and is reported as such rather than as a mismatch. Connects once per configured connection, sequentially, with a short connect timeout; a connection that fails is reported and does not abort the rest

Parameters

None of its own.

Output

Declared topology checked against each server. An absent extension or a missing grant is reported as {error, hint} instead.

FieldType
connectionsarray | null
findingsarray | null

Example mocked data

Request

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "verifyTopology",
    "arguments": {}
  }
}

Result

{
  "connections": [
    {
      "connection": "shop_prod",
      "role": "primary",
      "system_identifier": "7412203311020332211",
      "database": "shop",
      "server_addr": "10.0.2.10",
      "server_port": 5432,
      "server_version": "18.6"
    },
    {
      "connection": "shop_replica_1",
      "role": "replica",
      "system_identifier": "7412203311020332211",
      "database": "shop",
      "server_addr": "10.0.2.21",
      "server_port": 5432,
      "server_version": "18.6"
    }
  ],
  "findings": []
}

Invented values on a fictional shop database, shaped by and checked against this tool's output schema. Real output is returned as structuredContent to clients that negotiate MCP 2025-06-18 or later.

See also

listTopology