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
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 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
None of its own.
Declared topology checked against each server. An absent extension or a missing grant is reported as {error, hint} instead.
| Field | Type |
|---|---|
| connections | array | null |
| findings | array | null |
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "verifyTopology",
"arguments": {}
}
}
{
"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.