Milvus向量数据库MCP服务器

一个为Milvus向量数据库提供MCP协议支持的服务器,实现LLM应用与向量数据库的无缝集成,适用于AI增强开发环境和自定义工作流。

  • by stephen37
  • Python
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 stephen37/mcp-server-milvus

使用说明

Milvus的MCP服务器

模型上下文协议(MCP)是一种开放协议,可实现LLM应用程序与外部数据源和工具之间的无缝集成。无论您是在构建基于AI的IDE、增强聊天界面,还是创建自定义AI工作流程,MCP都提供了一种标准化的方式将LLM与所需的上下文连接起来。

此存储库包含一个MCP服务器,可访问 米尔维斯 矢量数据库功能。

先决条件

在使用此MCP服务器之前,请确保您已:

  • Python 3.10或更高版本
  • 跑步 米尔维斯 实例(本地或远程)
  • 紫外线 已安装(建议用于运行服务器)

用法

建议使用此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服务器可以与支持模型上下文协议的各种LLM应用程序一起使用:

  • 克劳德桌面:克劳德的Anthropic桌面应用程序
  • 光标:AI驱动的代码编辑器,在其Composer功能中支持MCP
  • 自定义MCP客户端:任何实现MCP客户端规范的应用程序

使用Claude Desktop

  1. 从以下位置安装Claude Desktophttps://claude.ai/download

  2. 打开您的Claude Desktop配置:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  3. 添加以下配置:

{
  "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"
      ]
    }
  }
}
  1. 重新启动克劳德桌面

使用游标

Cursor还支持MCP 通过Composer中的Agent功能使用工具。您可以通过两种方式将Milvus MCP服务器添加到Cursor:

选项1:使用光标设置UI

  1. 首选 Cursor Settings > Features > MCP

  2. 点击 + Add New MCP Server 按钮

  3. 填写表格:

    • 类型:选择 stdio (因为您正在运行命令)
    • 名字: milvus
    • 命令: /PATH/TO/uv --directory /path/to/mcp-server-milvus/src/mcp_server_milvus run server.py --milvus-uri http://127.0.0.1:19530

    ⚠️ 注:使用 127.0.0.1 而不是 localhost 以避免潜在的DNS解析问题。

选项2:使用项目特定配置(推荐)

创建一个 .cursor/mcp.json 项目根目录中的文件:

  1. 创建 .cursor 项目根目录中的目录:

    mkdir -p /path/to/your/project/.cursor
    
  2. 创建一个 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"
          ]
        }
      }
    }
    
  3. 重新启动光标或重新加载窗口

添加服务器后,您可能需要按MCP设置中的刷新按钮来填充工具列表。Composer Agent将在与您的查询相关时自动使用Milvus工具。

验证集成

要验证Cursor是否已成功与Milvus MCP服务器集成:

  1. 打开光标设置>功能>MCP
  2. 检查“Milvus”是否出现在MCP服务器列表中
  3. 验证是否列出了工具(例如,milvus_list_collections、milvus_vector_search等)
  4. 如果服务器已启用但显示错误,请检查下面的故障排除部分

可用工具

服务器提供以下工具:

搜索和查询操作

  • 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:筛选表达式(例如“年龄>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:数据库名称(默认为“默认”)

发展

要直接运行服务器,请执行以下操作:

uv run server.py --milvus-uri http://localhost:19530

例子

使用克劳德桌面

示例1:列出集合

What are the collections I have in my Milvus DB?

然后,Claude将使用MCP在我们的Milvus数据库中检查此信息。

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的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]

故障排除

常见问题

连接错误

如果您看到诸如“连接到Milvus服务器失败”之类的错误:

  1. 验证您的Milvus实例是否正在运行: docker ps (如果使用Docker)
  2. 检查配置中的URI是否正确
  3. 确保没有防火墙规则阻止连接
  4. 尝试使用 127.0.0.1 而不是 localhost 在URI中

身份验证问题

如果您看到身份验证错误:

  1. 验证您的 MILVUS_TOKEN 是正确的
  2. 检查您的Milvus实例是否需要身份验证
  3. 确保您对尝试执行的操作具有正确的权限

未找到工具

如果MCP工具未出现在克劳德桌面或光标中:

  1. 重新启动应用程序
  2. 检查服务器日志是否有任何错误
  3. 验证MCP服务器是否正常运行
  4. 按下MCP设置中的刷新按钮(光标)

获取帮助

如果您继续遇到问题:

  1. 检查 GitHub问题 对于类似的问题
  2. 加入 Zilliz社区不和 支持
  3. 提交一个新问题,其中包含有关您问题的详细信息