MongrelDB-Viewer
Integrates with OpenAI-compatible Chat Completions endpoints to provide an agent chat tool loop over the connected MongrelDB database, allowing the model to invoke database tools and work with database data.
MongrelDB Viewer is free and open source. Use it as a local vector database GUI or expose the open database through its local vector database MCP server.
What it does
MongrelDB Viewer has two connection modes:
Capability | Direct folder |
|
Open style | Embedded, exclusive filesystem lock | Multi-client HTTP |
Browse schema and rows | Yes | Yes |
Run SQL, DDL, and DML | Yes | Yes, when the server permits it |
Show foreign-key graph | Yes | Not exposed by the current server adapter |
Native | Yes | No, SQL ANN fallback |
Install, backfill, or rebuild ANN from the UI | Yes | No |
Run REINDEX | Yes | Sent as server SQL |
Agent and in-app MCP | Yes | Yes |
Catalog credentials and encryption passphrase | Yes | Server auth only |
Direct mode uses mongreldb-core and mongreldb-query in the application
process. Server mode uses mongreldb-client against a running daemon. See
connection modes before opening production data.
Related MCP server: mmnt-mcp-server
Gallery
Screenshots use the bundled six-table demo database.
Deck | Schema map |
|
|
Table browser | SQL workbench |
|
|
Vector search | Agent chat |
|
|
MCP bridge | About |
|
|
Install
Download a package, when attached, from GitHub Releases. If no package matches your platform, build from source:
git clone https://github.com/visorcraft/MongrelDB-Viewer.git
cd MongrelDB-Viewer
npm ci
npm run tauri buildSource builds need Rust 1.88+, Node.js 22+, and the native libraries
required by Tauri 2. Bundles are written below
src-tauri/target/release/bundle/.
See installation and builds for platform prerequisites, development mode, Linux display behavior, upgrades, and model downloads.
Five-minute tour
npm ci
npm run tauri devThen:
Leave Direct folder selected.
Choose an empty directory.
Click Create demo DB.
Open Deck, Stars, Table, and SQL.
In ANN, search
hybrid retrieval across indexes.
Demo creation writes six tables, foreign keys, representative secondary
indexes, a 384-dimensional embedding column, and dense HNSW ANN. The first run
may download all-MiniLM-L6-v2. If the download is unavailable, demo creation
can fall back to zero vectors; use Re-embed from text column after the model
becomes available.
The demo button hides after its first successful use. Reopen the demo through Recent or Direct folder on later launches. The complete walkthrough and schema are in first launch and demo.
Product surfaces
Surface | Purpose |
Deck | Connection metadata, table and row totals, index capabilities, live insights, and schema-derived SQL recipes |
Stars | Pan and zoom graph of database, tables, columns, indexes, and Direct-mode foreign keys |
Table | Column types and flags, embedding source, index options, row samples, and REINDEX |
SQL | MongrelDB/DataFusion workbench with recipes, in-memory history, result grid, and CSV copy |
ANN | Direct-mode ANN install/rebuild/backfill and table-scoped semantic search |
Agent | OpenAI Chat Completions-compatible tool loop over the current database |
MCP | Local HTTP JSON-RPC server or separate stdio process with the same tool surface |
About | Product metadata, complete license texts, dependency credits, and runtime notices |
The Viewer recognizes all six public MongrelDB secondary-index families: Bitmap, LearnedRange/PGM, FM, ANN, Sparse, and MinHash.
Safety before use
SQL, Agent, and MCP tools are not read-only. They can run DDL, DML, REINDEX, and ANN installation without a per-statement confirmation dialog.
Direct mode owns an exclusive database lock. Disconnect before another exclusive process opens the root, and disconnect before filesystem backups.
The in-app MCP endpoint has no authentication. The UI binds it to
127.0.0.1; any local process that can reach the port can invoke its tools.Clicking Save in Agent stores the base URL and model in WebView
localStorage. The API key remains in process memory and is cleared on exit.Prompts and tool results sent to a remote chat endpoint can contain database data.
Read the security policy and operations guide for the full trust model and local-data inventory.
Documentation
Start here:
Use the application:
Operate and extend it:
Architecture at a glance
React + TypeScript
|
| Tauri invoke
v
Rust command layer
|
+-- Direct: mongreldb-core + mongreldb-query
|
+-- Server: mongreldb-client + HTTP
|
+-- Embeddings: fastembed MiniLM
|
+-- Shared tools: Agent chat + MCP HTTP/stdioThe active connection and embedding hub are shared by SQL, Agent, and in-app MCP. Stdio MCP is a separate process and must open its own Direct or Server connection. See architecture for lifetimes, data flows, trust boundaries, source layout, and extension points.
Development gate
npm ci
npm run build
cargo fmt --manifest-path src-tauri/Cargo.toml --check
cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets --all-features -- -D warnings
cargo test --manifest-path src-tauri/Cargo.tomlDependency changes also require:
scripts/regen-credits.shFull workflow: CONTRIBUTING.md.
Support and policy
Bugs and feature requests: GitHub Issues
Vulnerabilities: use private reporting described in SECURITY.md
MongrelDB engine questions: visorcraft/MongrelDB
Related tools
Mongrel — Commercial multi-system workbench with native MongrelDB support.
MongrelDB Viewer — Free, open-source MongrelDB GUI and MCP server.
License
MongrelDB Viewer is available under MIT OR Apache-2.0. See LICENSE-MIT and LICENSE-APACHE.
Available Tools
9 toolsconstellationC
Return the schema constellation graph (tables, columns, indexes).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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. It implies a read-only metadata fetch but says nothing about cost, whether the graph is large, whether it covers all schemas or one, or what the returned structure looks like — and with no output schema, the word "graph" is never disambiguated.
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 front-loaded sentence with no filler. It is lean and readable; the terseness here reflects missing content rather than wasted 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?
For a zero-param tool with no annotations and no output schema, the description is the only source of information about the return value, and it leaves the central concept ("constellation graph") and its shape unexplained. An agent cannot predict what it will receive or how it differs from database_overview.
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 takes zero parameters, which is the baseline-4 case; there is nothing for the description to clarify, and the empty schema is unambiguous.
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 verb "Return" and the parenthetical "(tables, columns, indexes)" make the resource concrete, but "schema constellation graph" is undefined jargon and the description never distinguishes this from siblings like database_overview, list_tables, or describe_table. An agent can guess it returns schema metadata but not why it exists separately from those tools.
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 statement of when to call this instead of database_overview/list_tables/describe_table, and no exclusions or prerequisites. The agent must infer usage entirely from the tool name and the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
database_overviewA
High-level overview of the open database: path or server URL, connection mode, tables, ANN readiness.
| 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 more burden. It helpfully discloses the key returned fields and implies a read-only overview, but it does not explicitly state that it is non-mutating, whether it requires an open connection, or how the overview is structured.
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, front-loaded sentence that identifies the tool's purpose and enumerates the useful outputs without any filler. Every phrase contributes to understanding what the overview returns.
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 overview tool with no output schema, the description is nearly complete: it names the main fields returned. It could be strengthened with a brief note on when to choose it over list_tables or describe_table, but the core context is present.
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 takes zero parameters, so the baseline is 4. The description correctly does not invent parameter details and simply describes the no-argument overview behavior.
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 resource and summarizes exactly what the overview contains: path or server URL, connection mode, tables, and ANN readiness. It is clearly distinct from more granular siblings such as list_tables or describe_table, though it does not explicitly name those 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?
The phrase 'high-level overview' implies this is a summary/orientation tool, but there is no explicit guidance on when to use it instead of list_tables, describe_table, or other siblings. Usage is inferable but not specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_tableA
Describe a table: columns, types, flags, and secondary indexes (Bitmap/PGM/FM/ANN/Sparse/MinHash).
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | Table name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden, and it does disclose the return surface (columns, types, flags, and index kinds such as Bitmap/PGM/FM/ANN/Sparse/MinHash). It says nothing about behavior on a missing table, permissions, or whether the call is purely read-only, which leaves real gaps 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and resource, then the return contents. Nothing is repeated and nothing is wasted.
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?
With no output schema, the description must describe return values and does so adequately by listing the column/type/flag/index details. Only minor omissions remain, such as error behavior for an unknown table or the exact shape of the returned schema object.
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 single 'table' parameter is 100% documented in the schema, so the baseline of 3 applies. The description adds no naming/qualification rules (e.g., schema-qualified names, case sensitivity) beyond what the schema states.
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 a specific verb ('describe') and resource ('a table') and enumerates what is returned: columns, types, flags, and secondary indexes. It is distinguishable from list_tables and database_overview by its single-table focus, though it never names those siblings.
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 only implied — an agent infers it should call this when it needs a table's schema. There is no explicit 'use this instead of list_tables/database_overview when...' guidance, and no note on prerequisites such as the table needing to exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_sqlC
Run a MongrelDB SQL statement (DataFusion). Prefer read-only SELECT for exploration.
| 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 at all, so the description carries the full burden. It never says whether writes/DDL are permitted or persist, what permissions are required, how errors surface, or what the result looks like. "Prefer read-only SELECT" hints at risk without quantifying it.
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?
Two short sentences, zero repetition, with the core action front-loaded. It is terse to the point of under-specification, but contains no 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 an arbitrary-SQL execution tool with no annotations and no output schema, the description says almost nothing about security posture, mutability, result shape, or row-limit semantics. An agent could call it correctly mechanically, but not safely or predictably.
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. It only implicitly maps "SQL statement" to the `sql` parameter and adds the dialect hint; `max_rows` (bounds 1–10000) is never mentioned, including what it caps or whether a default applies.
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 a specific verb and resource ("Run a MongrelDB SQL statement") and names the query engine (DataFusion), so the agent knows this is the raw-SQL escape hatch. It does not explicitly contrast itself with structured siblings like list_tables or describe_table, leaving differentiation implicit.
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?
"Prefer read-only SELECT for exploration" implies a usage posture (exploration vs. mutation) but never states when to call this instead of list_tables/describe_table/semantic_search, nor any exclusions. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_dense_annA
Install ANN on a table (direct/local only). Default algorithm=hnsw, quantization=dense (full f32 cosine). Supported pairs: hnsw×{dense,binary_sign,product}, diskann×dense, ivf×dense. product requires product_num_subvectors (must divide dimension). Set rebuild=true to drop and recreate.
| Name | Required | Description | Default |
|---|---|---|---|
| table | Yes | ||
| rebuild | No | Drop existing ANN on the embedding column and recreate with the requested options | |
| algorithm | No | ANN graph/structure algorithm | hnsw |
| dimension | No | ||
| diskann_l | No | DiskANN build search-list L | |
| diskann_r | No | DiskANN max degree R | |
| ivf_nlist | No | ||
| ivf_nprobe | No | ||
| provider_id | No | ||
| product_bits | No | Bits per PQ subvector (only 8 supported) | |
| quantization | No | dense = full f32 cosine; binary_sign = legacy compact Hamming; product = PQ codes | dense |
| backfill_limit | No | ||
| embedding_column | No | embedding | |
| diskann_beam_width | No | ||
| source_text_column | No | ||
| product_num_subvectors | No | Required for product quantization; must evenly divide dimension |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description still carries the most important behavioral fact: rebuild=true drops and recreates the existing index, a destructive side effect the agent would otherwise not know. It also states the supported algorithm/quantization pairing matrix and the product_num_subvectors divisibility constraint. It stops short of covering cost/duration, idempotency, or what happens when an incompatible pair is requested.
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?
Four short sentences, front-loaded with the action and its scope, followed by defaults, the validity matrix, and the destructive-rebuild warning. The compact "hnsw×{dense,binary_sign,product}" notation encodes a large constraint set with almost no tokens.
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 16-parameter, annotation-free install tool this is only partially adequate: it nails the algorithm/quantization interplay but leaves nine or so tuning and plumbing parameters (diskann_l/r, ivf tuning, provider_id, backfill_limit, embedding/source columns) undescribed. Without an output schema, the description also says nothing about what the install returns or how progress is reported.
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 only 44%, so the description must compensate, and it does for the highest-risk parameters: it supplies defaults (hnsw, dense), defines the cross-parameter validity matrix across algorithm and quantization, and explains that product requires product_num_subvectors evenly dividing dimension — a constraint the schema can only hint at. Roughly half the parameters (diskann_l/r, ivf_nlist/nprobe, provider_id, backfill_limit, diskann_beam_width, source_text_column) receive no guidance in either place.
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?
"Install ANN on a table" is a specific verb plus resource, and it adds a scope qualifier ("direct/local only") that tells the agent this is a local-index build rather than a remote/managed operation. It never names a sibling such as reindex or semantic_search, so the boundary with those tools is left to inference.
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 "direct/local only" parenthetical and the rebuild=true note imply some usage context, but there is no explicit statement of when to call this versus reindex, or what prerequisites exist (existing embedding column, provider availability). The reader must infer the call conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_embedding_providersB
List embedding providers available in the viewer.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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; it implies a read-only enumeration via 'List' but never states safety, whether results are cached, or whether the 'viewer' scope differs from what the server exposes. For a zero-parameter listing operation the residual risk is low, so this is adequate but thin.
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 front-loaded sentence with no filler or redundancy; every word contributes to the 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?
There is no output schema, so the description should indicate what a provider entry looks like (name only, or name plus model/config). It doesn't, leaving the agent unsure what it will receive, though the operation itself is simple enough that little else is required.
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 takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies.
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?
Specific verb 'List' plus resource 'embedding providers' and a scope qualifier ('available in the viewer'). An agent can distinguish it from list_tables or semantic_search from the name alone, though the description does not explicitly contrast with those siblings.
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 no when-to-use, when-not-to-use, or prerequisite guidance. It never states the relationship to semantic_search, install_dense_ann, or reindex, which are the natural follow-on/alternative tools once an agent knows which providers exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tablesA
List all tables in the open MongrelDB database with row counts and index capabilities.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It does disclose useful behavior beyond the name by promising row counts and index capabilities in the result, and 'List' implies a read-only operation, but it never states that it is non-destructive or whether counts are computed live versus cached.
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 front-loaded sentence with no filler; the scope and returned fields are delivered immediately. Every clause 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?
With no output schema, the description usefully names what comes back (tables, row counts, index capabilities), which is the main thing an agent needs to know. It stops short of explaining result ordering or size, but for a zero-parameter enumeration tool that is a minor gap.
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 takes zero parameters, which sets the baseline at 4. There is nothing parameter-wise for the description to explain, and it correctly avoids inventing filtering options.
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 and resource ('List all tables') plus the scope ('in the open MongrelDB database') and the payload returned ('row counts and index capabilities'). It is clearly distinct from describe_table in spirit, but it never names that sibling, so an agent must infer the enumeration-vs-detail split.
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 explicit statement of when to call this instead of describe_table, database_overview, or semantic_search, and no prerequisites or exclusions. The discovery use case is only implied by the word 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reindexA
Run engine REINDEX maintenance (analyze + compact + GC). Omit table for the whole database; pass table for one table.
| Name | Required | Description | Default |
|---|---|---|---|
| table | No | Optional table name. Empty/omit = REINDEX entire database. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full behavioral burden. It does disclose the concrete maintenance steps and 'GC' hints at mutation, but it omits whether the operation is blocking, how expensive or long-running it is, and whether it should be avoided during active workloads — material gaps for a database-wide maintenance operation.
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?
Two tight sentences with no filler; the operation and its sub-steps come first, followed immediately by the scoping rule. Every clause carries information.
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 low-complexity, single-optional-parameter tool with no output schema, the description covers purpose and scope adequately. The remaining hole is operational impact (duration, locking, permissions) which matters for a whole-database REINDEX but is not addressed.
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 100% and the single parameter is already documented as 'Optional table name. Empty/omit = REINDEX entire database.' The description restates that behavior rather than adding format, naming, or validation detail beyond the schema, so baseline 3 applies.
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 a specific verb ('Run') and resource ('engine REINDEX maintenance') and even enumerates the sub-operations (analyze + compact + GC), so the agent knows exactly what the call does. It doesn't explicitly contrast with any sibling, but no sibling tool offers maintenance, so confusion is unlikely.
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?
'Omit table for the whole database; pass table for one table' gives clear scope guidance for the parameter. However, it never says when to choose this tool (e.g. after bulk loads or deletes) or whether there are preconditions, costs, or times to avoid running it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
semantic_searchB
Dense ANN semantic search using a query string (requires embedding column + ANN index). Prefers MongrelDB 0.64 native retrieve_text with semantic-identity provenance; falls back to SQL ann_search_exact.
| Name | Required | Description | Default |
|---|---|---|---|
| k | No | ||
| query | Yes | ||
| table | Yes | ||
| min_score | No | Cosine similarity floor; drops weak hits (exact path only) | |
| projection | No | ||
| provider_id | No | Required when the embedding column is application-supplied; must match the vector model | |
| exact_rerank | No | ||
| embedding_column | No | embedding |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the native retrieve_text preference and SQL fallback plus semantic-identity provenance, but it omits permissions, expected return shape, error behavior, and performance/limits.
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 definition is compact and front-loads the core purpose before implementation detail. The second sentence is dense but earns its place by explaining the execution path, though jargon like 'semantic-identity provenance' is not unpacked.
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 an 8-parameter tool with no annotations, no output schema, and low schema description coverage, the description is not complete enough. It explains the search mode but not most parameter meanings or the result behavior an agent would need to invoke it confidently.
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 only 25%, so the description must compensate. It mentions the query string and embedding column/ANN index, but it leaves many parameters such as k, table, projection, and exact_rerank without added semantic meaning.
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 gives a specific verb and resource: dense ANN semantic search using a query string. It also states key prerequisites (embedding column and ANN index), but it does not explicitly distinguish this tool from alternatives such as execute_sql or install_dense_ann beyond implying infrastructure requirements.
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?
It names prerequisites and describes an implementation preference/fallback, which implies when the tool is usable. However, it does not explicitly say when to choose it over siblings, what to do if the ANN index is missing, or when not to use it.
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.
9 tool updates
v1.6.7- First observed
constellation - First observed
database_overview - First observed
describe_table - First observed
execute_sql - First observed
install_dense_ann - First observed
list_embedding_providers - First observed
list_tables - First observed
reindex - First observed
semantic_search
TDQS
Scored across 9 tools
Most tools are distinct, but schema-inspection duties overlap: list_tables vs database_overview both report tables, and describe_table vs constellation both expose columns and indexes. Descriptions hint at differences (connection-level vs graph-level), yet an agent can plausibly pick the wrong one for a simple 'what tables exist' or 'what indexes are here' question. Execution-oriented tools (execute_sql, semantic_search, install_dense_ann, reindex) are clearly separated.
Eight of nine names are snake_case, but the verb_noun pattern is broken by noun-only entries (constellation, reindex) and a noun_noun entry (database_overview). Naming is still readable and predictable enough to infer intent, but it is not a uniform convention.
Nine tools is well within the ideal 3-15 range and each maps to a real operation in a database viewer (inspect, query, index, maintain, discover providers). No tool feels redundant enough to remove wholesale, and none of the surface is padded.
Exploration, ANN setup, maintenance, and provider discovery are all covered, with execute_sql acting as a general escape hatch for anything missing. Minor gaps remain: no way to drop/uninstall an ANN index schema-side, no explain/query-plan tool, and no explicit listing of installed ANN indexes per column beyond describe_table.
Maintenance
Related MCP Connectors
An MCP server for search and retrieval over a local LanceDB database
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
DocBase MCP server for AI agents
MCP server for Gramps genealogy via the Gramps Web API: CRUD, search, merge, timelines, DNA.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceFull featured MCP Server for MongoDB database analysis.105 npm208MIT
- MIT
- AlicenseAqualityAmaintenanceMCP Server for local knowledge management. Semantic + keywords + tags846 PyPI24MIT
- AlicenseNot gradedqualityDmaintenanceA lightweight MCP server for MongoDB 3.6+ providing read, write, metadata, and management tools.28 npm1MIT







