qdrant-llamaindex-mcp-server
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., "@qdrant-llamaindex-mcp-serverfind documents about quantum computing in tech_collection"
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.
qdrant-llamaindex-mcp-server: LlamaIndex-Compatible Qdrant MCP Server
The Model Context Protocol (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools. Whether you're building an AI-powered IDE, enhancing a chat interface, or creating custom AI workflows, MCP provides a standardized way to connect LLMs with the context they need.
This repository is a fork of qdrant/mcp-server-qdrant specifically designed to work with documents stored by LlamaIndex in Qdrant vector databases.
⚠️ Important Differences from Official Server
This fork has breaking changes compared to the official qdrant/mcp-server-qdrant:
🔧 Many More Tools: Provides 10+ tools vs. the official server's basic find/store tools
🎯 Dynamic Collection Selection: Collection names are specified at runtime by MCP clients, not hardcoded in configuration
🤖 Dynamic Embedding Model Detection: Automatically detects and loads the correct embedding model for each collection
📚 LlamaIndex Compatibility: Adapts to different content field names and metadata structures used by LlamaIndex
🔒 Enhanced Security: Built-in embedding model whitelist to prevent accidental loading of large models
These changes make configurations incompatible with the official server. You cannot simply swap this server for the official one without updating your configuration and workflow.
Related MCP server: mcp-rag-server
Overview
A comprehensive Model Context Protocol server for working with documents stored by LlamaIndex in Qdrant vector databases. Unlike the original server which provides basic functionality with a fixed document structure, this version offers extensive tooling and automatically adapts to different payload formats used by LlamaIndex.
Key Features
LlamaIndex Compatibility: Automatically detects and adapts to different content field names (
text,document,_node_content, etc.)Dynamic Embedding Model Detection: Automatically detects and uses the correct embedding model for each collection based on its vector configuration
Embedding Model Whitelist: Built-in safety mechanism to prevent accidentally loading large models
Flexible Metadata Handling: Works with both flat and nested metadata structures
Read-Only Access: Designed specifically for querying existing LlamaIndex-indexed data
Smart Content Detection: Automatically identifies the most likely content field when standard names aren't found
Tools
Read-Only Tools (Available with QDRANT_READ_ONLY=true)
qdrant-find- Search and retrieve documents stored by LlamaIndex in Qdrantquery(string): Semantic search querycollection_name(string): Name of the collection to searchReturns: Relevant documents with content and metadata
qdrant-get-point- Get a specific point by its IDpoint_id(string): The ID of the point to retrievecollection_name(string): The collection to get the point fromReturns: Point information with content and metadata
qdrant-get-collections- Get a list of all collectionsReturns: Array of collection names in the Qdrant server
qdrant-get-collection-details- Get detailed information about a collectioncollection_name(string): The name of the collectionReturns: Collection configuration, statistics, and status
qdrant-get-collection-count- Get the number of points in a collectioncollection_name(string): The name of the collectionReturns: Number of points in the collection
qdrant-peek-collection- Preview sample points from a collectioncollection_name(string): The name of the collectionlimit(int, optional): Maximum number of points to return (default: 10)Returns: Sample points from the collection
qdrant-get-documents- Retrieve multiple documents by their IDspoint_ids(array of strings): List of point IDs to retrievecollection_name(string): The collection to get documents fromReturns: Array of found documents
qdrant-search-by-vector- Search using a raw vector instead of text queryvector(array of floats): The query vector to search withcollection_name(string): The collection to search inlimit(int, optional): Maximum number of results to return (default: 10)Returns: Relevant documents based on vector similarity
qdrant-list-document-ids- List document IDs with paginationcollection_name(string): The collection to list IDs fromlimit(int, optional): Maximum number of IDs to return (default: 100)offset(int, optional): Number of IDs to skip for pagination (default: 0)Returns: Array of document IDs
qdrant-scroll-points- Paginated retrieval of points using scrollcollection_name(string): The collection to scroll throughlimit(int, optional): Maximum number of points to return (default: 10)offset(int, optional): Offset for paginationReturns: Points with pagination info
Write Tools (Available when QDRANT_READ_ONLY=false)
When read-only mode is disabled, additional tools become available for modifying data:
qdrant-store- Store new documents in Qdrantqdrant-delete-point- Delete a specific point by IDqdrant-update-point-payload- Update point metadataqdrant-create-collection- Create new collectionsqdrant-delete-collection- Delete entire collectionsqdrant-add-documents- Batch add multiple documentsqdrant-delete-documents- Batch delete multiple documents
Environment Variables
The configuration of the server is done using environment variables:
Name | Description | Default Value |
| URL of the Qdrant server | None |
| API key for the Qdrant server | None |
| Deprecated: Collection names are now specified dynamically by MCP clients at runtime | None |
| Enable read-only mode (disables write tools for safety) |
|
| Path to the local Qdrant database (alternative to | None |
| Embedding provider to use (currently only "fastembed" is supported) |
|
| Default embedding model (used as fallback when auto-detection fails or model not in whitelist) |
|
| JSON array of allowed embedding models for dynamic loading |
|
| Custom description for the find tool | See default in |
Note: You cannot provide both QDRANT_URL and QDRANT_LOCAL_PATH at the same time.
Command-line arguments are not supported anymore! Please use environment variables for all configuration.
FastMCP Environment Variables
Since mcp-server-qdrant is based on FastMCP, it also supports all the FastMCP environment variables. The most
important ones are listed below:
Environment Variable | Description | Default Value |
| Enable debug mode |
|
| Set logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
|
| Host address to bind the server to |
|
| Port to run the server on |
|
| Show warnings for duplicate resources |
|
| Show warnings for duplicate tools |
|
| Show warnings for duplicate prompts |
|
| List of dependencies to install in the server environment |
|
Dynamic Embedding Model Detection
This server automatically detects which embedding model was used for each collection and uses the appropriate model for queries. This is especially useful when you have multiple collections created with different embedding models.
How It Works
Collection Creation: When LlamaIndex creates a collection, the full model name is stored as the vector name (e.g.,
"BAAI/bge-small-en-v1.5")Query Time: When searching a collection, the server:
Inspects the collection's vector configuration
Extracts the model name from the vector name
Loads the appropriate embedding model (with caching for performance)
Uses that model to embed the query
Embedding Model Whitelist
For security and resource management, the server includes a built-in whitelist of allowed embedding models. By default, only small, efficient models are permitted:
sentence-transformers/all-MiniLM-L6-v2(384 dims, ~90MB)BAAI/bge-small-en-v1.5(384 dims, ~67MB)snowflake/snowflake-arctic-embed-xs(384 dims, ~90MB)jinaai/jina-embeddings-v2-small-en(512 dims, ~120MB)
Customizing the Whitelist
Using Environment Variables
# Allow only specific models
export EMBEDDING_ALLOWED_MODELS='["sentence-transformers/all-MiniLM-L6-v2", "BAAI/bge-small-en-v1.5"]'
# Allow all models (removes safety protection)
export EMBEDDING_ALLOWED_MODELS='null'In Claude Desktop Config
{
"mcpServers": {
"qdrant": {
"command": "uvx",
"args": ["qdrant-llamaindex-mcp-server"],
"env": {
"QDRANT_URL": "http://localhost:6333",
"COLLECTION_NAME": "your-collection",
"EMBEDDING_ALLOWED_MODELS": "[\"sentence-transformers/all-MiniLM-L6-v2\", \"BAAI/bge-small-en-v1.5\"]"
}
}
}
}Behavior with Blocked Models
When the server encounters a collection using a model not in the whitelist:
⚠️ Logs a warning message
🔄 Falls back to the default configured model (
EMBEDDING_MODEL)✅ Continues operating normally
This ensures your system remains stable while preventing accidental downloads of large models.
Installation
Using uvx (Recommended)
From PyPI
QDRANT_URL="http://localhost:6333" \
uvx qdrant-llamaindex-mcp-serverFrom GitHub Repository (Development)
QDRANT_URL="http://localhost:6333" \
uvx --from git+https://github.com/azhang/qdrant-llamaindex-mcp-server.git qdrant-llamaindex-mcp-serverFrom Local Directory (Development)
# Clone and run locally
git clone https://github.com/azhang/qdrant-llamaindex-mcp-server.git
cd qdrant-llamaindex-mcp-server
QDRANT_URL="http://localhost:6333" \
uvx --from . qdrant-llamaindex-mcp-serverTransport Protocols
The server supports different transport protocols that can be specified using the --transport flag:
QDRANT_URL="http://localhost:6333" \
uvx qdrant-llamaindex-mcp-server --transport sseSupported transport protocols:
stdio(default): Standard input/output transport, might only be used by local MCP clientssse: Server-Sent Events transport, perfect for remote clientsstreamable-http: Streamable HTTP transport, perfect for remote clients, more recent than SSE
The default transport is stdio if not specified.
When SSE transport is used, the server will listen on the specified port and wait for incoming connections. The default
port is 8000, however it can be changed using the FASTMCP_PORT environment variable.
QDRANT_URL="http://localhost:6333" \
FASTMCP_PORT=1234 \
uvx qdrant-llamaindex-mcp-server --transport sseUsing Docker
A Dockerfile is available for building and running the MCP server:
# Build the container
docker build -t mcp-server-qdrant .
# Run the container
docker run -p 8000:8000 \
-e FASTMCP_HOST="0.0.0.0" \
-e QDRANT_URL="http://your-qdrant-server:6333" \
-e QDRANT_API_KEY="your-api-key" \
-e COLLECTION_NAME="your-collection" \
mcp-server-qdrantPlease note that we setFASTMCP_HOST="0.0.0.0" to make the server listen on all network interfaces. This is
necessary when running the server in a Docker container.
Installing via Smithery
To install Qdrant MCP Server for Claude Desktop automatically via Smithery:
npx @smithery/cli install mcp-server-qdrant --client claudeManual configuration of Claude Desktop
To use this server with the Claude Desktop app, add the following configuration to the "mcpServers" section of your
claude_desktop_config.json:
{
"qdrant": {
"command": "uvx",
"args": ["qdrant-llamaindex-mcp-server"],
"env": {
"QDRANT_URL": "https://xyz-example.eu-central.aws.cloud.qdrant.io:6333",
"QDRANT_API_KEY": "your_api_key",
"QDRANT_READ_ONLY": "true"
}
}
}For local Qdrant mode:
{
"qdrant": {
"command": "uvx",
"args": ["qdrant-llamaindex-mcp-server"],
"env": {
"QDRANT_LOCAL_PATH": "/path/to/qdrant/database",
"QDRANT_READ_ONLY": "true"
}
}
}Collection Names: Collection names are now specified dynamically when using the tools (e.g., when calling qdrant-find, you specify which collection to search). This provides more flexibility than the previous approach of hardcoding a single collection name.
By default, the server will use the sentence-transformers/all-MiniLM-L6-v2 embedding model to encode memories.
For the time being, only FastEmbed models are supported.
Support for other tools
This MCP server can be used with any MCP-compatible client. For example, you can use it with Cursor and VS Code, which provide built-in support for the Model Context Protocol.
Using with Cursor/Windsurf
You can configure this MCP server to work as a code search tool for Cursor or Windsurf by customizing the tool descriptions:
QDRANT_URL="http://localhost:6333" \
TOOL_STORE_DESCRIPTION="Store reusable code snippets for later retrieval. \
The 'information' parameter should contain a natural language description of what the code does, \
while the actual code should be included in the 'metadata' parameter as a 'code' property. \
The value of 'metadata' is a Python dictionary with strings as keys. \
Use this whenever you generate some code snippet." \
TOOL_FIND_DESCRIPTION="Search for relevant code snippets based on natural language descriptions. \
The 'query' parameter should describe what you're looking for, \
and the tool will return the most relevant code snippets. \
Use this when you need to find existing code snippets for reuse or reference." \
uvx qdrant-llamaindex-mcp-server --transport sse # Enable SSE transportIn Cursor/Windsurf, you can then configure the MCP server in your settings by pointing to this running server using SSE transport protocol. The description on how to add an MCP server to Cursor can be found in the Cursor documentation. If you are running Cursor/Windsurf locally, you can use the following URL:
http://localhost:8000/sseWe suggest SSE transport as a preferred way to connect Cursor/Windsurf to the MCP server, as it can support remote connections. That makes it easy to share the server with your team or use it in a cloud environment.
This configuration transforms the Qdrant MCP server into a specialized code search tool that can:
Store code snippets, documentation, and implementation details
Retrieve relevant code examples based on semantic search
Help developers find specific implementations or usage patterns
You can populate the database by storing natural language descriptions of code snippets (in the information parameter)
along with the actual code (in the metadata.code property), and then search for them using natural language queries
that describe what you're looking for.
The tool descriptions provided above are examples and may need to be customized for your specific use case. Consider adjusting the descriptions to better match your team's workflow and the specific types of code snippets you want to store and retrieve.
If you have successfully installed the mcp-server-qdrant, but still can't get it to work with Cursor, please
consider creating the Cursor rules so the MCP tools are always used when
the agent produces a new code snippet. You can restrict the rules to only work for certain file types, to avoid using
the MCP server for the documentation or other types of content.
Using with Claude Code
You can enhance Claude Code's capabilities by connecting it to this MCP server, enabling semantic search over your existing codebase.
Setting up qdrant-llamaindex-mcp-server
Add the MCP server to Claude Code:
# Add qdrant-llamaindex-mcp-server configured for code search claude mcp add code-search \ -e QDRANT_URL="http://localhost:6333" \ -e QDRANT_READ_ONLY="true" \ -e TOOL_STORE_DESCRIPTION="Store code snippets with descriptions. The 'information' parameter should contain a natural language description of what the code does, while the actual code should be included in the 'metadata' parameter as a 'code' property." \ -e TOOL_FIND_DESCRIPTION="Search for relevant code snippets using natural language. The 'query' parameter should describe the functionality you're looking for." \ -- uvx qdrant-llamaindex-mcp-serverVerify the server was added:
claude mcp list
Using Semantic Code Search in Claude Code
Tool descriptions, specified in TOOL_STORE_DESCRIPTION and TOOL_FIND_DESCRIPTION, guide Claude Code on how to use
the MCP server. The ones provided above are examples and may need to be customized for your specific use case. However,
Claude Code should be already able to:
Use the
qdrant-storetool to store code snippets with descriptions.Use the
qdrant-findtool to search for relevant code snippets using natural language.
Run MCP server in Development Mode
The MCP server can be run in development mode using the mcp dev command. This will start the server and open the MCP
inspector in your browser.
fastmcp dev src/mcp_server_qdrant/server.pyUsing with VS Code
For one-click installation, click one of the install buttons below:
Manual Installation
Add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing Ctrl + Shift + P and typing Preferences: Open User Settings (JSON).
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "qdrantUrl",
"description": "Qdrant URL"
},
{
"type": "promptString",
"id": "qdrantApiKey",
"description": "Qdrant API Key",
"password": true
},
{
"type": "promptString",
"id": "collectionName",
"description": "Collection Name"
}
],
"servers": {
"qdrant": {
"command": "uvx",
"args": ["qdrant-llamaindex-mcp-server"],
"env": {
"QDRANT_URL": "${input:qdrantUrl}",
"QDRANT_API_KEY": "${input:qdrantApiKey}",
"COLLECTION_NAME": "${input:collectionName}"
}
}
}
}
}Or if you prefer using Docker, add this configuration instead:
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "qdrantUrl",
"description": "Qdrant URL"
},
{
"type": "promptString",
"id": "qdrantApiKey",
"description": "Qdrant API Key",
"password": true
},
{
"type": "promptString",
"id": "collectionName",
"description": "Collection Name"
}
],
"servers": {
"qdrant": {
"command": "docker",
"args": [
"run",
"-p", "8000:8000",
"-i",
"--rm",
"-e", "QDRANT_URL",
"-e", "QDRANT_API_KEY",
"-e", "COLLECTION_NAME",
"qdrant-llamaindex-mcp-server"
],
"env": {
"QDRANT_URL": "${input:qdrantUrl}",
"QDRANT_API_KEY": "${input:qdrantApiKey}",
"COLLECTION_NAME": "${input:collectionName}"
}
}
}
}
}Alternatively, you can create a .vscode/mcp.json file in your workspace with the following content:
{
"inputs": [
{
"type": "promptString",
"id": "qdrantUrl",
"description": "Qdrant URL"
},
{
"type": "promptString",
"id": "qdrantApiKey",
"description": "Qdrant API Key",
"password": true
},
{
"type": "promptString",
"id": "collectionName",
"description": "Collection Name"
}
],
"servers": {
"qdrant": {
"command": "uvx",
"args": ["qdrant-llamaindex-mcp-server"],
"env": {
"QDRANT_URL": "${input:qdrantUrl}",
"QDRANT_API_KEY": "${input:qdrantApiKey}",
"COLLECTION_NAME": "${input:collectionName}"
}
}
}
}For workspace configuration with Docker, use this in .vscode/mcp.json:
{
"inputs": [
{
"type": "promptString",
"id": "qdrantUrl",
"description": "Qdrant URL"
},
{
"type": "promptString",
"id": "qdrantApiKey",
"description": "Qdrant API Key",
"password": true
},
{
"type": "promptString",
"id": "collectionName",
"description": "Collection Name"
}
],
"servers": {
"qdrant": {
"command": "docker",
"args": [
"run",
"-p", "8000:8000",
"-i",
"--rm",
"-e", "QDRANT_URL",
"-e", "QDRANT_API_KEY",
"-e", "COLLECTION_NAME",
"qdrant-llamaindex-mcp-server"
],
"env": {
"QDRANT_URL": "${input:qdrantUrl}",
"QDRANT_API_KEY": "${input:qdrantApiKey}",
"COLLECTION_NAME": "${input:collectionName}"
}
}
}
}Contributing
If you have suggestions for how mcp-server-qdrant could be improved, or want to report a bug, open an issue! We'd love all and any contributions.
Testing qdrant-llamaindex-mcp-server locally
The MCP inspector is a developer tool for testing and debugging MCP servers. It runs both a client UI (default port 5173) and an MCP proxy server (default port 3000). Open the client UI in your browser to use the inspector.
QDRANT_URL=":memory:" \
fastmcp dev src/mcp_server_qdrant/server.pyOnce started, open your browser to http://localhost:5173 to access the inspector interface.
License
This MCP server is licensed under the Apache License 2.0. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the Apache License 2.0. For more details, please see the LICENSE file in the project repository.
Available Tools
17 toolsqdrant-add-documentsC
Add multiple documents in batch.
| Name | Required | Description | Default |
|---|---|---|---|
| documents | Yes | List of documents to add. Each document should have 'content' and optionally 'id' and 'metadata'. | |
| collection_name | Yes | The collection to add documents to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must cover behavioral traits. It only states the additive nature ('Add') without revealing side effects (e.g., upsert vs. append, whether duplicate IDs cause errors), required permissions, or cost implications. The batch behavior is mentioned but not detailed (e.g., atomicity, size limits). This is insufficient for safe invocation.
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 extraordinarily concise—one sentence of five words. It is front-loaded with the core action. However, the extreme brevity may sacrifice needed detail; a slightly longer description could improve clarity without losing conciseness. Overall, it is efficient but not optimally informative for a batch mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a mutation with no output schema and no annotations, the description should elaborate on return values, error handling, and batch limits. It does not explain what happens on success, how to handle failures, or whether the operation is idempotent. The agent is left underspecified for robust usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters documented in the schema). The description adds no extra meaning beyond the schema's docstrings, such as expected formats for 'id' or 'metadata', or constraints on 'collection_name'. At baseline 3, it meets adequacy but does not enhance understanding beyond the structured JSON.
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 clearly states the action ('Add'), the resource ('multiple documents'), and the approach ('in batch'). It distinguishes from sibling tools like qdrant-delete-documents, though it doesn't explicitly contrast with qdrant-store. The brevity leaves ambiguity about whether this replaces or supplements existing documents, but the core purpose is evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., qdrant-store for single documents, or qdrant-delete-documents for removal). It does not mention prerequisites, such as requiring an existing collection, nor does it advise against concurrent batches. The agent receives no strategic context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-create-collectionB
Create a new collection with vector configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes | The name of the collection to create | |
| vector_size | No | Vector size. If omitted, uses embedding provider's default. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description is minimal. It does not disclose behavioral traits such as whether creation is idempotent, what happens if the collection already exists, or any side effects or permissions required.
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 extremely concise with a single sentence that front-loads the key action and resource. No unnecessary 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?
Given the lack of output schema and annotations, the description is too brief. It does not explain the return value, error conditions, or prerequisites like existence checks, leaving the agent underinformed.
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% with descriptions for both parameters. The tool description adds little beyond the schema, only stating 'with vector configuration,' which does not significantly enhance understanding.
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 clearly states the action (create) and the resource (collection) with the specific aspect (vector configuration). It distinguishes the tool from siblings like qdrant-delete-collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives or any prerequisites. The description does not mention when not to use it or any context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-delete-collectionC
Delete a collection entirely.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes | The name of the collection to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the basic destructive action without disclosing irreversibility, what exactly gets deleted (all points, indexes), or whether confirmation is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no fluff, but it is too minimal. It lacks important context that could be added without significant length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is destructive and has no output schema, the description should explain the effect (delete all data), whether it succeeds silently, or if there are any side effects. The current description is insufficient for an agent to confidently invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the schema already documents the single parameter 'collection_name' well. The description adds no additional semantic value beyond what the schema provides.
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 'Delete a collection entirely' clearly states the verb (delete) and resource (collection). The term 'entirely' hints at the difference from sibling tools that delete individual documents or points, though it does not explicitly distinguish them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like qdrant-delete-documents or qdrant-delete-point. The description does not mention prerequisites, confirmation, or when deletion is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-delete-documentsC
Delete multiple documents by their IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| point_ids | Yes | List of point IDs to delete | |
| collection_name | Yes | The collection to delete documents from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden but only states the action ('delete'). It does not disclose whether deletion is idempotent, error behavior on missing IDs, or potential side effects, which is insufficient for a destructive 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 a single short sentence, which is efficient. However, it lacks structure such as front-loading constraints or grouping related info, though it conveys the core action succinctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description omits return behavior (e.g., confirmation or error). It also fails to mention the batch nature explicitly, which is a key differentiator from sibling tools. Overall, it leaves gaps for an agent to fully understand tool behavior.
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% with descriptions for both parameters. The description adds no extra meaning beyond the schema, so baseline 3 applies. No additional format or context is provided.
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 clearly states the tool deletes multiple documents by IDs. It distinguishes from sibling 'qdrant-delete-point' (singular) and 'qdrant-delete-collection' (collection level) due to the 'multiple documents' phrasing, though the collection context is implied only via schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives like 'qdrant-delete-point' for single deletion. There is no mention of prerequisites (e.g., collection existence) or scenarios where batch deletion is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-delete-pointB
Delete a specific point by its ID from a Qdrant collection.
| Name | Required | Description | Default |
|---|---|---|---|
| point_id | Yes | The ID of the point to delete | |
| collection_name | Yes | The collection to delete the point from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the delete action but does not mention whether the deletion is permanent, what happens if the point doesn't exist, or any side effects. The agent lacks critical information about the operation's safety and effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly conveys the tool's purpose with no unnecessary words. It is well front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with only two parameters and no output schema, the description covers the core action. However, it lacks information about return behavior (e.g., success acknowledgment) and error handling (e.g., non-existent point), leaving some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters. The tool description adds no additional semantic value beyond what the schema already provides. Baseline 3 is appropriate as the description does not enhance parameter understanding.
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 clearly states the action ('Delete'), the resource ('a specific point by its ID'), and the context ('from a Qdrant collection'). It effectively distinguishes from sibling tools like qdrant-delete-documents or qdrant-delete-collection by specifying deletion by point ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Given sibling tools for deletion (e.g., qdrant-delete-documents, qdrant-delete-collection), the description should at least mention that this tool is for deleting individual points by ID, not for bulk deletions or collection removal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-findB
Search for documents stored by LlamaIndex in Qdrant. Use this tool when you need to:
Find relevant documents or text chunks by semantic similarity
Access stored knowledge base content
Retrieve context from previously indexed documents
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What to search for | |
| collection_name | Yes | The collection to search in | |
| limit | No | Maximum number of results to return | |
| offset | No | Number of results to skip for pagination | |
| score_threshold | No | Minimum similarity score threshold (0.0 to 1.0). Results below this score will be filtered out. |
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 indicates a read-like operation (search), which is non-destructive. However, it does not disclose other behavioral traits such as idempotency, required permissions, or side effects. The description is adequate but lacks depth beyond the obvious.
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 concise at three sentences plus bullet points. However, the bullet points largely restate the first sentence, adding some redundancy. It is front-loaded with the core purpose but could be slightly more streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description does not explain what the tool returns (e.g., document chunks, scores). It provides useful context about LlamaIndex but omits return value information. The input schema is fully covered, but completeness for a search tool weighing output is moderate.
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%, with all parameters (query, collection_name, limit, offset, score_threshold) well-described in the schema itself. The description adds no extra semantic meaning beyond what the schema already provides, meeting the baseline of 3 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?
The description clearly states the tool searches for documents by semantic similarity, accesses knowledge base content, and retrieves context from indexed documents. It uses specific verbs and resource contexts. However, it does not differentiate from the sibling tool 'qdrant-search-by-vector', which likely performs a similar function.
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 lists three use cases (find relevant documents, access knowledge base, retrieve context), providing some guidance. But it lacks explicit 'when not to use' or alternative tools (e.g., 'qdrant-search-by-vector' for raw vector search), leaving usage boundaries implied rather than clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-get-collection-countB
Get the number of points in a collection.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes | The name of the collection to count |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits. It only states the basic operation without noting any side effects, authentication needs, or limitations (e.g., counting only points, not all stored data). This is insufficient for an agent to assess the tool's 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?
The description is a single, concise sentence with no extraneous words. It efficiently conveys the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema, the description should specify the return format. It states 'Get the number of points' but does not indicate whether the result is an integer, a JSON object, or something else. This missing detail reduces completeness.
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% (the single parameter has a description). The tool description adds no additional meaning beyond the schema, so baseline score of 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?
The description clearly states the tool's purpose with a specific verb ('get') and resource ('number of points'), distinguishing it from sibling tools like get-collection-details which retrieve more comprehensive information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of performance implications, prerequisites, or context for using the count operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-get-collection-detailsB
Get detailed information about a specific collection including status, configuration, and statistics.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes | The name of the collection to get details for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose all behavioral traits. It states a read operation but lacks details on side effects, permissions, error behavior, or rate limits. The description is minimal for a tool with no annotation support.
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?
Single sentence of 14 words, no wasted text, and front-loaded with the action 'Get detailed information'. Efficient and clear.
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?
Tool is simple with 1 parameter, no output schema. Description mentions what is returned (status, configuration, statistics) which is sufficient for basic understanding. Could be slightly more detailed about the structure of the return, but overall complete given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the single parameter 'collection_name'. The tool description adds no extra value beyond repeating the schema, so 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 description clearly states the action ('get'), the resource ('detailed information about a specific collection'), and the scope ('status, configuration, and statistics'). This distinguishes it from sibling tools like 'qdrant-get-collections' (list all collections) and 'qdrant-get-collection-count' (just count).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus sibling tools like 'qdrant-get-collections' or 'qdrant-get-collection-count'. No mention of prerequisites, alternatives, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-get-collectionsA
Get a list of all collections in the Qdrant server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read-only operation ('get'), but with no annotations, it does not disclose any additional behaviors such as caching, rate limits, or side effects. It is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the tool's purpose without any extraneous 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?
Given no parameters and no output schema, the description explains the action but does not describe the return format (e.g., what fields each collection entry contains). For a simple list, it is adequate but could be more informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and the schema coverage is 100% (trivially). The description adds no parameter information because none exist. Baseline score of 4 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 description clearly states the verb 'Get' and the resource 'list of all collections' within the Qdrant server. It is specific and distinguishes from sibling tools like qdrant-get-collection-details or qdrant-delete-collection.
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 provides no guidance on when to use this tool versus alternatives. For example, it does not mention that qdrant-get-collection-details provides more information about a single collection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-get-documentsC
Retrieve multiple documents by their IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| point_ids | Yes | List of point IDs to retrieve | |
| collection_name | Yes | The collection to get documents from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden of behavioral disclosure. It only says 'Retrieve', implying read-only, but lacks details on what happens if IDs are missing, return format, rate limits, or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence. It is concise, though it could be slightly more informative without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with full schema coverage, the description is adequate but minimal. It does not explain return values (no output schema) or edge cases, which may leave the agent underinformed.
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 descriptions cover 100% of parameters, so the description adds no additional meaning beyond the schema. 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 description clearly states the action (retrieve) and the resource (multiple documents by IDs). It implicitly distinguishes from qdrant-get-point (single document) by specifying 'multiple', but does not explicitly differentiate from other retrieval methods like qdrant-find.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., qdrant-get-point for single document, qdrant-find for search). No when-not or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-get-pointB
Get a specific point by its ID from a Qdrant collection.
| Name | Required | Description | Default |
|---|---|---|---|
| point_id | Yes | The ID of the point to retrieve | |
| collection_name | Yes | The collection to get the point from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of describing behavioral traits. It implies a read-only operation via the verb 'get', but does not explicitly state that it is non-destructive, nor does it mention any auth requirements, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence that front-loads the purpose. No extraneous words or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple retrieval operation with only two parameters. However, it does not describe the return value or format, which is especially relevant since there is no output schema. Adding a brief mention of what the response contains would improve completeness.
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% with descriptions already explaining each parameter. The tool description adds no additional semantic information beyond what the schema provides, so it meets the baseline expectation.
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 clearly states the action (get), the specific resource (a point by ID), and the context (from a Qdrant collection). It distinguishes from siblings like qdrant-scroll-points (which lists multiple points) and qdrant-get-documents (which likely retrieves documents, not points).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description only states what the tool does, not when to prefer it over tools like qdrant-get-documents or qdrant-scroll-points.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-list-document-idsB
List document IDs with pagination support.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes | The collection to list document IDs from | |
| limit | No | Maximum number of IDs to return | |
| offset | No | Number of IDs to skip for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'with pagination support,' which is a behavioral trait beyond the schema, but with no annotations, it fails to state if the operation is read-only, any potential side effects, ordering, or limitations. The pagination hint is useful but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 5 words, very concise and front-loaded. However, it sacrifices some informative content for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should explain return format, any ordering, or constraints. Only pagination is mentioned, leaving out what the tool actually returns (list of IDs) and other behavioral details important for an AI agent to invoke 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 coverage is 100%, so baseline is 3. The description does not add any additional meaning beyond the schema's parameter descriptions; it only mentions pagination generically without linking to the limit/offset parameters.
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 clearly states 'List document IDs with pagination support,' indicating the verb and resource. However, it does not differentiate from sibling tools like 'qdrant-get-documents' or 'qdrant-scroll-points' which also list or retrieve 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?
No guidance is provided on when to use this tool versus alternatives such as 'qdrant-get-documents' or 'qdrant-scroll-points'. There are no usage contexts, prerequisites, or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-peek-collectionB
Preview sample points from a collection.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes | The name of the collection to peek | |
| limit | No | Maximum number of points to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavioral traits. It only states the action but does not clarify read-only nature, data ordering (random vs first), or any side effects. Lack of safety disclosure is a significant 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?
Single sentence, front-loaded with purpose. Efficient but sacrifices important details like usage and behavioral context. For a simple tool, it is adequately concise though incomplete.
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?
No output schema exists, so description should hint at return format or behavior. It does not explain what 'sample' means, how points are selected, or what fields are returned. Incomplete for agent decision-making.
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 baseline is 3. Description adds no additional parameter details beyond the schema, providing no extra value for parameter understanding.
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 'Preview sample points from a collection' uses a specific verb ('preview') and resource ('sample points'), clearly distinguishing it from siblings like 'qdrant-get-point' (specific point) and 'qdrant-scroll-points' (iterate all). No tautology or vagueness.
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 explicit when/when-not or alternative tools mentioned. The name and description imply usage for quick inspection, but no guidance on when to prefer this over other retrieval tools like 'qdrant-find' or 'qdrant-scroll-points'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-scroll-pointsC
Paginated retrieval of points using scroll.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes | The collection to scroll through | |
| limit | No | Maximum number of points to return | |
| offset | No | Offset for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It does not disclose behavioral traits such as whether scroll is cursor-based, the effect of limit, or any side effects. The bare statement of 'paginated retrieval' is insufficient for safe agent invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks structure. It front-loads the purpose but omits details like pagination behavior or output format. Conciseness is achieved at the cost of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema and the presence of many sibling tools, the description is too brief. It does not explain how scroll differs from offset pagination, sorting, or the return format. Critical gaps remain for effective use.
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%, with descriptions for all three parameters (collection_name, limit, offset). The tool description adds no additional meaning beyond the schema, so a baseline score of 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 description clearly states 'paginated retrieval of points using scroll', which specifies the verb (retrieval), resource (points), and method (scroll). However, it does not distinguish from siblings like qdrant-find or qdrant-peek-collection, but the scroll mechanism is a specific pagination approach.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as qdrant-find, qdrant-search-by-vector, or qdrant-get-point. An agent would lack context for choosing the appropriate retrieval method.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-search-by-vectorB
Search using a raw vector instead of text query.
| Name | Required | Description | Default |
|---|---|---|---|
| vector | Yes | The query vector to search with | |
| collection_name | Yes | The collection to search in | |
| limit | No | Maximum number of results to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as return format (e.g., points with distances), pagination, or performance characteristics. This is a significant gap for a search 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?
The description is a single concise sentence, but it lacks structure and does not front-load critical information. While it is not verbose, it could be more informative without losing 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?
Despite the tool having a simple signature and no output schema, the description does not explain what results are returned (e.g., points, distances). This omission makes it less complete for an agent to understand its behavior.
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 baseline is 3. The description adds no additional meaning beyond the schema parameter descriptions, which are already self-explanatory.
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 clearly states it performs a vector-based search, contrasting with text-based queries. This sets a specific purpose and distinguishes it from tools like qdrant-find.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use cases by saying 'instead of text query', but does not provide explicit guidance on when to use or not use this tool, nor does it mention prerequisites like collection existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-storeB
Store information in Qdrant vector database. Use this tool when you need to:
Save new documents or text chunks
Add information to the knowledge base
Store content for later retrieval
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Point ID. If omitted, a new point is created. | |
| information | Yes | Text to store | |
| collection_name | Yes | The collection to store the information in | |
| metadata | No | Extra metadata stored along with memorised information. Any json is accepted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It does not mention idempotency, side effects, authentication, or what happens if an ID already exists. The only behavioral hint comes from the schema description for 'id', not the main description.
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 concise, front-loading the main action, and uses bullet points for clarity. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately explains what the tool does and when to use it for a simple store operation. However, it lacks details on return values (no output schema) and edge cases like duplicate IDs, leaving some gaps for agent understanding.
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 parameters are documented. The tool description adds no further semantic meaning beyond the use cases; it does not explain parameter details or relationships.
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 clearly states 'Store information in Qdrant vector database' and lists specific use cases like saving documents and adding to knowledge base. However, it does not differentiate from the sibling tool 'qdrant-add-documents', which may cause confusion.
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 provides bullet points on when to use the tool (e.g., save new documents), but lacks guidance on when not to use it or alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
qdrant-update-point-payloadB
Update the payload (metadata) of a specific point by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| point_id | Yes | The ID of the point to update | |
| collection_name | Yes | The collection containing the point | |
| metadata | Yes | New metadata to set for the point. Any json is accepted. |
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 states 'Update' but does not disclose whether it overwrites the entire payload or merges with existing data. Missing details on idempotency, error behavior for missing point, or size 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 description is a single, front-loaded sentence with no unnecessary words. It efficiently conveys the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter update tool with no output schema and no annotations, the description is adequate but not thorough. It lacks information about return values, success/failure signals, or common error cases.
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 descriptions cover all 3 parameters (100% coverage) with clear explanations. The tool description adds no extra meaning beyond the schema, so baseline score of 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 description clearly states the action 'Update' and the resource 'payload (metadata) of a specific point by its ID'. It distinguishes from sibling tools like qdrant-delete-point and qdrant-get-point, but does not explicitly differentiate from qdrant-store (which stores documents) or mention whether it overwrites or merges metadata.
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 usage guidelines are provided. The description does not specify when to use this tool vs alternatives (e.g., qdrant-get-point for reading, qdrant-delete-point for removal). It lacks prerequisites or context about point existence.
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.
17 tool updates
v0.1.1- First observed
qdrant-add-documents - First observed
qdrant-create-collection - First observed
qdrant-delete-collection - First observed
qdrant-delete-documents - First observed
qdrant-delete-point - First observed
qdrant-find - First observed
qdrant-get-collection-count - First observed
qdrant-get-collection-details - First observed
qdrant-get-collections - First observed
qdrant-get-documents - First observed
qdrant-get-point - First observed
qdrant-list-document-ids - First observed
qdrant-peek-collection - First observed
qdrant-scroll-points - First observed
qdrant-search-by-vector - First observed
qdrant-store - First observed
qdrant-update-point-payload
TDQS
Scored across 17 tools
Tools are mostly distinct with clear purposes across collections, documents, points, and search. Some overlap exists (e.g., delete-documents vs. delete-point, find vs. search-by-vector) but descriptions help differentiate.
Most tools follow a 'qdrant-verb-noun' pattern (e.g., add-documents, create-collection). However, 'qdrant-store' and 'qdrant-find' are verb-only, creating a slight inconsistency.
17 tools is on the higher side but still appropriate for a full-featured vector database server covering collection and document management, search, and maintenance. Each tool appears justified.
Core CRUD and search operations are covered, but missing tools for updating collection configuration or full document content updates (only payload update). Some gaps like truncating collections are absent.
Maintenance
Related MCP Connectors
The Needle MCP server enables semantic search on documents stored in files like PDFs, DOCX, and XLSX by connecting AI applications to external data sources. It provides capabilities to create and manage document collections, perform natural language searches on stored content, and retrieve relevant information without requiring exact keyword matches.
MCP server for agentverse documentation, generated by doc2mcp.
Remote ChromaDB vector database MCP server with streamable HTTP transport
Related MCP Servers
- AlicenseAqualityCmaintenancePython MCP server for vector search using Qdrant vector database and Ollama embeddings, with advanced query techniques like query expansion, HyDE, and reranking.22MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that indexes documents and serves relevant context to LLMs via Retrieval Augmented Generation (RAG).2837MIT
- AlicenseNot gradedqualityDmaintenanceA knowledge base MCP server backed by Qdrant vector database with local embeddings for semantic search and document management.51ISC
- AlicenseNot gradedqualityDmaintenanceAn MCP server for RAG using Qdrant that automatically indexes documents from directories and generates search tools for each collection.MIT