milvus_text_searchLABSCO SUMMARY
Enough of Milvus to build a collection and interrogate it, not just query one.
Most database servers stop at read. This one creates collections, loads and releases them from memory, inserts data and deletes by filter, so a whole retrieval experiment fits in one conversation. Text similarity search is the exception worth noting: it needs Milvus 2.6.0 or above with an embedding function configured on the server.
What it is
The Milvus project's own MCP server. It talks to a running Milvus instance, local or remote, and exposes both the search surface and enough collection management to build and load one.
What you get
- Full-text search over a collection, with a drop-ratio for ignoring low-frequency terms
- Vector similarity search with a choice of metric, output fields, filter expression and range bounds
- Hybrid search combining a text query and a vector in one call, with separate sparse and dense range controls
- Filter-expression queries against a collection, without any vector at all
- Collection management: list, create with a quick setup or a full field schema, load into memory, release, and read the schema and metadata back
- Inserting rows and deleting entities by filter expression
Requirements
Python 3.10 or higher, uv, and a running Milvus instance you can reach. The server is launched with uv run against server.py and a --milvus-uri, or configured through MILVUS_URI, MILVUS_TOKEN and MILVUS_DB in a .env - which takes priority over the command line. Transport is stdio by default; --sse or --streamable-http with --port 8000 serves it over HTTP instead.
Setup effort
Build from source — git clone https://github.com/zilliztech/mcp-server-milvus.git
USE CASES
Finding out what is in a database you inherited
List the collections, then read one collection's schema, properties and metadata before querying anything.
Comparing retrieval strategies on the same question
Run the query as full text, as a vector search, then as a hybrid of both, and read the differences in what comes back.
Standing up a collection to test an idea
Create it with a field schema and index parameters, load it into memory, insert the rows, and release it when done.
Cleaning out rows that match a rule
Write the filter expression, check what it selects with a query first, then delete the entities it matches.
12 tools
Listed in project docs. Your client may show a different list.
milvus_vector_searchmilvus_hybrid_searchmilvus_text_similarity_searchmilvus_querymilvus_list_collectionsmilvus_create_collectionmilvus_load_collectionmilvus_release_collectionmilvus_get_collection_infomilvus_insert_datamilvus_delete_entitiesBEFORE YOU INSTALL
What to know first
Tools you get
12 tools named in the project's documentation.
Requires
- Python 3.10 or later
- uv
- A running Milvus instance (local or remote) the server can reach
INSTALLATION
Connect your client
This one is built from source rather than installed with a single command.
Server setup
git clone https://github.com/zilliztech/mcp-server-milvus.git
cd mcp-server-milvusAdd one of the configurations below to your client — <YOUR_PATH_TO_MCP_SERVER_MILVUS> is the folder the clone created, and --milvus-uri points at your running Milvus instance (http://localhost:19530 for a local one)
MCP Clients
Claude Desktop — stdio
{
"mcpServers": {
"milvus": {
"command": "<YOUR_PATH_TO_UV>",
"args": [
"--directory",
"<YOUR_PATH_TO_MCP_SERVER_MILVUS>/src/mcp_server_milvus",
"run",
"server.py",
"--milvus-uri",
"http://localhost:19530"
]
}
}
}<YOUR_PATH_TO_UV> is the full path to your uv binary, and <YOUR_PATH_TO_MCP_SERVER_MILVUS> is the folder the clone created. --milvus-uri is your Milvus instance.
Cursor — SSE
Start the server in SSE mode from the clone first: uv run src/mcp_server_milvus/server.py --sse --milvus-uri http://localhost:19530 --port 8000 — the address in the block is where it listens (localhost:8000 on the same machine).
{
"mcpServers": {
"milvus-sse": {
"url": "http://<YOUR_SSE_HOST>:port/sse",
"disabled": false,
"autoApprove": []
}
}
}Cursor — HTTP
Start the server in Streamable HTTP mode from the clone first: uv run src/mcp_server_milvus/server.py --streamable-http --milvus-uri http://localhost:19530 --port 8000 — the address in the block is where it listens (localhost:8000 on the same machine).
{
"mcpServers": {
"milvus-streamable-http": {
"url": "http://<YOUR_HOST>:port/mcp",
"disabled": false,
"autoApprove": []
}
}
}Cursor — stdio
{
"mcpServers": {
"milvus": {
"command": "<YOUR_PATH_TO_UV>",
"args": [
"--directory",
"<YOUR_PATH_TO_MCP_SERVER_MILVUS>/src/mcp_server_milvus",
"run",
"server.py",
"--milvus-uri",
"http://127.0.0.1:19530"
]
}
}
}<YOUR_PATH_TO_UV> is the full path to your uv binary, and <YOUR_PATH_TO_MCP_SERVER_MILVUS> is the folder the clone created. --milvus-uri is your Milvus instance.