Back to Browse

Qdrant MCP Server

Developer ToolsLow Risk10.0MCP RegistryLocal
Free

Server data from the Official MCP Registry

MCP server that wraps the Qdrant vector database API as tools.

About

MCP server that wraps the Qdrant vector database API as tools.

Security Report

10.0
Low Risk10.0Low Risk

Valid MCP server (1 strong, 1 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry.

5 files analyzed · 1 issue found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

What You'll Need

Set these up before or after installing:

Qdrant server URL, e.g. http://localhost:6333 (mutually exclusive with QDRANT_LOCAL_PATH)Optional

Environment variable: QDRANT_URL

Qdrant API key, if your instance requires oneRequired

Environment variable: QDRANT_API_KEY

Path to an embedded Qdrant instance, instead of a URLOptional

Environment variable: QDRANT_LOCAL_PATH

Comma-separated toolsets to enable: core, search, payload, snapshots, observabilityOptional

Environment variable: QDRANT_MCP_TOOLSETS

Block every tool not marked read-onlyOptional

Environment variable: QDRANT_MCP_READ_ONLY

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-avaazquezz-mcp-qdrant": {
      "env": {
        "QDRANT_URL": "your-qdrant-url-here",
        "QDRANT_API_KEY": "your-qdrant-api-key-here",
        "QDRANT_LOCAL_PATH": "your-qdrant-local-path-here",
        "QDRANT_MCP_TOOLSETS": "your-qdrant-mcp-toolsets-here",
        "QDRANT_MCP_READ_ONLY": "your-qdrant-mcp-read-only-here"
      },
      "args": [
        "mcp-qdrant"
      ],
      "command": "uvx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

Qdrant-MCP

MCP server that wraps the Qdrant vector database API as tools. See ROADMAP.md.

Tools

Generated from the live tool registry — run uv run python scripts/gen_tools_doc.py after adding or changing a tool.

ToolToolsetRead-onlyDestructiveIdempotentDescription
qdrant_health_checkcoreConfirm the configured Qdrant instance is reachable and responding.
qdrant_collection_createcoreCreate a collection: either a single unnamed vector (vector_size + distance), or one or more named vectors (vectors, each a full VectorParams — size, distance, and optionally its own multivector_config for ColBERT-style multi-vectors or quantization_config) — exactly one of the two.
qdrant_collection_listcoreList every collection name in the configured Qdrant instance.
qdrant_collection_infocoreReturn full config and status of one collection.
qdrant_collection_updatecoreUpdate optimizer/HNSW/collection/vector params on an existing collection.
qdrant_collection_deletecoreDelete a collection and all its points; a no-op if it doesn't exist.
qdrant_collection_existscoreCheck whether a collection exists, without raising if it doesn't.
qdrant_points_upsertcoreInsert or replace points (id + vector + payload) in a collection.
qdrant_points_getcoreRetrieve points by id; unknown ids are simply omitted, not an error.
qdrant_points_deletecoreDelete points by id list or by payload filter — exactly one of the two.
qdrant_points_scrollcorePage through all points in a collection, optionally filtered.
qdrant_points_countcoreCount points in a collection, optionally matching a filter.
qdrant_querycoreVector similarity search, with optional hybrid search over multiple prefetch stages.
qdrant_query_batchsearchRun multiple independent queries against one collection in a single round trip — same query shapes as qdrant_query (plain vector or fusion+prefetch hybrid search), one per list item.
qdrant_query_groupssearchVector query grouped by a payload field, up to group_size hits per group — e.g. the best-matching chunks per source document.
qdrant_recommendsearchFind points similar to a set of positive examples and dissimilar to a set of negative ones (vectors or point ids) — Qdrant's recommendation API.
qdrant_recommend_batchsearchRun multiple independent recommend queries against one collection in a single round trip.
qdrant_recommend_groupssearchRecommend query grouped by a payload field, up to group_size hits per group.
qdrant_discoversearchRank points by how well they fit a target within positive/negative context pairs (vectors or point ids) — Qdrant's discovery search, a finer-grained alternative to recommend.
qdrant_discover_batchsearchRun multiple independent discover queries against one collection in a single round trip.
qdrant_distance_matrix_pairssearchPairwise distance matrix between a random sample of points: for each of sample points, its limit closest neighbors among that same sample — returned as a flat list of (a, b, score) pairs.
qdrant_distance_matrix_offsetssearchSame distance matrix as qdrant_distance_matrix_pairs, in a column-oriented shape (offsets into a shared id list + a parallel score array) — more compact for large samples.
qdrant_payload_setpayloadMerge fields into the payload of selected points — exactly one of ids/points_filter.
qdrant_payload_overwritepayloadReplace the entire payload of selected points with payload — exactly one of ids/points_filter.
qdrant_payload_deletepayloadDelete specific payload keys from selected points — exactly one of ids/points_filter.
qdrant_payload_clearpayloadWipe the entire payload of selected points, keeping their vectors — exactly one of ids/points_filter.
qdrant_payload_facetpayloadCount distinct values of a payload field across the collection (or a filtered subset) — e.g. how many points per city.
qdrant_payload_index_createpayloadCreate a payload index on field_name, speeding up filters that use it.
qdrant_payload_index_deletepayloadDelete the payload index on field_name.
qdrant_collection_vector_createpayloadAdd a new named vector (dense or sparse) to a collection that already has points, without touching them.
qdrant_collection_vector_deletepayloadRemove a named vector (dense or sparse) from a collection — points keep their other vectors and payload.
qdrant_points_batch_updatepayloadRun multiple point operations (upsert, delete, set/overwrite/delete/clear payload, update/delete vectors) atomically against one collection, in the order given.
qdrant_vectors_updatepayloadReplace the vector(s) of existing points by id — leaves their payload untouched.
qdrant_vectors_deletepayloadRemove specific named vectors from selected points, keeping their payload and other vectors — exactly one of ids/points_filter.
qdrant_snapshot_createsnapshotsCreate a snapshot of one collection's current state.
qdrant_snapshot_listsnapshotsList the snapshots stored for one collection.
qdrant_snapshot_deletesnapshotsDelete a collection snapshot, freeing its disk space on the server — does not touch the live collection.
qdrant_snapshot_recoversnapshotsOverwrite collection_name with the state captured in a snapshot — everything written since that snapshot is lost.
qdrant_snapshot_downloadsnapshotsConfirm a collection snapshot exists and return where to fetch it from — this tool does not transfer the (potentially huge) snapshot file itself; download it yourself (e.g. curl) from the returned url.
qdrant_storage_snapshot_createsnapshotsCreate a snapshot of the whole storage (every collection and server config), not just one collection.
qdrant_storage_snapshot_listsnapshotsList the full-storage snapshots stored on the server.
qdrant_storage_snapshot_deletesnapshotsDelete a full-storage snapshot, freeing its disk space.
qdrant_storage_snapshot_downloadsnapshotsConfirm a full-storage snapshot exists and return where to fetch it from — same caveat as qdrant_snapshot_download: this tool does not transfer the file itself.
qdrant_telemetryobservabilityServer-wide telemetry: build info, per-collection stats, request counters, memory and hardware usage.
qdrant_metrics_prometheusobservabilityReturn the URL where Qdrant serves Prometheus-format metrics — this tool does not fetch the metrics themselves (they're plain text, not JSON); point your Prometheus scraper at the returned url instead.
qdrant_quotas_getobservabilityCurrent server-wide resource quotas (memory/disk limits) and actual usage.
qdrant_quotas_setobservabilityUpdate server-wide resource quotas.
qdrant_issues_listobservabilityList the issues Qdrant has detected about its own configuration (e.g. a heavily-filtered field with no payload index).
qdrant_issues_clearobservabilityClear all accumulated issues.

Configuration

Environment variables: QDRANT_URL, QDRANT_API_KEY, QDRANT_LOCAL_PATH (exactly one of QDRANT_URL/QDRANT_LOCAL_PATH), QDRANT_MCP_READ_ONLY, QDRANT_MCP_TRANSPORT (stdio default, or streamable-http), QDRANT_MCP_TOOLSETS (comma-separated; default core only — opt in to search, payload, snapshots, observability explicitly), QDRANT_MCP_BYO (see below — mutually exclusive with QDRANT_URL/QDRANT_LOCAL_PATH).

Claude Desktop / Claude Code (local, stdio)

claude_desktop_config.json (Claude Desktop) or .mcp.json (Claude Code):

{
  "mcpServers": {
    "qdrant": {
      "command": "uvx",
      "args": ["mcp-qdrant"],
      "env": {
        "QDRANT_URL": "http://localhost:6333",
        "QDRANT_MCP_TOOLSETS": "core,search"
      }
    }
  }
}

Or double-click the .mcpb bundle attached to a release — Claude Desktop prompts for the same settings through its own UI, no JSON to edit.

Remote (streamable-http) — e.g. a custom connector in Claude.ai

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).

QDRANT_URL=http://localhost:6333 \
QDRANT_MCP_TRANSPORT=streamable-http \
QDRANT_MCP_HTTP_HOST=0.0.0.0 \
QDRANT_MCP_SHARED_SECRET=<a long random secret> \
mcp-qdrant

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 headerAuthorizationBearer <the same secret>.

Public "bring your own Qdrant" instance (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.

QDRANT_MCP_BYO=1 \
QDRANT_MCP_TRANSPORT=streamable-http \
QDRANT_MCP_HTTP_HOST=0.0.0.0 \
mcp-qdrant

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 needed.
  • 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 — an SSRF guard rejects any URL that resolves to a private/internal/loopback address.

Reviews

No reviews yet

Be the first to review this server!