MCP Server for Milvus について
MCP Server for Milvus は、Milvus ベクトルデータベースの操作を MCP 対応 LLM アプリケーションに公開します。検索、データやコレクションの操作、インデックス管理に対応します。
主な機能
- 01全文検索とベクトル検索
- 02ハイブリッド検索と複数ベクトル検索
- 03エンティティのクエリと件数取得
- 04コレクションとインデックスの管理
- 05データの挿入、更新、削除
活用シーン
- 01MCP 対応アプリから Milvus の文書を検索
- 02MCP クライアント経由でコレクションとインデックスを作成
- 03Milvus のレコードを挿入または更新
- 04メタデータ条件と組み合わせたベクトル検索
MCP 対応
Milvus の検索、クエリ、コレクション、データ、インデックス操作をツールとして MCP クライアントに提供します。README では Claude Desktop、Cursor、カスタム MCP クライアントでの利用を説明しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Milvus 用 MCP サーバー
Model Context Protocol(MCP)は、LLM アプリケーションと外部のデータソースおよびツールをシームレスに統合できるオープンプロトコルです。AI 搭載 IDE の構築、チャットインターフェースの強化、カスタム AI ワークフローの作成など、MCP は LLM を必要なコンテキストに接続する標準化された方法を提供します。
このリポジトリには、Milvus ベクトルデータベースの機能にアクセスできる MCP サーバーが含まれています。
前提条件
この MCP サーバーを使用する前に、以下を用意してください。
使用方法
この MCP サーバーの推奨される使用方法は、インストールせずに uv で直接実行することです。以下の例では、Claude Desktop と Cursor の両方をこの方法で使用するように設定しています。
リポジトリをクローンする場合:
git clone https://github.com/stephen37/mcp-server-milvus.git
cd mcp-server-milvus
その後、サーバーを直接実行できます。
uv run src/mcp_server_milvus/server.py --milvus-uri http://localhost:19530
対応アプリケーション
この MCP サーバーは、Model Context Protocol に対応するさまざまな LLM アプリケーションで使用できます。
- Claude Desktop:Claude 用の Anthropic のデスクトップアプリケーション
- Cursor:Composer 機能で MCP に対応する AI 搭載コードエディター
- カスタム MCP クライアント:MCP クライアント仕様を実装するあらゆるアプリケーション
Claude Desktop での使用方法
-
https://claude.ai/download から Claude Desktop をインストールします
-
Claude Desktop の設定を開きます。
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- macOS:
-
以下の設定を追加します。
{
"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"
]
}
}
}
- Claude Desktop を再起動します
Cursor での使用方法
Cursor は Composer の Agent 機能を通じて MCP ツールにも対応しています。次の 2 つの方法で、Milvus MCP サーバーを Cursor に追加できます。
方法 1:Cursor の設定 UI を使用する
-
Cursor Settings>Features>MCPに移動します -
+ Add New MCP Serverボタンをクリックします -
フォームに入力します。
- Type:
stdioを選択します(コマンドを実行するため) - Name:
milvus - Command:
/PATH/TO/uv --directory /path/to/mcp-server-milvus/src/mcp_server_milvus run server.py --milvus-uri http://127.0.0.1:19530
⚠️ 注:DNS 解決に関する問題を避けるため、
localhostではなく127.0.0.1を使用してください。 - Type:
方法 2:プロジェクト固有の設定を使用する(推奨)
プロジェクトのルートに .cursor/mcp.json ファイルを作成します。
-
プロジェクトのルートに
.cursorディレクトリを作成します。mkdir -p /path/to/your/project/.cursor -
以下の内容で
mcp.jsonファイルを作成します。{ "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" ] } } } -
Cursor を再起動するか、ウィンドウを再読み込みします
サーバーを追加した後、ツールの一覧を表示するには、MCP 設定の更新ボタンを押す必要がある場合があります。Composer Agent は、クエリに関連する場合に Milvus ツールを自動的に使用します。
統合の確認
Cursor が Milvus MCP サーバーと正常に統合されたことを確認するには、次の手順を実行します。
- Cursor Settings > Features > MCP を開きます
- MCP サーバーの一覧に「Milvus」が表示されていることを確認します
- ツールが一覧に表示されていることを確認します(例:milvus_list_collections、milvus_vector_search など)
- サーバーが有効になっていてもエラーが表示される場合は、以下のトラブルシューティングのセクションを確認してください
利用可能なツール
サーバーでは、次のツールを利用できます。
検索およびクエリ操作
-
milvus-text-search: 全文検索を使用してドキュメントを検索します- パラメーター:
collection_name: 検索するコレクション名query_text: 検索するテキストlimit: 最大結果数(デフォルト:5)output_fields: 結果に含めるフィールドdrop_ratio: 無視する低頻度語の割合(0.0~1.0)
- パラメーター:
-
milvus-vector-search: コレクションに対してベクトル類似検索を実行します- パラメーター:
collection_name: 検索するコレクション名vector: クエリベクトルvector_field: 検索対象のベクトルを含むフィールド(デフォルト:"vector")limit: 最大結果数(デフォルト:5)output_fields: 結果に含めるフィールドmetric_type: 距離メトリック(COSINE、L2、IP)(デフォルト:"COSINE")filter_expr: 任意のフィルター式
- パラメーター:
-
milvus-hybrid-search: ベクトル類似度検索と属性フィルタリングを組み合わせたハイブリッド検索を実行します- パラメーター:
collection_name: 検索するコレクション名vector: クエリベクトルvector_field: 検索対象のベクトルを含むフィールド(デフォルト:"vector")filter_expr: メタデータのフィルター式limit: 最大結果数(デフォルト:5)output_fields: 結果に含めるフィールドmetric_type: 距離メトリック(COSINE、L2、IP)(デフォルト:"COSINE")
- パラメーター:
-
milvus-multi-vector-search: 複数のクエリベクトルを使用してベクトル類似検索を実行します- パラメーター:
collection_name: 検索するコレクション名vectors: クエリベクトルのリストvector_field: 検索対象のベクトルを含むフィールド(デフォルト:"vector")limit: クエリごとの最大結果数(デフォルト:5)output_fields: 結果に含めるフィールドmetric_type: 距離メトリック(COSINE、L2、IP)(デフォルト:"COSINE")filter_expr: 任意のフィルター式
- パラメーター:
-
milvus-query: フィルター式を使用してコレクションをクエリします- パラメーター:
collection_name: クエリ対象のコレクション名filter_expr: フィルター式(例:'age > 20')output_fields: 結果に含めるフィールドlimit: 最大結果数(デフォルト:10)
- パラメーター:
-
milvus-count: コレクション内のエンティティ数をカウントします- パラメーター:
collection_name: コレクション名filter_expr: 任意のフィルター式
- パラメーター:
コレクション管理
-
milvus-list-collections: データベース内のすべてのコレクションを一覧表示します -
milvus-collection-info: コレクションの詳細情報を取得します- パラメーター:
collection_name: コレクション名
- パラメーター:
-
milvus-get-collection-stats: コレクションの統計情報を取得します- パラメーター:
collection_name: コレクション名
- パラメーター:
-
milvus-create-collection: 指定したスキーマで新しいコレクションを作成します- パラメーター:
collection_name: 新しいコレクションの名前schema: コレクションのスキーマ定義index_params: 任意のインデックスパラメーター
- パラメーター:
-
milvus-load-collection: 検索およびクエリ用にコレクションをメモリに読み込みます- パラメーター:
collection_name: 読み込むコレクション名replica_number: レプリカ数(デフォルト:1)
- パラメーター:
-
milvus-release-collection: コレクションをメモリから解放します- パラメーター:
collection_name: 解放するコレクション名
- パラメーター:
-
milvus-get-query-segment-info: クエリセグメントに関する情報を取得します- パラメーター:
collection_name: コレクション名
- パラメーター:
-
milvus-get-collection-loading-progress: コレクションの読み込み進捗を取得します- パラメーター:
collection_name: コレクション名
- パラメーター:
データ操作
-
milvus-insert-data:コレクションにデータを挿入します- パラメーター:
collection_name:コレクション名data:フィールド名を値のリストに対応付ける辞書
- パラメーター:
-
milvus-bulk-insert:パフォーマンスを向上させるため、データをバッチ単位で挿入します- パラメーター:
collection_name:コレクション名data:フィールド名を値のリストに対応付ける辞書batch_size:バッチごとのレコード数(デフォルト:1000)
- パラメーター:
-
milvus-upsert-data:コレクションにデータをアップサートします(存在しない場合は挿入し、存在する場合は更新します)- パラメーター:
collection_name:コレクション名data:フィールド名を値のリストに対応付ける辞書
- パラメーター:
-
milvus-delete-entities:フィルター式に基づいて、コレクションからエンティティを削除します- パラメーター:
collection_name:コレクション名filter_expr:削除するエンティティを選択するためのフィルター式
- パラメーター:
-
milvus-create-dynamic-field:既存のコレクションに動的フィールドを追加します- パラメーター:
collection_name:コレクション名field_name:新しいフィールドの名前data_type:フィールドのデータ型description:任意の説明
- パラメーター:
インデックス管理
-
milvus-create-index:ベクトルフィールドにインデックスを作成します- パラメーター:
collection_name:コレクション名field_name:インデックスを作成するフィールドindex_type:インデックスの種類(IVF_FLAT、HNSW など)(デフォルト:"IVF_FLAT")metric_type:距離尺度(COSINE、L2、IP)(デフォルト:"COSINE")params:追加のインデックスパラメーター
- パラメーター:
-
milvus-get-index-info:コレクション内のインデックスに関する情報を取得します- パラメーター:
collection_name:コレクション名field_name:インデックス情報を取得する特定のフィールド(任意)
- パラメーター:
環境変数
MILVUS_URI:Milvus サーバー URI(--milvus-uriの代わりに設定できます)MILVUS_TOKEN:任意の認証トークンMILVUS_DB:データベース名(デフォルトは "default")
開発
サーバーを直接実行するには:
uv run server.py --milvus-uri http://localhost:19530
使用例
Claude Desktop の使用
例 1:コレクションの一覧表示
What are the collections I have in my Milvus DB?
Claude は MCP を使用して、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_demo
例 2:ドキュメントの検索
Find documents in my text_collection that mention "machine learning"
Claude は Milvus の全文検索機能を使用して、関連するドキュメントを検索します:
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]
Cursor の使用
例:コレクションの作成
Cursor の Composer で、次のように依頼できます:
Create a new collection called 'articles' in Milvus with fields for title (string), content (string), and a vector field (128 dimensions)
Cursor は MCP サーバーを使用して、この操作を実行します:
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]
トラブルシューティング
よくある問題
接続エラー
「Failed to connect to Milvus server」のようなエラーが表示される場合:
- Milvus インスタンスが実行中であることを確認します。Docker を使用している場合は、
docker psを実行します - 設定内の URI が正しいことを確認します
- 接続をブロックするファイアウォールルールがないことを確認します
- URI の
localhostを127.0.0.1に置き換えてみます
認証の問題
認証エラーが表示される場合:
MILVUS_TOKENが正しいことを確認します- Milvus インスタンスで認証が必要かどうかを確認します
- 実行しようとしている操作に必要な権限があることを確認します
ツールが見つからない
MCP ツールが Claude Desktop または Cursor に表示されない場合:
- アプリケーションを再起動します
- サーバーログにエラーがないか確認します
- MCP サーバーが正しく実行されていることを確認します
- MCP 設定の更新ボタンを押します(Cursor の場合)
ヘルプの利用
問題が解決しない場合:
- 類似の問題がないか、GitHub の Issue を確認します
- サポートを受けるには、Zilliz Community Discord に参加します
- 問題の詳細を記載して、新しい Issue を作成します
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。