Skip to content

Add Qdrant MCP server configuration. #83

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 9 commits into
base: main
Choose a base branch
from
118 changes: 118 additions & 0 deletions servers/qdrant/server.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
name: qdrant
image: mcp/qdrant
type: server
meta:
category: database
tags:
- qdrant
- database
about:
title: Qdrant
description: >
High-performance, massive-scale Vector Database and Vector Search Engine for the next generation of AI.
Also available in the cloud
icon: https://avatars.githubusercontent.com/u/73504361?s=200&v=4
source:
project: https://github.com/qdrant/mcp-server-qdrant
branch: v0.8.0
run:
command:
- uvx
- mcp-server-qdrant
volumes:
- fastembed_model:/hf
config:
description: >
Configure the connection to Qdrant,
Note: You cannot provide both QDRANT_URL and QDRANT_LOCAL_PATH at the same time.
secrets:
- name: qdrant.api_key
env: QDRANT_API_KEY
example: your-api-key
env:
- name: QDRANT_URL
example: 'http://localhost:6333'
value: '{{qdrant.qdrant_url}}'
- name: COLLECTION_NAME
example: 'my-collection'
value: '{{qdrant.collection_name}}'
- name: QDRANT_LOCAL_PATH
example: 'None'
value: '{{qdrant.qdrant_local_path}}'
Comment on lines +33 to +41
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to address an issue I encountered regarding the configuration file server.yaml for the Docker MCP Registry. This file is required to specify all environment variables (options) for the Qdrant MCP.

The first concern is that both QDRANT_URL (referred to as location) and QDRANT_LOCAL_PATH (referred to as local_path) are set simultaneously. This configuration has led to a validation error, as it is not permissible to provide both options at the same time.

The validation error is as follows:

Traceback (most recent call last):
  File "/root/.cache/uv/archive-v0/SZ7ANpRs8hfrR56uyvt3d/bin/mcp-server-qdrant", line 12, in <module>
    sys.exit(main())
             ^^^^^^
  File "/root/.cache/uv/archive-v0/SZ7ANpRs8hfrR56uyvt3d/lib/python3.11/site-packages/mcp_server_qdrant/main.py", line 22, in main
    from mcp_server_qdrant.server import mcp
  File "/root/.cache/uv/archive-v0/SZ7ANpRs8hfrR56uyvt3d/lib/python3.11/site-packages/mcp_server_qdrant/server.py", line 10, in <module>
    qdrant_settings=QdrantSettings(),
                    ^^^^^^^^^^^^^^^^
  File "/root/.cache/uv/archive-v0/SZ7ANpRs8hfrR56uyvt3d/lib/python3.11/site-packages/pydantic_settings/main.py", line 188, in __init__
    super().__init__(
  File "/root/.cache/uv/archive-v0/SZ7ANpRs8hfrR56uyvt3d/lib/python3.11/site-packages/pydantic/main.py", line 253, in __init__
    validated_self = self.__pydantic_validator__.validate_python(data, self_instance=self)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pydantic_core._pydantic_core.ValidationError: 1 validation error for QdrantSettings
  Value error, if 'local_path' is set, 'location' and 'api_key' must be None. [type=value_error, input_value={'QDRANT_URL': 'http://lo...ath/to/qdrant/database'}, input_type=dict]
    For further information, visit https://errors.pydantic.dev/2.11/v/value_error
exit status 1

Additionally, the QDRANT_LOCAL_PATH variable is mistakenly set to the string 'None', which is not equivalent to the actual None value in Python. This can further contribute to validation issues.

To resolve this matter, I have submitted a pull request to the Qdrant MCP repository.

I will provide updates as soon as the issue has been addressed. Thank you for your attention to this matter.

- name: EMBEDDING_PROVIDER
example: 'fastembed'
value: '{{qdrant.embedding_provider}}'
- name: EMBEDDING_MODEL
example: 'sentence-transformers/all-MiniLM-L6-v2'
value: '{{qdrant.embedding_model}}'
- name: FASTMCP_DEBUG
example: 'true'
value: '{{qdrant.fastmcp_debug}}'
- name: FASTMCP_LOG_LEVEL
example: 'INFO'
value: '{{qdrant.fastmcp_log_level}}'
- name: FASTMCP_WARN_ON_DUPLICATE_RESOURCES
example: 'true'
value: '{{qdrant.fastmcp_warn_on_duplicate_resources}}'
- name: FASTMCP_WARN_ON_DUPLICATE_TOOLS
example: 'true'
value: '{{qdrant.fastmcp_warn_on_duplicate_tools}}'
- name: FASTMCP_WARN_ON_DUPLICATE_PROMPTS
example: 'true'
value: '{{qdrant.fastmcp_warn_on_duplicate_prompts}}'
- name: FASTMCP_DEPENDENCIES
example: '[]'
value: '{{qdrant.fastmcp_dependencies}}'
- name: FASTEMBED_CACHE_PATH
example: '/hf'
value: /hf
parameters:
type: object
properties:
qdrant_url:
type: string
description: >
URL of the Qdrant server
(e.g. https://xyz-example.eu-central.aws.cloud.qdrant.io:6333 for cloud and http://localhost:6333 for self-hosted)
collection_name:
type: string
description: Name of the default collection to use.
qdrant_local_path:
type: string
description: Path to the local Qdrant database (alternative to QDRANT_URL)
embedding_provider:
type: string
description: Embedding provider to use (currently only "fastembed" is supported)
default: fastembed
embedding_model:
type: string
description: Name of the embedding model to use
default: sentence-transformers/all-MiniLM-L6-v2
fastmcp_debug:
type: boolean
description: Enable debug mode
default: false
fastmcp_log_level:
type: string
enum: [ DEBUG, INFO, WARNING, ERROR, CRITICAL ]
description: Set logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
default: INFO
fastmcp_warn_on_duplicate_resources:
type: boolean
description: Show warnings for duplicate resources
default: true
fastmcp_warn_on_duplicate_tools:
type: boolean
description: Show warnings for duplicate tools
default: true
fastmcp_warn_on_duplicate_prompts:
type: boolean
description: Show warnings for duplicate prompts
default: true
fastmcp_dependencies:
type: array
description: List of dependencies to install in the server environment
items:
type: string
required:
- collection_name