A Model Context Protocol (MCP) server for Milvus vector database, providing comprehensive vector database operations.
- Complete Milvus Operations: Full lifecycle management of databases, collections, and indexes
- High-Performance Vector Search: Support for similarity search, hybrid search, and more retrieval methods
- Intelligent Session Management: Efficient connection pooling based on Ristretto cache
- Engineering Architecture: Modular design for easy extension and maintenance
- Middleware Support: Built-in logging, authentication, and other middleware
- Docker Support: Complete containerized deployment solution
- Type Safety: Go's strong type system ensures API safety
milvus_create_database- Create databasemilvus_list_databases- List all databasesmilvus_use_database- Switch database
milvus_create_collection- Create collectionmilvus_drop_collection- Drop collectionmilvus_list_collections- List collectionsmilvus_get_collection_info- Get collection informationmilvus_rename_collection- Rename collectionmilvus_load_collection- Load collection into memorymilvus_release_collection- Release collection from memory
milvus_create_index- Create indexmilvus_drop_index- Drop index
milvus_insert_data- Insert datamilvus_upsert- Insert or update datamilvus_delete_entities- Delete entitiesmilvus_query- Conditional querymilvus_vector_search- Vector similarity search
milvus_connector- Establish Milvus connection
- Go 1.24 or higher
- Running Milvus instance
git clone https://github.com/tailabs/mcp-milvus.git
cd mcp-milvus
make deps
make buildOr using Go directly:
git clone https://github.com/tailabs/mcp-milvus.git
cd mcp-milvus
go mod download
go build -o mcp-milvus ./cmd/mcp-milvus# Build image
docker build -t mcp-milvus .
# Run container
docker run -p 8080:8080 mcp-milvus- Start the server
# Using Makefile
make run
# Or directly
./build/mcp-milvus- Connect to Milvus
Use the
milvus_connectortool to establish connection:
{
"address": "localhost:19530",
"token": "username:password",
"db_name": "default"
}- Perform operations After connection is established, you can use other tools for database operations.
mcp-milvus/
βββ cmd/mcp-milvus/ # Main application entry
βββ internal/
β βββ middleware/ # Middleware (logging, auth, etc.)
β βββ registry/ # Tool registry
β βββ schema/ # Schema builder
β βββ session/ # Session management
β βββ tools/ # Milvus tool implementations
βββ Dockerfile # Docker build file
βββ go.mod # Go module definition
βββ README.md # Project documentation
LOG_LEVEL: Log level (debug/info/warn/error), default: infoPORT: Service port, default: 8080
Supports the following connection parameters:
address: Milvus service addresstoken: Authentication token (format: username:password)db_name: Database name
We welcome all forms of contributions! Please see CONTRIBUTING.md for details.
- Fork this repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Set up development environment (
make deps && make tools) - Make your changes and test (
make test && make lint) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Run make help to see all available commands:
make help # Show all available commands
make build # Build binary
make test # Run tests
make lint # Run linter
make fmt # Format code
make run # Build and run
make dev # Run with live reload
make docker # Build Docker image
make build-all # Build for all platforms
make release # Prepare release
make clean # Clean build artifactsThis project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions:
- Check Issues to see if similar issues exist
- Create a new Issue describing your problem
- Join discussions in Discussions
β If this project helps you, please give it a Star!