The pairing is the point: read_graph gives the assistant the full structure when it needs it, while search_similar finds the entity you described rather than the one you named. It does depend on two external pieces — a reachable Qdrant collection and an OpenAI key for the embeddings — so it is not the choice if you want everything local.
A knowledge-graph memory server with semantic search. Entities, relations and observations are written to a local JSON file for graph operations, and embedded into a Qdrant collection so similar concepts can be found without matching names.
- create_entities — add entities with their observations
- create_relations — connect entities to each other
- add_observations — attach new observations to an existing entity
- delete_entities — remove entities and the relations that reference them
- delete_observations and delete_relations — remove specific observations or edges
- read_graph — the whole knowledge graph in one call
- search_similar — semantic search over entities and relations, with a query and a result limit
- Both stores stay in step: a write updates the JSON file, generates an embedding, and stores the vector in Qdrant
A Qdrant server and an OpenAI key for embeddings: OPENAI_API_KEY, QDRANT_URL, QDRANT_COLLECTION_NAME, and QDRANT_API_KEY when Qdrant has authentication on. Node with the project built, or the supplied Docker image. HTTPS Qdrant endpoints behind a reverse proxy are supported, including self-signed certificates.
One command plus a key — npx -y @delorenj/mcp-qdrant-memory, then supply credentials
