A Model Context Protocol (MCP) server for Zvec, a high-performance embedded vector database by Alibaba.
This MCP server enables LLMs to interact with Zvec vector database through well-designed tools. It provides comprehensive functionality for:
- Collection Management: Create, open, and manage vector database collections
- Document Operations: Insert, update, delete, and fetch documents with full CRUD support
- Vector Search: Single-vector and multi-vector similarity search with re-ranking
- Index Management: Create and manage vector indexes (HNSW, IVF, FLAT) for fast retrieval
- AI Embedding: OpenAI-powered dense embedding with automatic text-to-vector conversion
- π 17 Comprehensive Tools: Full API coverage for common vector database operations
- π€ AI-Powered Embedding: Built-in OpenAI embedding for semantic search
- π Multiple Response Formats: Support both JSON and Markdown output formats
- π Multi-Vector Search: Combine multiple embeddings with advanced re-ranking
- π― Hybrid Search: Combine vector similarity with scalar filters
- π‘οΈ Type Safety: Full Pydantic v2 validation for all inputs
- π Rich Documentation: Detailed tool descriptions with examples
- Python 3.10 - 3.14
- Supported platforms: Linux (x86_64, ARM64), macOS (ARM64), Windows (x86_64)
# Using uv (recommended) uv pip install zvec-mcp-server # Or using pip pip install zvec-mcp-server
# Clone the repository git clone https://github.com/zvec-ai/zvec-mcp-server.git cd zvec-mcp-server # Using uv (recommended) uv venv && source .venv/bin/activate uv pip install -e ".[dev]" # Or using pip python -m venv .venv && source .venv/bin/activate pip install -e ".[dev]"
# Using the installed package python -m zvec_mcp # Or with uv uv run python -m zvec_mcp # Test with MCP Inspector npx @modelcontextprotocol/inspector python -m zvec_mcp
Add to your IDE's MCP configuration file:
Qoder MCP Config (~/.qoder/mcp.json or ~/.config/qoder/mcp.json):
{
"mcpServers": {
"zvec-mcp": {
"command": "uvx",
"args": ["zvec-mcp-server"],
"env": {
"OPENAI_API_KEY": "your-api-key",
"OPENAI_BASE_URL": "https://api.openai.com/v1",
"OPENAI_EMBEDDING_MODEL": "text-embedding-3-small"
}
}
}
}Claude Desktop Config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"zvec-mcp": {
"command": "uvx",
"args": ["zvec-mcp-server"],
"env": {
"OPENAI_API_KEY": "your-api-key"
}
}
}
}Environment Variables:
OPENAI_API_KEY(required): OpenAI API key for embedding generationOPENAI_BASE_URL(optional): Custom API endpoint (e.g., for DashScope)OPENAI_EMBEDDING_MODEL(optional): Model name, default istext-embedding-3-small
# 1. Create and open a collection create_and_open_collection({ "path": "./my_vectors", "collection_name": "docs_col", "vector_fields": [ { "name": "embedding", "data_type": "VECTOR_FP32", "dimension": 1536 } ], "scalar_fields": [ { "name": "title", "data_type": "STRING", "nullable": False } ] }) # 2. Insert documents with auto-generated embeddings (requires OPENAI_API_KEY) embedding_write({ "collection_name": "docs_col", "field_name": "embedding", "documents": [ { "id": "doc1", "text": "This is a sample document about machine learning.", "fields": {"title": "ML Introduction"} } ] }) # 3. Semantic search with natural language query embedding_search({ "collection_name": "docs_col", "field_name": "embedding", "query_text": "artificial intelligence and neural networks", "topk": 10 })
create_and_open_collection- Create new collection with schema and auto-create indexesopen_collection- Open existing collection into session cacheget_collection_info- Get schema and statisticsdestroy_collection- Permanently delete collection
insert_documents- Insert new documents (fail if exists)upsert_documents- Insert or update documentsupdate_documents- Update existing documentsdelete_documents- Delete documents by IDfetch_documents- Retrieve documents by ID
vector_query- Single-vector similarity search with optional filteringmulti_vector_query- Multi-vector search with re-ranking (Weighted/RRF)
create_index- Create vector index (HNSW/IVF/FLAT) or scalar index (INVERT)drop_index- Remove index from fieldoptimize_collection- Optimize collection for better performance
generate_dense_embedding- Generate embedding for text using OpenAI APIembedding_write- Auto-embed text documents and upsert to collectionembedding_search- Natural language semantic search with auto-embedding
VECTOR_FP32,VECTOR_FP64,VECTOR_FP16- Dense float vectorsVECTOR_INT8- Dense integer vectorsSPARSE_VECTOR_FP32,SPARSE_VECTOR_FP16- Sparse vectors (Dict[int, float])
INT32,INT64,UINT32,UINT64- Integer typesFLOAT,DOUBLE- Floating point typesSTRING,BOOL- Text and boolean
Vector Indexes:
HNSW- Hierarchical Navigable Small World (recommended for most cases)IVF- Inverted File Index (good for large datasets)FLAT- Brute-force exact search (small datasets)
Scalar Indexes:
INVERT- Inverted index for scalar fields with optional range optimization
COSINE- Cosine similarityIP- Inner productL2- Euclidean distance
WEIGHTED- Weighted score fusion with custom weights per fieldRRF- Reciprocal Rank Fusion (rank-based fusion)
zvec-mcp-server/
βββ src/
β βββ zvec_mcp/
β βββ __init__.py # Package entry point
β βββ server.py # MCP server implementation (17 tools)
β βββ schemas.py # Pydantic input validation models
β βββ types.py # Enums and type definitions
β βββ utils.py # Helper functions and formatters
βββ tests/
β βββ test_server.py # Pytest test suite
βββ pyproject.toml # Project configuration
βββ README.md # This file
βββ CONTRIBUTING.md # Contribution guidelines
βββ LICENSE # Apache 2.0 License
The server exposes two MCP resources for introspection:
zvec://collections- List all opened collections in the current sessionzvec://collection/{collection_name}- Get detailed schema and stats for a specific collection
All tools provide clear, actionable error messages:
- Resource not found errors with suggestions
- Validation errors from Pydantic v2
- Zvec API errors with context
Tools support two output formats:
- JSON: Structured data for programmatic processing
- Markdown: Human-readable formatted text with headers and lists
The project includes a comprehensive pytest test suite with 21 test cases covering all functionality.
# Install dev dependencies (includes pytest and pytest-asyncio) uv pip install -e ".[dev]" # Run all tests pytest tests/test_server.py -v
Please see CONTRIBUTING.md for guidelines on how to contribute to this project.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.