Milvus MCP Server
Provides tools for interacting with Milvus vector database, enabling AI agents to perform vector search, hybrid search, collection management, data operations, and index management.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Milvus MCP Serverlist all collections in Milvus"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server for Milvus
The Model Context Protocol (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools. Whether you're building an AI-powered IDE, enhancing a chat interface, or creating custom AI workflows, MCP provides a standardized way to connect LLMs with the context they need.
This repository contains a MCP server that provides access to Milvus vector database functionality.
Prerequisites
Before using this MCP server, ensure you have:
Python 3.10 or higher
A running Milvus instance (local or remote)
uv installed (recommended for running the server)
Usage
The recommended way to use this MCP server is to run it directly with uv without installation. This is how both Claude Desktop and Cursor are configured to use it in the examples below.
If you want to clone the repository:
git clone https://github.com/stephen37/mcp-server-milvus.git
cd mcp-server-milvusThen you can run the server directly:
uv run src/mcp_server_milvus/server.py --milvus-uri http://localhost:19530Supported Applications
This MCP server can be used with various LLM applications that support the Model Context Protocol:
Claude Desktop: Anthropic's desktop application for Claude
Cursor: AI-powered code editor with MCP support in its Composer feature
Custom MCP clients: Any application implementing the MCP client specification
Usage with Claude Desktop
Install Claude Desktop from https://claude.ai/download
Open your Claude Desktop configuration:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Add the following configuration:
{
"mcpServers": {
"milvus": {
"command": "/PATH/TO/uv",
"args": [
"--directory",
"/path/to/mcp-server-milvus/src/mcp_server_milvus",
"run",
"server.py",
"--milvus-uri",
"http://localhost:19530"
]
}
}
}Restart Claude Desktop
Usage with Cursor
Cursor also supports MCP tools through its Agent feature in Composer. You can add the Milvus MCP server to Cursor in two ways:
Option 1: Using Cursor Settings UI
Go to
Cursor Settings>Features>MCPClick on the
+ Add New MCP ServerbuttonFill out the form:
Type: Select
stdio(since you're running a command)Name:
milvusCommand:
/PATH/TO/uv --directory /path/to/mcp-server-milvus/src/mcp_server_milvus run server.py --milvus-uri http://127.0.0.1:19530
⚠️ Note: Use
127.0.0.1instead oflocalhostto avoid potential DNS resolution issues.
Option 2: Using Project-specific Configuration (Recommended)
Create a .cursor/mcp.json file in your project root:
Create the
.cursordirectory in your project root:mkdir -p /path/to/your/project/.cursorCreate a
mcp.jsonfile with the following content:{ "mcpServers": { "milvus": { "command": "/PATH/TO/uv", "args": [ "--directory", "/path/to/mcp-server-milvus/src/mcp_server_milvus", "run", "server.py", "--milvus-uri", "http://127.0.0.1:19530" ] } } }Restart Cursor or reload the window
After adding the server, you may need to press the refresh button in the MCP settings to populate the tool list. The Composer Agent will automatically use the Milvus tools when relevant to your queries.
Verifying the Integration
To verify that Cursor has successfully integrated with your Milvus MCP server:
Open Cursor Settings > Features > MCP
Check that "Milvus" appears in the list of MCP servers
Verify that the tools are listed (e.g., milvus_list_collections, milvus_vector_search, etc.)
If the server is enabled but shows an error, check the Troubleshooting section below
Available Tools
The server provides the following tools:
Search and Query Operations
milvus-text-search: Search for documents using full text searchParameters:
collection_name: Name of collection to searchquery_text: Text to search forlimit: Maximum results (default: 5)output_fields: Fields to include in resultsdrop_ratio: Proportion of low-frequency terms to ignore (0.0-1.0)
milvus-vector-search: Perform vector similarity search on a collectionParameters:
collection_name: Name of collection to searchvector: Query vectorvector_field: Field containing vectors to search (default: "vector")limit: Maximum results (default: 5)output_fields: Fields to include in resultsmetric_type: Distance metric (COSINE, L2, IP) (default: "COSINE")filter_expr: Optional filter expression
milvus-hybrid-search: Perform hybrid search combining vector similarity and attribute filteringParameters:
collection_name: Name of collection to searchvector: Query vectorvector_field: Field containing vectors to search (default: "vector")filter_expr: Filter expression for metadatalimit: Maximum results (default: 5)output_fields: Fields to include in resultsmetric_type: Distance metric (COSINE, L2, IP) (default: "COSINE")
milvus-multi-vector-search: Perform vector similarity search with multiple query vectorsParameters:
collection_name: Name of collection to searchvectors: List of query vectorsvector_field: Field containing vectors to search (default: "vector")limit: Maximum results per query (default: 5)output_fields: Fields to include in resultsmetric_type: Distance metric (COSINE, L2, IP) (default: "COSINE")filter_expr: Optional filter expression
milvus-query: Query collection using filter expressionsParameters:
collection_name: Name of collection to queryfilter_expr: Filter expression (e.g. 'age > 20')output_fields: Fields to include in resultslimit: Maximum results (default: 10)
milvus-count: Count entities in a collectionParameters:
collection_name: Name of the collectionfilter_expr: Optional filter expression
Collection Management
milvus-list-collections: List all collections in the databasemilvus-collection-info: Get detailed information about a collectionParameters:
collection_name: Name of the collection
milvus-get-collection-stats: Get statistics about a collectionParameters:
collection_name: Name of collection
milvus-create-collection: Create a new collection with specified schemaParameters:
collection_name: Name for the new collectionschema: Collection schema definitionindex_params: Optional index parameters
milvus-load-collection: Load a collection into memory for search and queryParameters:
collection_name: Name of collection to loadreplica_number: Number of replicas (default: 1)
milvus-release-collection: Release a collection from memoryParameters:
collection_name: Name of collection to release
milvus-get-query-segment-info: Get information about query segmentsParameters:
collection_name: Name of collection
milvus-get-collection-loading-progress: Get the loading progress of a collectionParameters:
collection_name: Name of collection
Data Operations
milvus-insert-data: Insert data into a collectionParameters:
collection_name: Name of collectiondata: Dictionary mapping field names to lists of values
milvus-bulk-insert: Insert data in batches for better performanceParameters:
collection_name: Name of collectiondata: Dictionary mapping field names to lists of valuesbatch_size: Number of records per batch (default: 1000)
milvus-upsert-data: Upsert data into a collection (insert or update if exists)Parameters:
collection_name: Name of collectiondata: Dictionary mapping field names to lists of values
milvus-delete-entities: Delete entities from a collection based on filter expressionParameters:
collection_name: Name of collectionfilter_expr: Filter expression to select entities to delete
milvus-create-dynamic-field: Add a dynamic field to an existing collectionParameters:
collection_name: Name of collectionfield_name: Name of the new fielddata_type: Data type of the fielddescription: Optional description
Index Management
milvus-create-index: Create an index on a vector fieldParameters:
collection_name: Name of collectionfield_name: Field to indexindex_type: Type of index (IVF_FLAT, HNSW, etc.) (default: "IVF_FLAT")metric_type: Distance metric (COSINE, L2, IP) (default: "COSINE")params: Additional index parameters
milvus-get-index-info: Get information about indexes in a collectionParameters:
collection_name: Name of collectionfield_name: Optional specific field to get index info for
Environment Variables
MILVUS_URI: Milvus server URI (can be set instead of --milvus-uri)MILVUS_TOKEN: Optional authentication tokenMILVUS_DB: Database name (defaults to "default")
Development
To run the server directly:
uv run server.py --milvus-uri http://localhost:19530Examples
Using Claude Desktop
Example 1: Listing Collections
What are the collections I have in my Milvus DB?Claude will then use MCP to check this information on our Milvus DB.
I'll check what collections are available in your Milvus database.
> View result from milvus-list-collections from milvus (local)
Here are the collections in your Milvus database:
1. rag_demo
2. test
3. chat_messages
4. text_collection
5. image_collection
6. customized_setup
7. streaming_rag_demoExample 2: Searching for Documents
Find documents in my text_collection that mention "machine learning"Claude will use the full-text search capabilities of Milvus to find relevant documents:
I'll search for documents about machine learning in your text_collection.
> View result from milvus-text-search from milvus (local)
Here are the documents I found that mention machine learning:
[Results will appear here based on your actual data]Using Cursor
Example: Creating a Collection
In Cursor's Composer, you can ask:
Create a new collection called 'articles' in Milvus with fields for title (string), content (string), and a vector field (128 dimensions)Cursor will use the MCP server to execute this operation:
I'll create a new collection called 'articles' with the specified fields.
> View result from milvus-create-collection from milvus (local)
Collection 'articles' has been created successfully with the following schema:
- title: string
- content: string
- vector: float vector[128]Troubleshooting
Common Issues
Connection Errors
If you see errors like "Failed to connect to Milvus server":
Verify your Milvus instance is running:
docker ps(if using Docker)Check the URI is correct in your configuration
Ensure there are no firewall rules blocking the connection
Try using
127.0.0.1instead oflocalhostin the URI
Authentication Issues
If you see authentication errors:
Verify your
MILVUS_TOKENis correctCheck if your Milvus instance requires authentication
Ensure you have the correct permissions for the operations you're trying to perform
Tool Not Found
If the MCP tools don't appear in Claude Desktop or Cursor:
Restart the application
Check the server logs for any errors
Verify the MCP server is running correctly
Press the refresh button in the MCP settings (for Cursor)
Getting Help
If you continue to experience issues:
Check the GitHub Issues for similar problems
Join the Zilliz Community Discord for support
File a new issue with detailed information about your problem
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/stephen37/mcp-server-milvus'
If you have feedback or need assistance with the MCP directory API, please join our Discord server