It receives 56 tool definitions. The advertised schemas are compact — 46 KB for the default toolset instead of about 150 KB — because they are loaded into the model’s context on every conversation.
tests/unit/test_schemas.pystdio by default. The remote transport refuses to start without a shared secret, and there is no hosted instance: this is a project you run, not a service.
src/mcp_qdrant/cli.pyOne choke point. It filters toolsets, removes every mutating tool in read-only mode (31 of 56 survive) and caps results per call. A tool cannot bypass it by registering itself differently.
src/mcp_qdrant/tools/registry.pyTransport failures are retried with backoff. A Qdrant error reaches the model as Qdrant’s own message, never as a generic "Error executing tool".
src/mcp_qdrant/tools/errors.pyThe official SDK, so tool inputs reuse its models and track its version. The server never generates embeddings: you bring your vectors.
ROADMAP.md · principle 1tools/call, as the client sends it
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "qdrant_query",
"arguments": {
"collection_name": "demo_articles",
"fusion": "rrf",
"prefetch": [
{
"query_vector": [0.85, 0.2, 0, 0.2],
"using": "dense",
"limit": 6
},
{
"query_vector": {
"indices": [1, 8],
"values": [1, 1]
},
"using": "sparse",
"limit": 6
}
],
"limit": 3
}
}
}On the wire
stdio: one JSON-RPC message per line, on stdin and stdout
streamable-http: POST /mcp
Authorization: Bearer <shared secret> (required to start)
What the registry checks
✓ toolset core is enabled
✓ read-only mode is off (qdrant_query is read-only, so it would pass anyway)
✓ limit 3 ≤ cap 1000 (QDRANT_MCP_MAX_LIMIT)
✓ the arguments validate against the tool’s Pydantic model
What goes to Qdrant
POST /collections/demo_articles/points/query
transport error → retried with backoff
Qdrant error → ToolError(Qdrant’s own message)
Qdrant’s answer, summarized
{
"hits": [
{
"id": 1,
"title": "Reset your password",
"score": 0.8333
},
{
"id": 4,
"title": "Set up single sign-on",
"score": 0.75
},
{
"id": 2,
"title": "Rotate API keys",
"score": 0.5
}
]
}