PgGuard Agent
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PgGuard AgentExplain the query that joins orders and customers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PgGuard Agent
Corporate Postgres governance MCP server.
Docs: ARCHITECTURE.md, SECURITY.md, GOVERNANCE.md, LOCAL_TEST.md
License: MIT
Quickstart
Copy env example, install Node packages.
Run test and policy check scripts.
Start docker compose stack (Postgres + Vault).
Build TypeScript and start MCP on stdio.
See LOCAL_TEST.md for Rancher Desktop details.
Related MCP server: Postgres MCP Server
MCP tools
db_health: ping + version
list_schemas, list_tables, describe_table
run_select: SELECT only with max rows
run_dml: data changes require confirm true
run_ddl: schema changes require confirm; dry_run optional
explain_query: EXPLAIN; ANALYZE gated
get_audit_tail: recent audit events
whoami: role and effective policy
Roles
PGGUARD_ROLE selects reader, writer, migrator, or admin (config/policy.yaml).
Package scripts
build: compile to dist/
mcp: run stdio server
test: Jest classifier and policy tests
policy:check: validate policy.yaml
Cursor MCP configuration
Add an MCP server that runs node on dist/index.js. Environment (from .env.example):
PGGUARD_ROLE=reader
PGGUARD_SECRETS_PROVIDER=env (or vault)
PGGUARD_POLICY_PATH=./config/policy.yaml
PGGUARD_AUDIT_DIR=./data/audit
PGHOST=127.0.0.1 PGPORT=5432 PGDATABASE=corpdb
PGUSER=app_reader PGSSLMODE=disable
For vault: VAULT_ADDR and VAULT_TOKEN (demo token in .env.example)
Demo DB passwords live only in .env.example and Compose init scripts; do not commit .env.
Example Cursor MCP JSON: config/cursor-mcp.example.json
Available Tools
10 toolsdb_healthA
Ping Postgres and return server version
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It conveys that the operation is a non-mutating connectivity check and names the output (server version), but does not describe failure behavior, authentication needs, or whether any state changes could occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is eight words: short, front-loaded with the action, and every word adds meaning. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter health-check tool with no output schema, the description states the operation and the returned value, which covers all the essential context an agent needs. Despite its brevity, it is complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. There are no parameter semantics to explain, and the description correctly adds no irrelevant parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Ping') and resource ('Postgres') and states that it returns the server version. This clearly distinguishes it from sibling tools like list_schemas, run_select, or run_dml, which all perform different database operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied: call this tool to verify database connectivity and retrieve the Postgres version. However, there is no explicit when-to-use versus alternative guidance or mention of exclusions, though the zero-parameter, health-check nature makes this less critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_tableC
Describe columns for a table
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| schema | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. While 'Describe' semantically implies a read-only operation, the description does not state what is returned, whether the table must exist, or how errors are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single focused sentence with no redundant information. It is concise and front-loaded, though slightly under-specified in content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, no annotations, and no usage guidance. For a two-parameter introspection tool, this minimal description leaves gaps around expected return values and when to choose this tool over siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only mentions 'table,' not the 'schema' parameter or the relationship between them. The parameter names are somewhat self-explanatory, but the description does not compensate for the lack of schema-level documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb and resource: 'Describe columns for a table.' This sufficiently identifies the tool's purpose and distinguishes it from siblings like list_tables or run_select, though it does not explicitly differentiate itself from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus siblings such as list_tables, explain_query, or run_select. No context is provided for the intended workflow, such as inspecting schema before writing queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_queryC
EXPLAIN a query; ANALYZE optional and gated by policy
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | ||
| analyze | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of disclosing behavior. It reveals that ANALYZE is policy-gated but does not disclose that ANALYZE typically executes the query and can have side effects, nor does it state whether plain EXPLAIN is read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact two-clause sentence with no filler, and the core operation is front-loaded before the optional variant. Every part carries meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description leaves key operational context unstated: whether ANALYZE executes the query, what policy failure looks like, and what the call returns. The two-parameter surface is simple, but the missing behavior and return-value context make it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only loosely maps 'query' to sql and 'ANALYZE optional' to analyze. It does not clarify what kinds of SQL are accepted, what the boolean controls beyond the SQL keyword, or what output the agent should expect.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation, EXPLAIN, and a resource, the supplied query, which distinguishes it from sibling tools like run_select and run_dml. It stops short of a 5 because it never explicitly says this returns an execution plan rather than executing the query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to choose explain_query over run_select, run_dml, or run_ddl, nor any statement about the intended scenario such as inspecting a plan before execution. The only usage hint is that ANALYZE is optional and policy-gated, which is a constraint rather than a use-case guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_tailA
Return last N append-only audit events
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Number of events (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. 'Return' signals a read-only operation and 'append-only' adds useful context about event immutability, but there is no disclosure of ordering guarantees, pagination, or potential operational caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no redundant words. The core behavior is front-loaded and the description earns its place without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one optional parameter and no nested schema, the description is largely sufficient. It clearly indicates what is returned ('audit events') and the count semantics, though the lack of an output schema means the exact event structure is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the parameter 'n' is already documented as 'Number of events (default 20)'. The description's 'last N' ties the parameter to ordering, but adds little beyond what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return'), a clear resource ('last N append-only audit events'), and precise scoping. It is easily distinguished from the sibling database and health tools, which deal with schemas, tables, queries, and system status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when recent audit events are needed, but it does not explicitly state when to prefer this tool over alternatives or provide any exclusion conditions. No sibling tool obviously overlaps, so the lack of explicit guidance is a minor gap.
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 schemas
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It does add a meaningful behavioral trait by stating only non-system schemas are listed, implying a read-only operation, but it does not disclose permission requirements, what qualifies as a system schema, or any ordering/limitation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, compact sentence with no filler. The key qualifier 'non-system' is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema listing tool, the description is nearly complete: it names the resource, the scope, and the filter. It only lacks explicit context about sibling-tool routing, but this is a minor gap given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The only relevant context, the 'non-system' filter, is already stated in the description rather than left implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('non-system schemas'), clearly conveying what the tool does. It does not explicitly contrast with sibling tools like list_tables, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus list_tables, describe_table, or reporting tools like db_health. The phrase 'non-system schemas' implies a filtering use case, but exclusions and alternatives are left unstated.
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, optionally filtered by schema
| Name | Required | Description | Default |
|---|---|---|---|
| schema | No | Schema name (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It conveys a read-oriented enumeration operation with optional filtering, but does not mention permissions, inclusion of views, or output behavior. The core behavior is clear but not deeply detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence with no filler. The primary operation is front-loaded, and the optional filter is stated right after.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-optional-parameter listing tool, the description and schema are sufficient for an agent to invoke it correctly. There is no output schema or annotations, but the missing behavioral details are not critical for basic correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single 'schema' parameter is already documented in the input schema as optional. The description adds no new semantic detail beyond restating the optional filter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description directly states a specific action (list) on a specific resource (tables), with an optional schema filter. This clearly differentiates it from siblings like list_schemas and describe_table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The optional schema filtering implies the main use case: enumerating tables, optionally scoped to a schema. However, there is no explicit guidance about when not to use this tool or which sibling tool to choose instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_ddlA
CREATE/ALTER/DROP for migrator/admin; requires confirm:true; optional dry_run
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | ||
| confirm | No | ||
| dry_run | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the safety burden. It discloses the destructive nature via DROP, the required confirm:true gate, and dry_run availability, giving essential safety cues beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the operation class, role restriction, and safety requirements. No filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for selecting the tool, but gaps remain for a destructive tool with no annotations and no output schema: dry_run semantics, confirm=false behavior, and postconditions are not described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds meaning by clarifying sql contains DDL and confirm must be true, but does not explain dry_run's effect or what happens if confirm is omitted/false.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific DDL operations (CREATE/ALTER/DROP) and the target audience (migrator/admin), clearly differentiating it from siblings like run_select, run_dml, and explain_query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: this is for DDL operations and requires confirm:true, making the intended use explicit. It doesn't explicitly name alternatives or when-not-to-use, but the DDL scope and sibling names make the boundary obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_dmlA
INSERT/UPDATE/DELETE when role allows; requires confirm:true
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | ||
| confirm | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description assumes full transparency burden and does reveal two important behavioral traits: authorization gating and a mandatory confirmation flag. However, it does not disclose what the tool returns, how it handles errors, whether multiple statements are permitted, or the irreversible/mutating nature of DML beyond the operation names themselves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written sentence with zero filler. It front-loads the core operation scope and then includes the two most important invocation constraints, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only two required parameters and no output schema, the description covers the essential invocation details: operation type, authorization limit, and mandatory confirmation. Still, for a potentially destructive DML tool, it leaves gaps around result behavior, error handling, and execution semantics, so it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for parameter documentation. It usefully explains that confirm must be true, but it provides no additional semantics for sql beyond implying it contains an INSERT, UPDATE, or DELETE statement. The sql parameter still lacks format guidance, constraints, or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states the tool executes INSERT/UPDATE/DELETE statements, giving a specific verb, resource category, and operation scope. This clearly distinguishes it from sibling tools like run_select and run_ddl, and the role/confirm caveat adds functional specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates that this tool is for DML operations, which is an unambiguous use case distinct from the query, DDL, and diagnostic siblings. It also provides a clear precondition ('when role allows') and a mandatory invocation requirement ('requires confirm:true'), though it does not explicitly name alternatives or when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_selectA
Run a single SELECT (max rows enforced; read-only role preferred)
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | ||
| max_rows | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It does reveal two behaviors: max rows are enforced and read-only role is preferred. However, it does not explain what happens when the limit is reached, whether queries can time out, or what the response shape is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and packs essential constraints into a parenthetical. No wasted words or redundant restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple and the description covers the core execution contract, but there is no output schema and no mention of return format, error behavior, or when a sibling tool would be a better choice. The description is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning to the parameters. It adds meaning to max_rows ('enforced') and implies sql should contain a SELECT statement. It does not clarify optionality, defaults, or SQL formatting, so compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a precise verb and resource: execute a single SELECT statement. It also distinguishes itself from siblings like run_dml and run_ddl by limiting scope to SELECT queries, and 'max rows enforced' adds a meaningful boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: run one SELECT query, with a row limit and a read-only role preference. It does not explicitly name alternatives or state when not to use it, but the SELECT designation and sibling names make the primary use case evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whoamiA
Current agent role and effective policy
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior. It indicates this is an introspection returning the current role and policy, but it does not explicitly state that the operation is read-only, what the response format is, or whether any policy evaluation side effects occur. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single seven-word phrase with no filler or redundancy. The core identity/policy scope is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no parameters and a minimal schema, but no output schema exists, so the description should clarify the return shape. It names the two pieces of information (role and effective policy) but not their format, types, or nesting, leaving an agent to guess how to parse the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters and the schema coverage is 100%, so there is no parameter burden for the description to carry. The baseline of 4 applies because there are zero parameters to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase 'Current agent role and effective policy' clearly identifies the resource as the agent's identity and policy context. It is distinct from the database-focused siblings (db_health, list_tables, run_select, etc.), though it lacks an explicit verb such as 'returns' or 'displays'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: an agent should call this when it needs to know the current role or effective policy. It gives no explicit when-to-use or when-not-to-use guidance and does not mention alternatives, but the tool is unique among the siblings, so the omission is less harmful.
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.
10 tool updates
v1.0.0- First observed
db_health - First observed
describe_table - First observed
explain_query - First observed
get_audit_tail - First observed
list_schemas - First observed
list_tables - First observed
run_ddl - First observed
run_dml - First observed
run_select - First observed
whoami
TDQS
Each tool maps to a distinct operation: health check, schema inspection, row queries, DML, DDL, explain, audit, and role/policy lookup. Even though run_select and explain_query both accept queries, their purposes are clearly separated.
Most tools follow a clear verb_noun snake_case convention: list_schemas, list_tables, describe_table, run_select, explain_query, get_audit_tail. Minor deviations are db_health and whoami, which do not follow the verb_noun pattern but remain understandable.
Ten tools is well-scoped for a Postgres guard agent. Each tool serves a necessary purpose in the lifecycle of inspecting and safely modifying a database.
The tool surface covers health, schema discovery, SELECT/DML/DDL execution, query planning, auditing, and policy introspection. Minor gaps like explicit transaction control or listing roles/indexes are not critical, but could make some workflows more seamless.
Maintenance
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
Hosted MCP server for PostgreSQL diagnostics: slow queries, missing indexes, connection pressure.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables secure querying of PostgreSQL databases through MCP-compatible clients. Supports read-only SQL execution, table exploration, and connection management with built-in security validation.3419MIT
- FlicenseNot gradedqualityCmaintenanceEnables querying and modifying PostgreSQL databases through MCP tools with read/write operations, schema inspection, and write-safety constraints that limit modifications to the mcp schema.1-
- FlicenseNot gradedqualityDmaintenanceEnables interaction with PostgreSQL databases through MCP, allowing users to explore database structures, inspect table schemas, and execute read-only SQL queries.-
- AlicenseNot gradedqualityFmaintenanceEnables interaction with PostgreSQL databases through MCP, supporting queries, DDL, DML, and schema inspection.6MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/vk-ai/pg-governance-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server