Elasticsearch / OpenSearch backend binding plugin for mcpg. Exposes search/count/get/index/delete/bulk/msearch as MCP tools, dispatching to the ES REST API via reqwest (rustls-tls), with an index-name allowlist + path-injection guard, https-or-localhost base-URL constraint, DNS-rebinding/SSRF guard, and per-caller cred:// auth resolution.
8 tools with complete JSON schemas and descriptions present. Naming follows verb_noun pattern (search, count, get, index, delete, bulk, msearch, knn). Descriptions are concise (40-120 chars) but lack actionable context for LLM selection, they state WHAT but not WHEN or WHY. Parameter descriptions exist but are minimal (e.g., 'Target index' lacks guidance on allowlist constraints). No output schemas documented. Error handling and recovery guidance absent. Security model (index allowlist, SSRF guard, cred:// auth) is implemented but not surfaced in tool descriptions. Missing idempotent/destructive hints despite having WRITE and DESTRUCTIVE risk classifications.
Elasticsearch bulk operation - perform multiple index/delete operations in a single request
Elasticsearch count operation - count documents matching a query
Elasticsearch delete operation - delete a document by ID
Elasticsearch get operation - retrieve a single document by ID
Elasticsearch index operation - create or update a document
Elasticsearch kNN operation - vector similarity search using dense_vector field
No output schemas documented. LLMs cannot predict response structure, forcing them to guess field names for downstream tool calls. Breaks tool chaining.
Descriptions lack WHEN/WHY context. 'Elasticsearch search operation' does not tell LLM when to prefer search vs msearch vs knn. Descriptions should explain selection criteria and dependencies.
Parameter descriptions are minimal. 'Target index (must be in the binding allowlist; defaults to default_index)' is present but does not explain what happens if index is not in allowlist or how to discover valid indices. No guidance on format or constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Elasticsearch multi-search operation - execute multiple search queries in a single request
Elasticsearch search operation - query documents with DSL, pagination, sorting, aggregations, and source filtering
Destructive operations (delete, bulk with delete actions) lack confirmation or dry-run support. No error recovery guidance. LLMs cannot self-correct if they accidentally delete wrong documents.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) not exposed in schema. Risk classifications exist in code (READ_ONLY, WRITE, DESTRUCTIVE) but are not surfaced to MCP clients.