MCP server for Milvus vector database operations including collection management, data insertion, indexing, and vector similarity search
This server has 14 tools but suffers from significant quality issues. While basic schemas are present for most tools, descriptions are sparse or generic, parameter documentation is incomplete, and output schemas are not documented. Tools 1-5 (milvus_tools.py) have minimal descriptions (15-30 chars) that fall below the 50-200 char optimal range. Tools 6-11 have slightly better descriptions but still lack detail about when/why to use them. Parameter descriptions are present but often trivial (e.g., 'Name of the collection' for collection_name). No tool documents its output schema or return structure. Tool #14 is defined in TypeScript (milvus-server.ts) but appears abandoned or duplicate. The server does not validate input constraints (e.g., vector dimensions, collection name formats) and provides no error recovery guidance. Naming is mostly sound (verb_noun pattern) but some tools have overlapping responsibilities (e.g., create_collection vs create_collection_with_doc_id; upload_document_ascii vs upload_document_openai).
Create a new Milvus collection.
Create a Milvus collection with 'text' and 'doc_id' metadata fields.
Create an index on a Milvus collection.
Extracts plain text from a file (PDF, DOCX, or TXT).
Check if Milvus is connected and healthy.
One-click tool: extract text from a file, embed, and store in Milvus.
Insert vectors into a Milvus collection.
Missing output schemas: No tool documents its return type, structure, or fields. LLMs cannot plan downstream calls or extract required data from responses.
Inadequate descriptions (under 50 chars): Tools like 'create_index', 'load_collection', 'health_check', 'insert_data' have descriptions under 30 characters.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 42 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 35 | - | v1 |
List all available Milvus collections.
Load a Milvus collection into memory.
Create a collection in Milvus.
Search Milvus for similar chunks and return a concatenated summary string.
Search Milvus collection with a query vector.
Upload a long document by splitting, embedding, and storing chunks with metadata.
Split, embed with OpenAI, and store a document in Milvus with metadata.
Overlapping tool responsibilities: create_collection and create_collection_with_doc_id both create collections. upload_document_ascii and upload_document_openai both upload documents but differ only in embedding provider. This creates confusion for LLM selection.
Incomplete parameter validation: Parameters like 'vectors' (insert_data), 'query_vector' (search) lack format specifications. Expected vector dimensionality? Floating point vs integer? Array length constraints?
Generic/trivial parameter descriptions: Many parameters have only bare names with minimal explanation (e.g., 'Name of the collection' for collection_name). Descriptions should clarify format, valid ranges, and usage context.
No error handling guidance: Tools do not document what errors they may return, how to recover, or which errors are retryable vs user-fixable. e.g., 'Failed to connect to Milvus' provides no recovery path.
Hardcoded connection parameters: milvus_tools.py connects to 'standalone:19530' at import time with no configurability. Server-side config should pass connection URI to tools, not hardcode it.
Tool #14 (milvus_create_collection) defined in TypeScript but the main server is Python. Appears to be duplicate or abandoned code path. Creates confusion about which tools are actually exposed.
insert_data parameter 'vectors' has no type constraint: Is it an array of floats? What dimension? What length limits? LLMs will guess, likely incorrectly.
No pagination support: list_collections returns all collections with no limit or offset. If a Milvus instance has thousands of collections, the response could blow the context window.