Skip to main content
Glama
askdkc

pgroonga-mcp

by askdkc

pgroonga-mcp

日本語版 README

Read-only PostgreSQL search and diagnostics over the Model Context Protocol. The server discovers the installed PGroonga schema and capabilities, resolves search targets from PostgreSQL catalogs, and binds query/filter values as parameters.

It does not expose arbitrary SQL, pgroonga_command, DDL, dictionary mutation, or repair operations.

Requirements

  • Node.js 22 or newer.

  • PostgreSQL with the PGroonga extension installed.

  • A dedicated PostgreSQL role that is neither a superuser nor BYPASSRLS.

  • An MCP host that supports local stdio servers.

The npm package supplies the MCP server and a project setup command. It does not install PostgreSQL or PGroonga.

Related MCP server: PostgreSQL MCP Server

Install

For a project installation:

npm i @askdkc/pgroonga-mcp

The server can start without a database URL, so an MCP host or AI agent can use it for tool discovery and SQL-generation workflows. Database-backed tools return a structured database_unavailable error until a PostgreSQL URL is configured.

For a global installation:

npm i --global @askdkc/pgroonga-mcp
pgroonga-mcp

The server communicates over stdin/stdout. Logs go to stderr so they do not corrupt the MCP protocol stream.

Project setup

After installing the package in a project, run the setup command to register a project-local pgroonga MCP server for the clients you use:

npm i @askdkc/pgroonga-mcp
npx pgroonga-mcp setup

The interactive setup lets you select Codex, Claude Code, OpenCode, and DSH (DeepSeek Harness). It writes only project files and does not modify user-global configuration or add database credentials. The generated server command uses the installed package without downloading at MCP startup:

npx --no-install pgroonga-mcp

Use flags when setup must be scripted:

# Configure every supported client.
npx pgroonga-mcp setup --all

# Configure selected clients.
npx pgroonga-mcp setup --clients codex,claude,opencode

# Preview changes without writing files.
npx pgroonga-mcp setup --all --dry-run

# Replace an existing pgroonga entry after reviewing the diff.
npx pgroonga-mcp setup --clients claude --force

The setup command creates or updates these project-scoped files:

Client

File

Codex

.codex/config.toml

Claude Code

.mcp.json

OpenCode

opencode.json or an existing opencode.jsonc

DSH

cordis.yml

Unrelated settings are preserved. If a selected file already contains a different pgroonga entry, setup stops instead of overwriting it; use --force only after reviewing the existing configuration. OpenCode JSONC comments may be normalized when an existing opencode.jsonc is updated. Restart each selected client after setup. Claude Code may also ask you to approve the project-scoped .mcp.json server.

The command is platform-neutral and uses Node.js filesystem APIs and project-relative paths. It works on macOS, Linux, and Linux environments running under Windows WSL. In WSL, run it with the Node.js and npm installation inside WSL and from the project directory visible to WSL.

Sample

See pgroonga-mcp-sample for an example of using PGroonga MCP.

MCP host configuration

The exact configuration file depends on the MCP host. A generic stdio configuration looks like this:

{
  "mcpServers": {
    "pgroonga": {
      "command": "npx",
      "args": ["--yes", "@askdkc/pgroonga-mcp"],
      "env": {
        "PGROONGA_DATABASE_URL": "postgresql://pgroonga_mcp@127.0.0.1:5432/app",
        "PGROONGA_ALLOWED_SCHEMAS": "public",
        "PGROONGA_ALLOWED_TABLES": "public.documents"
      }
    }
  }
}

The npm package name is @askdkc/pgroonga-mcp, while the installed executable remains pgroonga-mcp. Use that executable instead of npx when the package is installed globally. Do not put database passwords in a committed configuration file; use the MCP host's environment/secret facility. The server loads .env from its current working directory when present, without overriding existing process environment variables. Set PGROONGA_ENV_FILE when the project env file is elsewhere.

Database grants

Use a least-privilege role. Replace the schema, tables, and PGroonga extension schema with the names from your deployment:

CREATE ROLE pgroonga_mcp LOGIN PASSWORD 'use-a-secret-manager';
GRANT CONNECT ON DATABASE app TO pgroonga_mcp;
GRANT USAGE ON SCHEMA public, extensions TO pgroonga_mcp;
GRANT SELECT ON TABLE public.documents TO pgroonga_mcp;

Grant SELECT on any NormalizerTable dictionary tables used by the configured indexes. Do not grant SUPERUSER, BYPASSRLS, or CREATE on application schemas. Keep row-level security policies enabled; each operation runs in a read-only transaction with row_security = on.

Configuration

All settings are environment variables. PGROONGA_DATABASE_URL is optional. If it is absent, a PostgreSQL URL in DATABASE_URL, POSTGRES_URL, or POSTGRESQL_URL is used when available. Non-PostgreSQL values are ignored. The default allowlist is the public schema; an empty PGROONGA_ALLOWED_TABLES allows all tables in the allowed schemas, so set it explicitly in production. Tables may be written as schema.table or as a table name.

Variable

Default

Description

PGROONGA_DATABASE_URL

Optional PostgreSQL connection URL

PGROONGA_ENV_FILE

.env

Project env file to load

PGROONGA_ALLOWED_SCHEMAS

public

Comma-separated schema allowlist

PGROONGA_ALLOWED_TABLES

empty

Comma-separated table allowlist

PGROONGA_STATEMENT_TIMEOUT_MS

5000

PostgreSQL statement timeout

PGROONGA_LOCK_TIMEOUT_MS

1000

PostgreSQL lock timeout

PGROONGA_DEFAULT_LIMIT

20

Default search row limit

PGROONGA_MAX_ROWS

100

Maximum search row limit

PGROONGA_MAX_RESPONSE_BYTES

1048576

Serialized response limit

PGROONGA_MAX_TEXT_BYTES

131072

Per-string result limit

PGROONGA_MAX_NORMALIZATION_INPUT_BYTES

16384

Normalization input limit

PGROONGA_MAX_VARIANTS

500

Variant lookup limit

PGROONGA_LOG_LEVEL

info

debug, info, warn, or error

PGROONGA_TRANSPORT

stdio

Only stdio is currently supported

A complete development example is in .env.example. The environment example and the compact NormalizerTable fixture under examples/itaiji/ are included in the npm tarball.

Tools

  • pgroonga_server_info — PostgreSQL, PGroonga, Groonga, and feature capabilities.

  • pgroonga_list_indexes — catalog-resolved PGroonga indexes and supported modes.

  • pgroonga_search — bounded search with structured filters.

  • pgroonga_explain_search — non-executing EXPLAIN (FORMAT JSON) for a validated search.

  • pgroonga_health — available PGroonga health checks.

  • pgroonga_list_normalization_profiles — discovered index normalizer chains.

  • pgroonga_normalize_text — normalize text using a discovered index profile.

  • pgroonga_lookup_variants — bounded NormalizerTable variant lookup.

  • pgroonga_validate_normalization_profile — validate dictionary mappings without modifying them.

Example pgroonga_search input:

{
  "target": { "schema": "public", "table": "documents", "column": "body" },
  "mode": "keyword",
  "query": "PGroonga",
  "returnColumns": ["id", "body"],
  "limit": 20
}

Search supports text, varchar, text[], and jsonb targets when a compatible, valid, ready PGroonga index is discovered. Supported modes are keyword, query, prefix, exact, and regexp. similar is reserved for a later release. Compound, expression, and partial indexes are reported but are discovery-only in this release.

Normalizer profiles are read from trusted index reloptions. NormalizerTable dependencies are resolved through pgroonga_table_name; dictionary changes are reported as requiring REINDEX, and dictionary freshness remains unknown unless a future managed revision table is installed. Highlighting is disabled unless the required source-location and source-offset options are present.

Development and release checks

npm ci
npm run verify
npm pack --dry-run

npm run verify runs formatting, linting, type checking, the unit/contract tests, and the TypeScript build. The package uses prepublishOnly and prepack to repeat the relevant checks/build before publication. Once authenticated with npm and after reviewing npm pack --dry-run, publish the current version with:

npm publish

The repository is askdkc/pgroonga-mcp. The compact NormalizerTable fixture is in examples/itaiji/schema.sql.

Available Tools

9 tools
pgroonga_healthA

Report limited PGroonga health checks and explicitly unavailable diagnostics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
writableYes
walStatusYes
unavailableYes
laggedIndexesYes
extensionAvailableYes
potentiallyBrokenIndexesYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It does reveal that the tool reports limited checks and explicitly indicates unavailable diagnostics, which is a useful behavioral trait. However, it omits details about error handling, response semantics, and what specific checks are performed, leaving gaps that the output schema may only partially fill.

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, direct sentence with no redundant wording. It front-loads the action and scope, making it easy to parse and understand.

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?

Given that the tool has no parameters and an output schema is present, the description is sufficiently complete for an agent to select the tool. The vagueness of 'limited' is mitigated by the output schema, which likely documents the exact fields and behavior. It does not explain return values, but the output schema covers that responsibility.

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 and an empty schema, so parameter semantics are not applicable. The baseline for zero parameters is 4, and the description does not need to add parameter information.

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

Purpose4/5

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

The description uses a specific verb 'Report' and clearly identifies the resource as PGroonga health checks. The mention of 'limited' and 'explicitly unavailable diagnostics' adds scope and distinguishes it from sibling tools that handle search, indexing, or normalization.

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?

No guidance is provided on when to use this tool versus alternatives. It does not mention exclusions or when not to use it, and there is no reference to sibling tools or conditions for selection.

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

pgroonga_list_indexesB

List catalog-resolved PGroonga indexes and supported search modes.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableNo
schemaNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
indexesYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description must carry the disclosure burden. The verb "List" strongly implies a non-mutating, read-only operation, and "catalog-resolved" adds context about how the indexes are obtained. However, it does not disclose potential caveats such as permission requirements, error behavior, or whether the operation may be expensive. This is acceptable for a simple listing tool but is not richly transparent.

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, front-loaded sentence that states the primary action and the nature of the results. Every word contributes to understanding the tool's purpose. There is no fluff, repetition, or unnecessary detail.

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?

The tool is simple, has an output schema to describe return values, and the core purpose is stated. However, the lack of parameter semantics and usage guidance means the description is not fully self-contained, especially because the optional table and schema filters are completely unexplained. Given the low schema coverage, more context is needed to be fully complete.

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

Parameters1/5

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

The input schema has zero description coverage for its two optional parameters (table, schema), and the description does not explain how these parameters affect the listing. Neither the schema nor the description provides meaning beyond the parameter names. The description fails to compensate for the low schema coverage, offering no guidance on filtering or optionality.

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 uses a specific verb ("List") and a clear resource ("catalog-resolved PGroonga indexes"), and also mentions the additional output of "supported search modes." This distinguishes it from sibling tools like pgroonga_search, pgroonga_server_info, and pgroonga_list_normalization_profiles, which serve different purposes.

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?

The description implies the tool is used when you need to see available PGroonga indexes and their search modes, but it provides no explicit guidance about when to prefer this tool over alternatives, nor any exclusions or prerequisites. The context is clear from the verb and object, but no direct comparison to siblings is offered.

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

pgroonga_list_normalization_profilesA

Discover trusted index-level normalizer chains and NormalizerTable dependencies.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
profilesYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. The verb 'Discover' implies a read-only operation, but the description does not explicitly state that it makes no changes, whether it requires special permissions, how it handles missing indexes, or any performance implications. It only states what it returns, lacking depth expected for an unannotated tool.

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 sentence that is clear and front-loaded. Every word contributes meaning ('Discover', 'trusted', 'index-level', 'normalizer chains', 'NormalizerTable dependencies') with no filler or redundancy.

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?

For a simple no-parameter tool with an output schema, the description is reasonably complete. It explains what the tool returns (normalizer chains and dependencies) and implies a read-only discovery operation. However, it does not mention any context such as when to use this over sibling tools or whether it only applies to indexes created with specific options, leaving a small gap.

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 input schema has zero parameters, and schema description coverage is 100% (trivially). Per the rubric, the baseline for zero parameters is 4. The description does not need to elaborate on parameters since there are none, and the schema already confirms this.

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 uses a specific verb ('Discover') and clearly identifies the resource ('trusted index-level normalizer chains and NormalizerTable dependencies'). It distinguishes this tool from siblings like pgroonga_normalize_text (which normalizes text) and pgroonga_validate_normalization_profile (which validates profiles).

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 provides no guidance on when to use this tool versus alternatives. It does not mention any sibling tools, prerequisites, or typical use cases. An agent is left to infer that this is for listing normalization profiles with no exclusions or context.

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

pgroonga_lookup_variantsC

Normalize text and return bounded dictionary variants for the discovered profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes
inputYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
inputYes
profileYes
variantsYes
canonicalYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description must carry the burden of behavioral disclosure. 'Bounded' and 'discovered profile' are unexplained, and the description does not mention error conditions, limits, or side effects. The two-line description adds little beyond the tool's basic function.

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

Conciseness4/5

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

The description is a single, front-loaded sentence that gets to the point quickly. No wasted words, but the jargon ('bounded dictionary variants', 'discovered profile') makes it less accessible. Overall, it is concise but could be clearer.

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

Completeness2/5

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

An output schema exists, so return-value details are presumably covered, but the description still leaves critical context missing: what does 'bounded' mean (limit, max size?), how is the profile discovered, and what errors can occur? For a tool with two parameters and no annotations, this is insufficient for confident use.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not clarify the parameters. It mentions 'text' (likely the input) but never explains that 'index' refers to a Groonga index or how it relates to the profile. With zero coverage, the description should compensate, but it doesn't.

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

Purpose4/5

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

The description states a clear action: 'Normalize text and return bounded dictionary variants.' It distinguishes itself from sibling pgroonga_normalize_text by adding the dictionary-variants return. However, 'for the discovered profile' is ambiguous and could confuse agents (which profile? how discovered?).

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?

The tool's intended use is implied: use when you need both normalization and dictionary-based variant lookup. But there is no explicit guidance on when to prefer this over pgroonga_normalize_text or pgroonga_search, and no mention of prerequisites (e.g., an existing index or normalization profile).

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

pgroonga_normalize_textC

Normalize text with a discovered PGroonga index profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
inputYes
changedYes
profileYes
normalizedYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits on its own. It does not mention whether the operation is read-only, what the output looks like, or how errors are handled if the index or profile is not found. This lack of behavioral detail leaves the agent uncertain about side effects and return values.

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

Conciseness4/5

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

The description is a single, focused sentence without redundancy, making it concise and easy to parse. It front-loads the action and resource but omits necessary details; however, from a pure conciseness standpoint, it is well-structured. It loses one point because the brevity borders on under-specification.

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

Completeness2/5

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

Given the tool's two parameters, zero schema descriptions, no annotations, and a hidden output schema, the description is far from complete. It fails to explain the meaning of 'discovered,' the expected output shape, or how this tool fits into the broader PGroonga suite. An agent cannot confidently invoke this tool based solely on the provided information.

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

Parameters1/5

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

The schema has 0% description coverage, and the description does not explain the 'index' or 'text' parameters beyond their names. An agent cannot infer what values are valid, how they relate to the normalization process, or what 'discovered' means for the index parameter. The description fails to compensate for the schema's lack of parameter documentation.

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

Purpose4/5

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

The description states the primary action clearly: 'Normalize text with a discovered PGroonga index profile.' It names a specific verb and resource, and it is distinguishable from sibling tools like search or list operations. However, 'discovered' is vague and could confuse an agent about how the profile is obtained, so it doesn't fully earn the top score.

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 provides no guidance on when to use this tool versus alternatives such as 'pgroonga_search' or 'pgroonga_list_normalization_profiles.' There is no mention of typical workflows, prerequisites, or exclusions, so an agent receives no help with tool selection. This is a clear gap.

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

pgroonga_server_infoB

Discover PostgreSQL, PGroonga, Groonga, and feature capabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
notesYes
readOnlyYes
roleNameYes
capabilitiesYes
databaseNameYes
groongaVersionYes
extensionSchemaYes
postgresVersionYes
extensionVersionYes
supportedSearchModesYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, and the description says nothing about side effects, read-only status, authentication requirements, or response behavior. The agent is left to infer that 'discover' is safe, but this is not explicitly stated.

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

Conciseness4/5

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

The description is a single, concise sentence with no fluff. It is properly front-loaded with the action. Slight redundancy in 'feature capabilities' is minor and does not detract significantly.

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?

For a simple zero-parameter info tool, the description is acceptable. It conveys the core purpose, and the output schema covers return values. However, it lacks use-case context and does not differentiate from the health tool, making it less complete than it could be.

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 no parameter documentation is needed. The schema is empty, and the description correctly avoids inventing parameter details. A baseline of 4 is appropriate given the absence of parameters.

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

Purpose4/5

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

The description uses 'Discover' as a clear verb and specifies the resources: PostgreSQL, PGroonga, Groonga, and feature capabilities. This distinguishes it from sibling tools that focus on search, indexes, or normalization.

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 provides no guidance on when to use this tool versus alternatives. It does not mention pgroonga_health or other relevant sibling tools that might overlap in purpose.

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

pgroonga_validate_normalization_profileA

Validate dictionary mappings and report normalization hazards without modifying data.

ParametersJSON Schema
NameRequiredDescriptionDefault
indexYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
profileYes
findingsYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It explicitly states 'without modifying data,' which is a key safety guarantee. It does not disclose other behaviors like required permissions, but the main risk of mutation is directly addressed, so this is strong transparency.

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, concise sentence with no wasted words. It front-loads the action ('Validate') and adds a safety qualifier, achieving maximum clarity in minimal space.

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?

With one parameter, an output schema, and a short description, the tool is adequately specified. The description covers the purpose and non-mutating behavior, and the output schema likely documents the report structure. It doesn't explain parameter semantics, but that's a separate dimension.

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

Parameters2/5

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

Schema description coverage is 0% for the 'index' parameter, and the description does not explain what this parameter refers to. It does not compensate for the lack of schema description, leaving the agent to infer that 'index' identifies the normalization profile to validate.

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 uses the specific verb 'Validate' with clear resources ('dictionary mappings' and 'normalization hazards'), and the phrase 'without modifying data' adds a non-destructive scope. This clearly distinguishes it from sibling tools like pgroonga_list_normalization_profiles or pgroonga_normalize_text, which perform different actions.

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?

The description provides clear context for use: it is a validation tool that does not modify data, which implies when to use it versus tools that alter or list data. It does not explicitly name alternatives or exclusions, but the non-destructive validation context is unambiguous enough for a 4.

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.

  1. 9 tool updatesv0.1.0
    • First observedpgroonga_explain_search
    • First observedpgroonga_health
    • First observedpgroonga_list_indexes
    • First observedpgroonga_list_normalization_profiles
    • First observedpgroonga_lookup_variants
    • First observedpgroonga_normalize_text
    • First observedpgroonga_search
    • First observedpgroonga_server_info
    • First observedpgroonga_validate_normalization_profile

TDQS

B3.4/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct operation: server info, index listing, search, explain, normalization profiles, text normalization, variant lookup, normalization validation, and health. No two tools appear to do the same thing, and the descriptions make boundaries clear.

Naming Consistency4/5

All tools share the pgroonga_ prefix and mostly follow a verb_noun pattern (list_indexes, normalize_text, validate_normalization_profile). A few like 'search' and 'health' are simple nouns/verbs, but the overall convention is consistent and predictable.

Tool Count5/5

Nine tools is well-scoped for a domain-specific MCP focused on PGroonga search and normalization. Each tool serves a clear purpose without redundancy or bloat.

Completeness4/5

The tool surface covers the full workflow: discovering capabilities and indexes, executing and explaining searches, examining normalization, normalizing text, and validating profiles. It lacks explicit search-history or index-creation tools, but for a read-oriented MCP this is complete.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides read-only access to PostgreSQL databases, enabling users to inspect database schemas and execute read-only queries through a Model Context Protocol server.
    4
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that provides AI assistants with secure, read-only access to PostgreSQL databases while offering comprehensive tools for schema exploration, query validation, and performance optimization.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server providing read-only access to PostgreSQL databases, enabling LLMs to inspect database schemas and execute read-only SQL queries.
    64,378 npm
    MIT