A Zed extension to access Qdrant vector database directly in Zed using the Model Context Protocol (MCP). Works with any OpenAI-compatible embedding server (llama.cpp, Ollama, vLLM, LM Studio, and more).
- Prerequisites
- Quick Start
- Configuration
- Compatible Embedding Servers
- Recommended Embedding Models
- Available Tools
- Installing Extensions
- Installation Location
- Development
- Resources
You need a running Qdrant instance. Options:
Qdrant Cloud (recommended for production)
- Sign up at https://cloud.qdrant.io
- Create a cluster
- Copy URL and API key to settings (default port is added automatically:
:6334for gRPC,:6333for REST)
Local Qdrant with Docker
# Quick start (data lost when container stops)
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
# With persistent storage (recommended)
docker run -d --name qdrant \
-p 6333:6333 -p 6334:6334 \
-v qdrant_storage:/qdrant/storage \
--restart unless-stopped \
qdrant/qdrantManage the container:
docker stop qdrant # stop
docker start qdrant # start again (data persists)
docker logs qdrant # view logsLocal Qdrant binary on macOS (no Docker)
Download the latest binary from Qdrant releases:
- Apple Silicon (M1/M2/M3/M4):
qdrant-aarch64-apple-darwin.tar.gz - Intel:
qdrant-x86_64-apple-darwin.tar.gz
# Extract and run
tar -xzf qdrant-*.tar.gz
./qdrantQdrant will start on the default ports (6333 HTTP, 6334 gRPC).
You need any server that exposes an OpenAI-compatible /v1/embeddings endpoint. See Compatible Embedding Servers for options.
- Start Qdrant (cloud or local)
- Start an embedding server (see Compatible Embedding Servers)
- Install this extension in Zed (see Installing Extensions)
- Add settings to
~/.config/zed/settings.json:{ "context_servers": { "mcp-server-qdrant": { "settings": { "embedding_server_url": "http://localhost:8080", "embedding_model": "snowflake-arctic-embed2" } } } } - Use
qdrant-storeto save text andqdrant-findto search semantically
Configure in ~/.config/zed/settings.json:
{
"context_servers": {
"mcp-server-qdrant": {
"settings": {
"qdrant_url": "https://xxx.cloud.qdrant.io",
"qdrant_api_key": "your-api-key",
"collection_name": "zed_collection",
"embedding_server_url": "http://localhost:8080",
"embedding_api_key": "",
"embedding_model": "snowflake-arctic-embed2",
"transport_protocol": "grpc",
"enabled_tool_groups": "core"
}
}
}
}| Setting | Default | Description |
|---|---|---|
qdrant_url |
— | Qdrant server URL |
qdrant_api_key |
— | API key for Qdrant Cloud |
collection_name |
— | Vector collection name (created automatically) |
embedding_server_url |
— | URL of any OpenAI-compatible embedding server |
embedding_api_key |
— | Optional API key for the embedding server |
embedding_model |
— | Model name passed to the embedding server |
transport_protocol |
grpc |
Transport protocol: "grpc" (port 6334) or "rest" (port 6333) |
enabled_tool_groups |
core |
Comma-separated list of tool groups to enable (see Tool Groups) |
The extension supports both gRPC and REST for communicating with Qdrant:
- gRPC (default) — Binary protocol, better performance for large data. Uses port
6334. - REST — JSON-based, easier to debug. Uses port
6333.
When running Qdrant locally with Docker, expose both ports to allow switching:
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrantSet "transport_protocol": "rest" in your settings to use REST. The correct default port is applied automatically when qdrant_url doesn't specify one.
Any server that exposes an OpenAI-compatible /v1/embeddings endpoint will work. Configure embedding_server_url and embedding_model accordingly.
| Server | Default URL | Example embedding_model |
Start Command |
|---|---|---|---|
| llama.cpp | http://localhost:8080 |
snowflake-arctic-embed2 |
llama-server -m model.gguf --embeddings --port 8080 |
| Ollama | http://localhost:11434 |
nomic-embed-text |
ollama serve (then ollama pull nomic-embed-text) |
| vLLM | http://localhost:8000 |
BAAI/bge-m3 |
vllm serve BAAI/bge-m3 |
| LM Studio | http://localhost:1234 |
nomic-embed-text |
Start server from LM Studio UI |
| LocalAI | http://localhost:8080 |
bert-cpp-minilm-v6 |
local-ai run bert-cpp-minilm-v6 |
| Model | Dimensions | Max Tokens | Best For |
|---|---|---|---|
| snowflake-arctic-embed2 | 768 | 8192 | General-purpose, multilingual retrieval |
| nomic-embed-text v2 | 768 | 8192 | Multilingual, MoE architecture |
| nomic-embed-text v1.5 | 768 | 8192 | Lightweight, GGUF-ready |
| BAAI/bge-m3 | 1024 | 8192 | Multilingual, dense + sparse retrieval |
| mxbai-embed-large | 1024 | 512 | High accuracy, English-focused |
| jina-embeddings-v4 | 2048 | 8192 | Multimodal (text + images) |
Tools are organized into groups to reduce context window usage. By default, only the core group is enabled (~450 tokens). Enabling all 27 tools consumes ~5,500 tokens of context.
| Group | Tools | Description |
|---|---|---|
core |
3 | Semantic store, find, and list collections (default) |
collections |
5 | Create, delete, info, exists, update collections |
points |
5 | Upsert, get, delete, count, scroll points |
search |
6 | Vector search, recommend, query, batch, groups, discover |
payload |
4 | Set/delete payload, create/delete indexes |
admin |
4 | Aliases and snapshots |
Enable groups in your settings with a comma-separated list:
{
"context_servers": {
"mcp-server-qdrant": {
"settings": {
"enabled_tool_groups": "core,collections,search"
}
}
}
}Use "all" to enable every group:
"enabled_tool_groups": "all"qdrant-store- Store text with automatically generated embeddingsqdrant-find- Search for semantically similar texts
Collection Management (6 tools)
qdrant-list-collections- List all collectionsqdrant-create-collection- Create a new vector collectionqdrant-delete-collection- Delete a collectionqdrant-get-collection-info- Get collection detailsqdrant-update-collection- Update collection parameters (HNSW, optimizer, etc.)qdrant-collection-exists- Check if a collection exists
Point Operations (5 tools)
qdrant-upsert-points- Insert or update points with vectors and payloadsqdrant-get-points- Retrieve points by IDqdrant-delete-points- Delete points by ID or filterqdrant-count-points- Count points in a collectionqdrant-scroll-points- Paginate through points
Search & Query (6 tools)
qdrant-search- Raw vector similarity searchqdrant-recommend- Find similar points by example IDs (no vector needed)qdrant-query- Universal query endpoint (fusion, re-ranking, nested prefetch)qdrant-search-batch- Execute multiple searches in one requestqdrant-search-groups- Search with results grouped by a payload fieldqdrant-discover- Context-based exploration with positive/negative pairs
Payload & Index Management (4 tools)
qdrant-set-payload- Set or update payload fields on existing pointsqdrant-delete-payload- Delete specific payload keys from pointsqdrant-create-index- Create a payload field index for faster filtered searchesqdrant-delete-index- Delete a payload field index
Aliases (2 tools)
qdrant-list-aliases- List all aliases or aliases for a specific collectionqdrant-update-aliases- Create, rename, or delete collection aliases
Snapshots (2 tools)
qdrant-list-snapshots- List snapshots for a collectionqdrant-create-snapshot- Create a snapshot for backup
You can search for extensions by launching the Zed Extension Gallery by pressing cmd-shift-x, opening the command palette and selecting zed: extensions, or by selecting "Zed > Extensions" from the menu bar.
Here you can view the extensions that you currently have installed or search and install new ones.
- On macOS, extensions are installed in ~/Library/Application Support/Zed/extensions.
- On Linux, they are installed in either $XDG_DATA_HOME/zed/extensions or ~/.local/share/zed/extensions.
- On Windows, the directory is %LOCALAPPDATA%\Zed\extensions.
This directory contains two subdirectories:
- installed, which contains the source code for each extension.
- work, which contains files created by the extension itself, such as downloaded language servers.
See docs/DEVELOPMENT.md for build instructions, test setup, and dependency management.
- Zed Docs – Installing Extensions
- Zed Docs – Developing Extensions
- Zed Docs – MCP Server Extensions
- Zed Docs – Model Context Protocol (MCP)
- Zed Industries/Extensions GitHub Repository