Recibe 56 definiciones de herramientas. Los schemas que se anuncian son compactos —46 KB para el toolset por defecto en vez de unos 150 KB— porque se cargan en el contexto del modelo en cada conversación.
tests/unit/test_schemas.pystdio por defecto. El transporte remoto se niega a arrancar sin un secreto compartido, y no existe ninguna instancia alojada: es un proyecto que se ejecuta, no un servicio.
src/mcp_qdrant/cli.pyUn único punto de control. Filtra toolsets, elimina toda herramienta que escribe en modo solo lectura (sobreviven 31 de 56) y limita los resultados por llamada. Una herramienta no puede saltárselo registrándose de otra forma.
src/mcp_qdrant/tools/registry.pyLos fallos de transporte se reintentan con backoff. Un error de Qdrant llega al modelo como el mensaje propio de Qdrant, nunca como un genérico "Error executing tool".
src/mcp_qdrant/tools/errors.pyEl SDK oficial, de modo que las entradas de las herramientas reutilizan sus modelos y siguen su versión. El servidor nunca genera embeddings: tú traes tus vectores.
ROADMAP.md · principio 1tools/call, tal como lo envía el cliente
{
"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
}
}
}Por el cable
stdio: un mensaje JSON-RPC por línea, por stdin y stdout
streamable-http: POST /mcp
Authorization: Bearer <secreto compartido> (obligatorio para arrancar)
Qué comprueba el registro
✓ el toolset core está activo
✓ el modo solo lectura está desactivado (qdrant_query es de solo lectura, así que pasaría igualmente)
✓ limit 3 ≤ tope 1000 (QDRANT_MCP_MAX_LIMIT)
✓ los argumentos validan contra el modelo Pydantic de la herramienta
Qué se envía a Qdrant
POST /collections/demo_articles/points/query
error de transporte → se reintenta con backoff
error de Qdrant → ToolError(el mensaje propio de Qdrant)
La respuesta de Qdrant, resumida
{
"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
}
]
}