vector-mcp
Manage governed vector collections and retrieve information through semantic, lexical, and hybrid search via MCP.
Create vector collections, optionally with confirmation/overwrite controls.
Add documents from inline content or configured/relative document paths.
List existing collections and inspect collection inventory.
Delete collections, with destructive/idempotent semantics and confirmation support.
Run semantic search, lexical search, or combined search with weighting, result count, and reciprocal-rank-fusion tuning.
Select the vector backend via
db_type, defaulting to the native epistemic-graph engine with opt-in PostgreSQL/pgvector, Qdrant, and MongoDB Atlas providers.Use dynamic action-routed tools, tool toggles, and runtime tool filtering to limit exposed capabilities and context usage.
Allows interacting with Couchbase as a vector database, enabling collection management (create, delete, list) and document operations (add, search via semantic, lexical, or hybrid methods).
Allows interacting with MongoDB as a vector database, enabling collection management (create, delete, list) and document operations (add, search via semantic, lexical, or hybrid methods).
Click on "Deploy 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., "@vector-mcpsearch for 'climate change' in my vector database"
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.
vector-mcp
Action-routed MCP and agent interfaces for governed vector collection management and retrieval. The native default is epistemic-graph. Secure opt-in providers cover PostgreSQL/pgvector, Qdrant, and MongoDB Atlas.
Governed capability
MCP tools:
vector_collection_managementandvector_searchSkill provider: the consolidated
vector-mcp-operationsworkflowOntology provider: the packaged vector retrieval ontology
Source connector provider: a read-only vector collection inventory preset
Runtime configuration: AgentConfig, environment variables, and secret references
Privacy posture: no checked-in endpoints, credentials, personal identity, or host paths
Related MCP server: production-grade-mcp-agentic-system
Install
Use the smallest extra set required by the deployment:
uvx --from 'vector-mcp[mcp]' vector-mcpThe runtime requires scion-sdk>=0.2.0 and its self-contained full
epistemic-graph engine contract. A bare numeric-only or partial engine profile is not a
supported deployment.
For a selected storage provider:
uv add 'vector-mcp[postgres]'
uv add 'vector-mcp[qdrant]'
uv add 'vector-mcp[mongodb]'The all extra enables every supported optional provider plus the agent, Langfuse, and
Logfire runtimes. Production images should install only the providers they operate.
MCP configuration
The package includes a neutral agent-start configuration containing only the command, condensed tool mode, and tool toggles. Runtime values are inherited from AgentConfig or injected by the operator. Detailed instructions on how to use the underlying API wrappers, extended schema bindings, and developer SDK references are maintained in docs/index.md.
MCP
This server use dynamic Action-Routed tools to optimize token overhead and maximize IDE compatibility.
Available MCP Tools
Auto-generated from the live MCP server — do not edit by hand.
Condensed action-routed tools (MCP_TOOL_MODE=condensed)
MCP Tool | Toggle Env Var | Description |
|
| Manage collection management operations. |
|
| Manage search operations. |
2 action-routed tool(s) · 0 verbose 1:1 tool(s). Each is enabled unless its <DOMAIN>TOOL toggle is set false; MCP_TOOL_MODE selects the surface (intent default — the six verb-tools, granular set loaded on demand · condensed action-routed · verbose 1:1 · both). Auto-generated — do not edit.
Detailed tool schemas, parameter shapes, and validation constraints are preserved in the usage guide.
Dynamic Tool Selection & Visibility
This MCP server supports dynamic toolset selection and visibility filtering at runtime. This allows the operator to restrict the set of exposed tools to prevent blowing up the LLM's context window.
The operator can configure tool filtering via multiple input channels:
CLI Arguments: Pass
--toolsor--toolsets(or their disabled counterparts--disabled-toolsand--disabled-toolsets) during startup.Environment Variables: Define standard environment variables:
MCP_ENABLED_TOOLS/MCP_DISABLED_TOOLSMCP_ENABLED_TAGS/MCP_DISABLED_TAGS
HTTP SSE Request Headers: Pass custom headers during transport initialization:
x-mcp-enabled-tools/x-mcp-disabled-toolsx-mcp-enabled-tags/x-mcp-disabled-tags
HTTP SSE Request Query Parameters: Append query parameters directly to the operator's transport connection URL:
?tools=tool1,tool2?tags=tag1
When query strings or parameters are provided, an LLM-free Knowledge Graph resolution layer (using DynamicToolOrchestrator) matches query intents against known tool tags, names, or descriptions, with safe fallback and automated 24-hour background cache refreshing.
MCP Configuration Examples
Install the connector-focused
[mcp]extra. Examples usevector-mcp[mcp]to add FastMCP / FastAPI throughscion-sdk[mcp].
stdio Transport (local IDEs — Cursor, Claude Desktop, VS Code)
{
"mcpServers": {
"vector-mcp": {
"command": "uvx",
"args": [
"--from",
"vector-mcp[mcp]",
"vector-mcp"
],
"env": {
"MCP_TOOL_MODE": "intent",
"COLLECTION_MANAGEMENTTOOL": "True",
"DATABASE_TYPE": "epistemic_graph",
"DB_PASSWORD_REF": "secret://runtime/db-password",
"DB_PORT": "5432",
"DB_USERNAME_REF": "secret://runtime/db-username",
"MONGODB_MAX_POOL_SIZE": "20",
"MONGODB_REQUEST_TIMEOUT_MS": "30000",
"MONGODB_URI_REF": "secret://runtime/mongodb-uri",
"POSTGRES_MAX_POOL_SIZE": "20",
"POSTGRES_REQUEST_TIMEOUT": "30",
"QDRANT_API_KEY_REF": "secret://runtime/qdrant-api-key",
"QDRANT_REQUEST_TIMEOUT": "30",
"SEARCHTOOL": "True",
"VECTOR_DB_TYPE": "epistemic_graph"
}
}
}
}Runtime references require an alias-aware launcher such as Arbora. Other launchers must omit those entries and inject the resolved values through their own runtime secret boundary.
Streamable-HTTP Transport (networked / production)
{
"mcpServers": {
"vector-mcp": {
"command": "uvx",
"args": [
"--from",
"vector-mcp[mcp]",
"vector-mcp",
"--transport",
"streamable-http",
"--port",
"8000"
],
"env": {
"TRANSPORT": "streamable-http",
"HOST": "127.0.0.1",
"PORT": "8000",
"MCP_TOOL_MODE": "intent",
"COLLECTION_MANAGEMENTTOOL": "True",
"DATABASE_TYPE": "epistemic_graph",
"DB_PASSWORD_REF": "secret://runtime/db-password",
"DB_PORT": "5432",
"DB_USERNAME_REF": "secret://runtime/db-username",
"MONGODB_MAX_POOL_SIZE": "20",
"MONGODB_REQUEST_TIMEOUT_MS": "30000",
"MONGODB_URI_REF": "secret://runtime/mongodb-uri",
"POSTGRES_MAX_POOL_SIZE": "20",
"POSTGRES_REQUEST_TIMEOUT": "30",
"QDRANT_API_KEY_REF": "secret://runtime/qdrant-api-key",
"QDRANT_REQUEST_TIMEOUT": "30",
"SEARCHTOOL": "True",
"VECTOR_DB_TYPE": "epistemic_graph"
}
}
}
}Alternatively, connect to a pre-deployed Streamable-HTTP instance by url:
{
"mcpServers": {
"vector-mcp": {
"url": "http://localhost:8000/vector-mcp/mcp"
}
}
}Run a reviewed container image as a least-privilege stdio child (no listener or published port):
docker run -i --rm \
--read-only \
--cap-drop=ALL \
--security-opt=no-new-privileges \
--pids-limit=256 \
--tmpfs /tmp:rw,noexec,nosuid,nodev,size=64m \
-e TRANSPORT=stdio \
-e MCP_TOOL_MODE=intent \
-e COLLECTION_MANAGEMENTTOOL=True \
-e DATABASE_TYPE=epistemic_graph \
-e DB_PASSWORD_REF \
-e DB_PORT=5432 \
-e DB_USERNAME_REF \
-e MONGODB_MAX_POOL_SIZE=20 \
-e MONGODB_REQUEST_TIMEOUT_MS=30000 \
-e MONGODB_URI_REF \
-e POSTGRES_MAX_POOL_SIZE=20 \
-e POSTGRES_REQUEST_TIMEOUT=30 \
-e QDRANT_API_KEY_REF \
-e QDRANT_REQUEST_TIMEOUT=30 \
-e SEARCHTOOL=True \
-e VECTOR_DB_TYPE=epistemic_graph \
registry.example.invalid/vector-mcp@sha256:<digest> vector-mcpFor containerized network HTTP, supply an authenticated TLS ingress (or
direct server TLS), exact MCP_ALLOWED_HOSTS, and an exact trusted-proxy
CIDR policy through the operator-owned deployment profile. The generator
does not emit an unauthenticated non-loopback listener.
Auto-generated from the code-read env surface (MCP_TOOL_MODE + package vars) — do not edit.
Additional Deployment Options
vector-mcp can also run as a local container (Docker / Podman / uv) or be
consumed from a remote deployment. The
Deployment guide has full, copy-paste
mcp_config.json for all four transports — stdio, streamable-http,
local container / uv, and remote URL:
Local container / uv — launch the server from
mcp_config.jsonviauvx,docker run, orpodman run, or point at a local streamable-http container byurl.Remote URL — connect to a server deployed behind Caddy at
https://vector-mcp.example.invalid/mcpusing the"url"key.
Environment Variables
Package environment variables
Variable | Example | Description |
|
| |
|
| |
|
| options: stdio, streamable-http, sse |
| — | |
|
| Configure AgentConfig EMBEDDING_MODELS and its referenced runtime credentials. |
| — | Required only for filesystem ingestion. Supply the operator-owned root at runtime. |
|
| Backend used when db_type is unspecified. Default is the native epistemic-graph engine (local, zero-infra, durable). Options: epistemic_graph, postgres, mongodb, qdrant. DATABASE_TYPE is the canonical variable; VECTOR_DB_TYPE is accepted as an alias for backward compatibility. |
|
| |
| — | postgres/qdrant host |
| — | postgres/mongodb database name |
|
| |
|
| |
|
| |
|
| |
|
| |
| — | comma-separated SSRF allowlist for a private Qdrant host |
|
| seconds, 1-300 |
|
| connections, 1-100 |
|
| milliseconds, 1-300000 |
|
| connections, 1-100 |
|
| seconds, 1-300 |
|
| |
|
| |
| — | e.g. registry.example.invalid/vector-mcp@sha256: |
| — | e.g. registry.example.invalid/vector-mcp@sha256: |
Inherited agent-utilities variables (apply to every connector)
Variable | Example | Description |
|
| Tool surface: |
| — | Comma-separated tool allow-list |
| — | Comma-separated tool deny-list |
| — | Comma-separated tag allow-list |
| — | Comma-separated tag deny-list |
|
| Authorization mode: |
|
| Embedded Eunomia policy file |
| — | Remote Eunomia authorization server URL |
| — | OTLP collector endpoint |
| — | Outbound MCP child auth: |
| — | OIDC client id (service-account auth) |
|
| Runtime secret reference for the OIDC service account |
| — | HTTP Basic username ( |
|
| Runtime secret reference for HTTP Basic auth ( |
|
| Verbose logging |
|
| Unbuffered stdout (recommended in containers) |
|
| URL of the MCP server the agent connects to |
| — | Operator-configured LLM provider for the agent |
| — | Operator-configured model id for the agent |
|
| Serve the AG-UI web interface |
25 package + 20 inherited variable(s). Auto-generated from .env.example + the shared agent-utilities set — do not edit.
Every variable the server reads, grouped by purpose. See .env.example for the
canonical, copy-paste list — including the DATABASE_TYPE / GRAPH_SERVICE_SOCKET /
GRAPH_SERVICE_AUTH_SECRET connection settings for the native epistemic-graph backend. Backend
endpoints, database locations, and credentials for opt-in providers (Postgres/Qdrant/Mongo/
Chroma/Couchbase) are never README-documented literal values or MCP tool arguments — they resolve
through AgentConfig and secret:///env:///vault:// references at runtime.
MCP server / transport
Variable | Description | Default |
|
|
|
| Bind host (HTTP transports) |
|
| Bind port (HTTP transports) |
|
| Tool surface: |
|
| Comma-separated tool allow/deny list | — |
| Comma-separated tag allow/deny list | — |
| Unbuffered stdout (recommended in containers) |
|
Tool toggles
Each action-routed tool can be disabled individually via its toggle env var (set to false).
The full list is in the Available MCP Tools table above.
Variable | Description | Default |
| Enable the collection-management tool |
|
| Enable the search tool |
|
Telemetry & governance
Variable | Description | Default |
| Enable OpenTelemetry export |
|
| OTLP collector endpoint | — |
| OTLP auth keys | — |
| OTLP protocol (e.g. | — |
| Authorization mode: |
|
| Embedded policy file |
|
| Remote Eunomia server URL | — |
See .env.example for a copy-paste starting point.
Provider and ontology integration
The package contributes its skills, prompts, ontology, and source connector through Python entry points. The collection-inventory connector is intentionally read-only and registers collection metadata, not document or embedding payloads.
Generated connector signatures must be recreated only after the installed MCP schema is observed and a release signing key is provided at runtime. A signature from an older tool schema or ontology must never be copied forward.
Development checks
Low-cost checks that do not start providers:
python -m compileall -q vector_mcpProvider tests use mocked SDK boundaries and make no network calls. Live qualification is a separate deployment gate and must use operator-provided AgentConfig and secrets.
Documentation
The slim :mcp streamable-http container (docker/mcp.compose.yml) publishes
0.0.0.0:8000 with a /health check; see Deployment for the full
compose service definition.
License
See LICENSE.
Deploy with agent-utilities-deployment
Provision this package with the consolidated agent-utilities-deployment
workflow. It selects an installed-package, editable-source, or immutable-container
path; records only runtime secret and TLS-profile references in AgentConfig; and
runs doctor, registration, policy, observability, and rollback gates. Ask your agent
to "deploy vector-mcp with agent-utilities-deployment".
Install mode | Command |
Installed package |
|
Editable source |
|
Immutable container | deploy |
The repository embeds no deployment profile, credential value, certificate path, or
environment-specific endpoint. Supply those at runtime through AgentConfig and the
configured secret provider.
Installation
Pick the extra that matches what the operator want to run:
Extra | Installs | Use when |
| Slim MCP server only ( | The operator only run the MCP server (smallest install / image) |
| Everything ( | Development / both surfaces |
# MCP server only (recommended for tool hosting — slim deps)
uv pip install "vector-mcp[mcp]"
# Full agent runtime (Pydantic AI + epistemic-graph engine)
uv pip install "vector-mcp[mcp]"
# Everything (development)
uv pip install "vector-mcp[all]" # or: python -m pip install "vector-mcp[all]"Container image
The shared connector pipeline renders a slim :mcp image (vector-mcp[mcp], entrypoint
vector-mcp) from pyproject.toml at release time:
pipelines-connector render --root .
docker build -t knucklessg1/vector-mcp:mcp docker/The render command creates the release-owned docker/mcp.compose.yml; it runs the image with
the configured host publication.
Knowledge-graph database (epistemic-graph)
Graph storage, vector search and queries are served by epistemic-graph, run as its own database container. Deployment recipes (single-node + Raft HA), connection config, and the database architecture are in the epistemic-graph deployment guide.
Repository Owners
Contribute
Contributions are welcome! Please ensure code quality by running local checks before submitting pull requests:
Format code using
ruff format .Lint code using
ruff check .Validate type-safety with
mypy .Run test suites using
pytest
Available Tools
7 toolsvector_add_documentsAdd DocumentsC
Add documents (vector_collection_management). Manage collection management operations.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | confirm | |
| db_type | No | db type | |
| overwrite | No | overwrite | |
| document_paths | No | relative paths beneath the configured document root | |
| collection_name | No | collection name | |
| document_contents | No | document contents | |
| include_configured_directory | No | ingest the administrator-configured document root |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=false, destructiveHint=false, idempotentHint=false, so the description is not contradicting anything, but it also adds nothing beyond them. The two most consequential behaviors — what the non-idempotent overwrite flag does to existing collection contents, and what the confirm parameter gates (a safety confirmation for a write) — are never mentioned, and the description does not mention that ingestion can be scoped to the administrator-configured root via include_configured_directory.
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?
It is short, but the second sentence ("Manage collection management operations") earns nothing — it restates the parenthetical and actively misdirects toward collection management. Briefness here is under-specification rather than economy.
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 7-parameter non-idempotent write tool with an output schema, the description should at minimum explain the ingestion sources (paths vs inline contents vs configured directory) and the overwrite/confirm safety semantics. Since an output schema exists it needn't cover returns, but the mutation semantics gap is significant.
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%, so the schema already documents all 7 parameters, including the useful note that document_paths are relative paths beneath the configured document root. The description contributes zero additional parameter meaning, which lands at the baseline for high coverage.
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?
"Add documents" names a verb and resource, so the core action is guessable, but the follow-on "Manage collection management operations" muddies it — it describes collection management rather than document ingestion and does not say what kind of documents or where they land. No sibling distinction is offered, though none of the listed siblings appear to ingest documents.
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 versus other approaches, no mention of prerequisites (does the collection need to exist first, per vector_create_collection?), and no explanation of when to choose document_paths vs document_contents or when to set overwrite/confirm. The agent is left to infer everything from parameter names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vector_create_collectionCreate CollectionC
Create collection (vector_collection_management). Manage collection management operations.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | confirm | |
| db_type | No | db type | |
| overwrite | No | overwrite | |
| document_paths | No | relative paths beneath the configured document root | |
| collection_name | No | collection name | |
| document_contents | No | document contents | |
| include_configured_directory | No | ingest the administrator-configured document root |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=false, so the safety profile is largely covered by structured fields. The description adds nothing beyond those annotations: it does not explain overwrite behavior, confirmation requirements, document ingestion side effects, or what happens to existing collections.
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 short and front-loads 'Create collection', but the second sentence is redundant with the already-stated category and does not earn its place. It is concise but structurally wasteful.
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 collection-creation tool with seven optional parameters, document-path ingestion options, an overwrite flag, and a confirmation parameter, the description is far too thin. Even with an output schema and annotations covering safety, an agent needs more behavioral context about what creation entails and how the optional parameters interact.
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%, so the schema already documents all seven parameters. The description adds no parameter semantics of its own; given the high schema coverage, a baseline 3 is appropriate.
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 first clause names a specific verb and resource ('Create collection'), so the core action is identifiable. However, the parenthetical just repeats a category name and 'Manage collection management operations' is a tautological filler that adds no scope, constraints, or differentiation from siblings like vector_delete_collection or vector_add_documents.
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 guidance on when to use this tool instead of siblings, no prerequisites, and no mention of overwrite/confirm semantics. An agent only knows it is the create variant from its name, not from any stated usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vector_delete_collectionDelete CollectionCDestructiveIdempotent
Delete collection (vector_collection_management). Manage collection management operations.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | confirm | |
| db_type | No | db type | |
| overwrite | No | overwrite | |
| document_paths | No | relative paths beneath the configured document root | |
| collection_name | No | collection name | |
| document_contents | No | document contents | |
| include_configured_directory | No | ingest the administrator-configured document root |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with the annotations (destructiveHint=true, idempotentHint=true, readOnlyHint=false) but only because it simply says 'Delete collection.' It adds no behavioral detail beyond the annotations—nothing about what data is removed, whether deletion is reversible, or how the `confirm`, `overwrite`, and document-related parameters affect 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?
It is short and front-loads the deletion action, but the second sentence ('Manage collection management operations') is filler that does not earn its place. The first sentence mostly repeats the tool name and title.
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 destructive mutation tool with seven parameters, the description is incomplete: it omits confirmation behavior, deletion scope, and the role of unexpected document-related parameters. Annotations cover the basic safety profile and an output schema exists, but operational context is still missing.
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%, so the schema is the primary source for parameter documentation and the baseline is 3. The description itself adds no meaning about parameters; notably it does not explain why document ingestion parameters appear on a delete tool.
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 restates the tool name ('Delete collection') and adds only a vague domain label plus the tautological 'Manage collection management operations.' It does not distinguish this from siblings such as vector_create_collection beyond the obvious verb, and a reader gains no addition over the title.
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, when not to, or what alternatives exist. For a destructive collection operation, it also gives no prerequisites or confirmation guidance, leaving all routing and safety reasoning to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vector_lexical_searchLexical SearchC
Lexical search (vector_search). Manage search operations.
| Name | Required | Description | Default |
|---|---|---|---|
| rrf_k | No | rrf k | |
| db_type | No | db type | |
| question | No | question | |
| lexical_weight | No | lexical weight | |
| number_results | No | number results | |
| collection_name | No | collection name | |
| semantic_weight | No | semantic weight |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and idempotentHint=false, which signal a non-read, non-idempotent operation that a search tool would normally not be. The description's "Manage search operations" neither resolves nor explains this, and says nothing about what state might change, latency, or whether the index is mutated. With annotations this ambiguous, silence is a real gap.
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 short, so it is not bloated, but the second sentence ("Manage search operations") earns nothing and the first is front-loaded with an ambiguous cross-reference. Brevity here reflects under-specification rather than discipline.
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 7-parameter hybrid retrieval tool with weight parameters and RRF fusion settings, the description conveys zero operational information. An output schema exists so return values need not be covered, but nothing about how to combine lexical_weight/semantic_weight, what rrf_k controls, or what query field to populate 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?
Seven parameters exist (rrf_k, lexical_weight, semantic_weight, number_results, collection_name, question, db_type) and the description mentions none of them. Although schema coverage is nominally 100%, the schema descriptions are pure placeholders ("rrf k", "lexical weight"), so no meaning is conveyed by either source – the description should have compensated and did not.
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?
"Lexical search (vector_search)" gestures at a verb and resource, but the parenthetical points at a sibling tool rather than this one, and "Manage search operations" is filler that restates nothing concrete. An agent cannot tell from this whether the tool retrieves documents, configures a search stack, or modifies an index.
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 condition is given for choosing this over vector_semantic_search or vector_search, even though the sibling list makes that choice the central decision. Mentioning "vector_search" in parentheses is ambiguous – it could be read as a pointer to a related tool or as the underlying implementation, adding no routable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vector_list_collectionsList CollectionsCRead-onlyIdempotent
List collections (vector_collection_management). Manage collection management operations.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | confirm | |
| db_type | No | db type | |
| overwrite | No | overwrite | |
| document_paths | No | relative paths beneath the configured document root | |
| collection_name | No | collection name | |
| document_contents | No | document contents | |
| include_configured_directory | No | ingest the administrator-configured document root |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds nothing beyond that—it does not say what a collection listing contains, whether it is scoped or paginated, or why a read-only listing accepts overwrite/confirm/document_paths parameters; the "Manage collection management operations" phrasing even suggests mutation, which sits awkwardly with readOnlyHint=true.
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?
Only two sentences, but the second ("Manage collection management operations") is pure filler that restates the title and adds ambiguity rather than information. Brevity here comes from under-specification, not efficiency.
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?
An output schema exists, so return values need not be described, and annotations carry the safety profile. However, the description is inadequate for a 7-parameter tool with confusing ingest-shaped parameters on a read-only listing operation—an agent has no way to know which parameters are meaningful or how the results are scoped.
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?
Nominal schema coverage is 100%, but the schema descriptions are vacuous restatements of the field names ("confirm", "db type", "overwrite"), so the coverage metric overstates real semantics. The description contributes zero parameter guidance and does not explain why a list operation exposes ingest-oriented fields like document_paths, document_contents, overwrite and include_configured_directory.
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 first clause names a specific verb and resource ("List collections"), which is enough to identify the operation. But the parenthetical "(vector_collection_management)" and the follow-up "Manage collection management operations" blur the purpose into a generic capability-group label, and nothing distinguishes this from sibling tools like vector_semantic_search or vector_lexical_search that also touch collections.
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 tool, no preconditions, and no mention of alternatives among the six siblings listed. An agent must infer from the name alone that this is the discovery/introspection call before searching.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vector_searchSearchCRead-onlyIdempotent
Search (vector_search). Manage search operations.
| Name | Required | Description | Default |
|---|---|---|---|
| rrf_k | No | rrf k | |
| db_type | No | db type | |
| question | No | question | |
| lexical_weight | No | lexical weight | |
| number_results | No | number results | |
| collection_name | No | collection name | |
| semantic_weight | No | semantic weight |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered elsewhere. The description adds no behavioral context such as how hybrid ranking works, what the weights control, or what the output contains.
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 short, but both sentences are essentially filler: the first repeats the name/title, and the second says only 'Manage search operations.' This is under-specification rather than useful conciseness.
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 seven optional parameters, an output schema, and sibling search tools, the definition should clarify hybrid search behavior and selection criteria. The description instead provides almost no context for using the tool correctly.
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%, so by the stated baseline the schema is treated as documenting the parameters even though descriptions like 'rrf k' and 'semantic weight' are minimal. The description itself adds no parameter meaning beyond the schema.
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 says only 'Search (vector_search). Manage search operations.' This restates the tool name and title without specifying what kind of search it performs or how it differs from the sibling tools vector_semantic_search and vector_lexical_search.
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 vector_semantic_search, vector_lexical_search, or any of the collection tools. The agent is left to infer context entirely from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vector_semantic_searchSemantic SearchC
Semantic search (vector_search). Manage search operations.
| Name | Required | Description | Default |
|---|---|---|---|
| rrf_k | No | rrf k | |
| db_type | No | db type | |
| question | No | question | |
| lexical_weight | No | lexical weight | |
| number_results | No | number results | |
| collection_name | No | collection name | |
| semantic_weight | No | semantic weight |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The tool name and description identify a search operation, which is conventionally read-only, but the annotations explicitly declare readOnlyHint=false. The description does not explain this discrepancy, nor does it describe any state changes, permissions, rate limits, or side effects that would justify a non-read-only search 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?
The description is short, but the second sentence 'Manage search operations' is vague filler that does not add actionable information. It is concise but not front-loaded with the distinctions an agent needs.
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 an output schema and annotations, and the input schema has full coverage, but the description still omits critical context for a semantic search tool with seven optional parameters. It does not distinguish semantic search from lexical search or vector_search, and it leaves the non-read-only behavior unexplained despite the annotation.
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%, so the schema technically documents all seven parameters. However, those descriptions are tautological ('rrf k', 'db type', 'question'), and the tool description adds no meaning about how rrf_k, lexical_weight, semantic_weight, or number_results should be used. Baseline 3 applies because the schema coverage is complete.
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, 'semantic search,' but the parenthetical '(vector_search)' is ambiguous and may collide with the sibling vector_search. 'Manage search operations' is vague and does not clearly distinguish this tool from vector_search or vector_lexical_search.
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 semantic search versus the sibling vector_search or vector_lexical_search tools. The description also gives no prerequisites, weighting guidance, or expected use context.
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.
8 tool updates
v3.3.0- Added
vector_add_documents - Removed
vector_collection_management - Added
vector_create_collection - Added
vector_delete_collection - Added
vector_lexical_search - Added
vector_list_collections - Changed
vector_search10 fields changed- removed
Input schema / properties / actionRemoved value: -{ - "description": "Action to perform. Must be one of: 'semantic_search', 'lexical_search', 'search'", - "type": "string" -} - removed
Input schema / properties / bm25_weightRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "bm25 weight" -} - removed
Input schema / properties / db_nameRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "db name" -} - removed
Input schema / properties / db_pathRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "db path" -} - removed
Input schema / properties / hostRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "host" -} - added
Input schema / properties / lexical_weightAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "lexical weight" +} - removed
Input schema / properties / passwordRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "password" -} - removed
Input schema / properties / portRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "port" -} - removed
Input schema / properties / usernameRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "username" -} - removed
Input schema / requiredRemoved value: -[ - "action" -]
- Added
vector_semantic_search
2 tool updates
v1.39.0- First observed
vector_collection_management - First observed
vector_search
TDQS
Scored across 7 tools
The collection-management tools are mostly distinct, but the search tools overlap: vector_semantic_search and vector_lexical_search are clear, while vector_search is a generic search operation whose relationship to the other two is unclear. This could cause an agent to choose the generic search when a semantic or lexical search is required.
All tools use a consistent vector_ snake_case prefix, and most follow a readable verb/object pattern. The main minor deviation is vector_search, which is less descriptive than the modifier_search pattern used by the other search tools.
Seven tools is well within the appropriate range for a focused vector database server. The set covers collection lifecycle and search operations without excessive or redundant tooling.
The server covers collection creation, deletion, listing, document addition, and multiple search modes. However, document lifecycle is notably incomplete: there is no tool to update, delete, list, or get documents, and collection inspection/update operations are also missing.
Maintenance
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceA sophisticated MCP server providing advanced memory capabilities with RAG, hallucination detection, and enterprise-grade AI infrastructure for intelligent agent ecosystems.-
- AlicenseNot gradedqualityDmaintenanceA production-grade MCP server designed for multi-tenant, authenticated, and observable AI agent systems, enabling secure tool execution across heterogeneous data sources.67MIT
- FlicenseNot gradedqualityDmaintenanceAn enterprise-ready MCP server that exposes a RAG tool for retrieving relevant context and metadata from a Qdrant vector database using natural language queries.2-
- AlicenseNot gradedqualityDmaintenanceIntegrates RAG into AI agents via MCP Server, supporting multiple vector database technologies for collection management and search operations.11MIT