MCP server that wraps the Qdrant vector database API as tools.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
A Model Context Protocol (MCP) server that exposes the full Qdrant
vector database API as tools β collection management, advanced hybrid search, payload and
vector editing, snapshots, and server observability. Not just store/find.
Qdrant MCP is a thin MCP server that wraps the Qdrant API
one-to-one: it registers a tool per Qdrant operation, validates the input with Pydantic, calls
the official qdrant-client SDK, and returns the result. It never generates embeddings, never
parses documents, and never decides how to chunk text β it is not a RAG system, on purpose.
Whatever an LLM client wants to store or query, it brings its own vectors.
That focus is also what sets it apart from the official Qdrant MCP
server, which exposes exactly two tools
(store/find) and does embed documents for you. This server covers the rest of Qdrant's
surface β everything under collections, points, search, payload, indexing, snapshots, and
observability β so an LLM client can manage a Qdrant deployment end to end, not just push and
pull memories through a narrow interface.
See ROADMAP.md for the full phase-by-phase design history, including every finding that shaped a decision (in Spanish).
qdrant_collection_vector_create/qdrant_collection_vector_delete) depend on an endpoint
that returns 404 on older Qdrant servers (verified against v1.13.6 and v1.15.1) β everything
else works on older versions, but v1.19.0+ is the only version this project tests against.The image only makes sense with streamable-http β stdio needs a client to own the process's
stdin/stdout directly, which a detached container can't provide. The server binds
127.0.0.1 by default, so QDRANT_MCP_HTTP_HOST=0.0.0.0 is required for the port to be
reachable from outside the container. Images are published on every tagged release as
{version}, {major}.{minor}, and latest.
.mcpb)Download mcp-qdrant.mcpb from the latest release
and double-click it. Claude Desktop installs the server via uv (resolving dependencies on your
machine, no Python installation required) and prompts for Qdrant URL, API key, local path,
toolsets, and read-only mode through its own settings form β no JSON to edit.
Point the server at a local Qdrant instance over stdio and confirm it's reachable:
Once connected from an MCP client, a typical first exchange looks like:
qdrant_health_check β confirms the configured Qdrant instance is reachable before
doing anything else.qdrant_collection_create β {"collection_name": "docs", "vector_size": 4, "distance": "Cosine"}.qdrant_points_upsert β {"collection_name": "docs", "points": [{"id": 1, "vector": [0.1, 0.2, 0.3, 0.4], "payload": {"title": "hello"}}]}.qdrant_query β {"collection_name": "docs", "query_vector": [0.1, 0.2, 0.3, 0.4], "limit": 5}.The full parameter shape of every tool is described in its own MCP schema β an LLM client reads
those directly via tools/list; the table in Available Tools below is a
human-readable summary of the same data.
stdio)claude_desktop_config.json (Claude Desktop) or .mcp.json (Claude Code):
Or use the .mcpb bundle described in Installation β same
result, no JSON to edit.
streamable-http)For a server reachable over the network (e.g. added as a custom connector in Claude.ai) with a
single, fixed backing Qdrant. QDRANT_MCP_SHARED_SECRET is required in this mode β the
server refuses to start as streamable-http without one, to avoid serving an unauthenticated
endpoint over the network (verified hands-on: an open streamable-http server is trivially
usable by anyone with the URL).
In Claude.ai (Customize β Connectors β Add custom connector, verified hands-on against a
real account): enter the server's HTTPS URL, then on the detected authentication screen choose
"None" and add a Request header β Authorization β Bearer <the same secret>.
(Authorization is used here because it's one of the two header names Claude.ai's
custom-connector UI accepts without requiring Anthropic's manual approval of a custom name.)
QDRANT_MCP_BYO)A streamable-http deployment can run with no backing Qdrant of its own β every caller
supplies their own Qdrant instance (their own Qdrant Cloud account, their company's
self-hosted Qdrant, whatever) per request, instead of using one the operator hosts and pays for.
Isolation between callers is automatic β each one talks to their own database β so there's no
shared secret, no per-user account, and no data at rest on this server.
Two request headers, reused for a different purpose than their name suggests β verified
hands-on that Claude.ai's custom-connector "Request headers" UI rejects made-up header names
outright unless Anthropic has approved them, so this reuses two pre-approved ones instead of
inventing X-Qdrant-Url/X-Qdrant-Api-Key:
Authorization (required) β your Qdrant URL, e.g. https://xyz.cloud.qdrant.io:6333.
Sent verbatim, no Bearer prefix (unlike the personal-instance mode above, which uses the
same header for a shared secret).x-api-key (optional) β your Qdrant API key, if your instance needs one.In Claude.ai: Add custom connector β authentication "None" β add both as Request headers. Your Qdrant must be reachable from the public internet β see Security for what the SSRF guard rejects.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/qdrant-mcp)<a href="https://allmcps.com/mcp/qdrant-mcp"><img src="https://allmcps.com/api/badge/qdrant-mcp?style=directory" alt="Qdrant MCP on AllMCPs" /></a>