mcpField
M
Milvus

Milvus

本地服务
github.com/danchev数据库143 周前更新

关于 Milvus

Milvus MCP 服务将 Milvus 数据库操作提供给 LLM 应用,适用于需要检索和管理向量数据的开发者。它支持全文、向量与混合搜索,以及集合和数据管理。

主要功能

  1. 01全文、向量与混合搜索
  2. 02按条件查询集合
  3. 03创建和管理集合
  4. 04插入与删除数据
  5. 05通过 uvx 启动

适用场景

  1. 01在文档集合中查找文本
  2. 02按查询向量检索相似记录
  3. 03创建集合并写入数据

MCP 相关

该 MCP 服务向 MCP 客户端提供 Milvus 搜索、查询、集合管理及数据操作工具;支持 stdio 和 SSE 模式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"milvus-danchev": {
"command": "uvx",
"args": [
"mcp-server-milvus@latest"
],
"env": {
"MILVUS_URI": "<MILVUS_URI>",
"MILVUS_TOKEN": "<MILVUS_TOKEN>",
"MILVUS_DB": "<MILVUS_DB>"
}
}
}
}
启动命令uvx mcp-server-milvus@latest
需要配置的环境变量
MILVUS_URI
MILVUS_TOKEN密钥
MILVUS_DB

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimcp-server-milvus@latest

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

PyPI PyPI - Downloads PyPI - Monthly Downloads

Milvus 的 MCP 服务

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

此代码库包含一个 MCP 服务,可访问 Milvus 向量数据库功能。

注意: 此代码库是 https://github.com/zilliztech/mcp-server-milvus.git 的一个分支,进行了多项改进并新增了对 uvx 执行方式的支持,因此无需安装即可更轻松地运行。

MCP with Milvus

前提条件

使用此 MCP 服务之前,请确保您具备:

  • Python 3.10 或更高版本
  • 正在运行的 Milvus 实例(本地或远程)
  • 已安装 uv(建议用于运行服务)
  • 已安装 npx(用于使用 MCP Inspector 进行测试)

用法

建议使用 uvx 直接运行此 MCP 服务,无需安装。以下示例中,Claude Desktop 和 Cursor 都采用这种方式进行配置。

运行服务

您可以使用以下命令运行 Milvus 的 MCP 服务,并将 http://localhost:19530 替换为您的 Milvus 服务 URI:

uvx mcp-server-milvus --milvus-uri http://localhost:19530

或者,您可以在项目目录中使用 .env 文件设置环境变量,然后使用以下 uvx 命令运行服务:

# Create a .env file with your Milvus configuration
cat > .env <<EOF
MILVUS_URI=http://localhost:19530
MILVUS_TOKEN=root:Milvus
MILVUS_DB=default
EOF

# Run the server with the .env file
uvx --env-file .env mcp-server-milvus
运行模式

此服务支持两种运行模式:stdio(默认)和 SSE(服务器发送事件)。

Stdio 模式(默认)
  • 描述:通过标准输入/输出与客户端通信。如果未指定模式,则默认使用此模式。

  • 用法:

    uvx mcp-server-milvus@latest --milvus-uri http://localhost:19530
    
SSE 模式
  • 描述:使用 HTTP 服务器发送事件进行通信。此模式允许多个客户端通过 HTTP 连接,适用于基于 Web 的应用程序。

  • 用法:

    uvx mcp-server-milvus@latest --sse --milvus-uri http://localhost:19530
    
    • --sse:启用 SSE 模式。
  • 在 SSE 模式下调试:

    如果要在 SSE 模式下调试,请在启动 SSE 服务后输入以下命令:

    npx @modelcontextprotocol/inspector --transport sse --server-url http://localhost:8000/sse
    

    输出将类似于:

    % npx @modelcontextprotocol/inspector --transport sse --server-url http://localhost:8000/sse
    Starting MCP inspector...
    ⚙️ Proxy server listening on port 6277
    🔍 MCP Inspector is up and running at http://127.0.0.1:6274 🚀
    

    随后,您可以访问 http://127.0.0.1:6274 打开 MCP Inspector 进行测试。

支持的应用程序

此 MCP 服务可用于各种支持模型上下文协议的大模型应用程序:

  • Claude Desktop:Anthropic 为 Claude 开发的桌面应用程序
  • Cursor:支持 MCP 的 AI 驱动代码编辑器
  • 自定义 MCP 客户端:任何实现 MCP 客户端规范的应用程序

在 Claude Desktop 中使用

不同模式的配置
SSE 模式配置

按照以下步骤为 SSE 模式配置 Claude Desktop:

  1. 从 https://claude.ai/download 安装 Claude Desktop。
  2. 打开 Claude Desktop 配置文件:
    • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  3. 添加以下 SSE 模式配置:
{
  "mcpServers": {
    "milvus-sse": {
      "url": "http://your_sse_host:port/sse",
      "disabled": false,
      "autoApprove": []
    }
  }
}
  1. 重启 Claude Desktop 以应用更改。
Stdio 模式配置

按照以下步骤配置 stdio 模式:

  1. 从 https://claude.ai/download 安装 Claude Desktop。
  2. 打开 Claude Desktop 配置文件:
    • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  3. 添加以下 stdio 模式配置:
{
  "mcpServers": {
    "milvus": {
      "command": "uvx",
      "args": [
        "mcp-server-milvus@latest",
        "--milvus-uri",
        "http://localhost:19530"
      ]
    }
  }
}
  1. 重启 Claude Desktop 以应用更改。

在 Cursor 中使用

Cursor 也支持 MCP 工具。按照以下步骤,即可将 Milvus MCP 服务集成到 Cursor 中:

集成步骤
  1. 前往 Cursor Settings > Features > MCP

  2. 点击 + Add New MCP Server 按钮

  3. 填写表单:

    • 类型:选择 stdio(因为你要运行命令)
    • 名称:milvus
    • 命令:uvx mcp-server-milvus@latest --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": "uvx",
           "args": [
             "mcp-server-milvus@latest",
             "--milvus-uri",
             "http://127.0.0.1:19530"
           ]
        }
      }
    }
    
SSE 模式:
  1. 运行以下命令启动服务:

    uv run mcp-server-milvus --sse --milvus-uri http://your_sse_host
    

    注意:将 http://your_sse_host 替换为实际的 SSE 主机地址。

  2. 服务启动并运行后,使用以下内容覆盖 mcp.json 文件:

    {
        "mcpServers": {
          "milvus-sse": {
            "url": "http://your_sse_host:port/sse",
            "disabled": false,
            "autoApprove": []
          }
        }
    }
    
完成集成

完成上述步骤后,重启 Cursor 或重新加载窗口,以确保配置生效。

验证集成

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

  1. 打开 Cursor Settings > MCP
  2. 检查列表中是否显示“milvus”或“milvus-sse”(取决于你选择的模式)
  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:要包含在结果中的字段
      • filter_expr:过滤表达式
      • metric_type:距离度量方式(COSINE、L2、IP)(默认值:“COSINE”)
  • milvus_hybrid_search:对集合执行混合搜索

    • 参数:
      • collection_name:要搜索的集合名称
      • query_text:用于搜索的文本查询
      • text_field:用于文本搜索的字段名称
      • vector:文本查询的向量
      • vector_field:用于向量搜索的字段名称
      • limit:要返回的最大结果数
      • output_fields:要包含在结果中的字段
      • filter_expr:过滤表达式
  • milvus_query:使用过滤表达式查询集合

    • 参数:
      • collection_name:要查询的集合名称
      • filter_expr:过滤表达式(例如,'age > 20')
      • output_fields:要包含在结果中的字段
      • limit:要返回的最大结果数(默认值:10)
集合管理
  • milvus_list_collections:列出数据库中的所有集合

  • milvus_create_collection:使用指定的架构创建新集合

    • 参数:
      • collection_name:新集合的名称
      • collection_schema:集合架构定义
      • index_params:可选的索引参数
  • milvus_load_collection:将集合加载到内存中,以便进行搜索和查询

    • 参数:
      • collection_name:要加载的集合名称
      • replica_number:副本数量(默认值:1)
  • milvus_release_collection:将集合从内存中释放

    • 参数:
      • collection_name:要释放的集合名称
  • milvus_get_collection_info:列出特定集合的详细信息,例如架构、属性、集合 ID 和其他元数据。

    • 参数:
      • collection_name:要获取详细信息的集合名称
数据操作
  • milvus_insert_data:向集合中插入数据

    • 参数:
      • collection_name:集合名称
      • data:将字段名称映射到值列表的字典
  • milvus_delete_entities:根据筛选表达式从集合中删除实体

    • 参数:
      • collection_name:集合名称
      • filter_expr:用于选择要删除实体的筛选表达式

环境变量

  • MILVUS_URI:Milvus 服务 URI(可代替 --milvus-uri 设置)
  • MILVUS_TOKEN:可选的身份验证令牌
  • MILVUS_DB:数据库名称(默认为 "default")

开发

开发期间测试

要使用 MCP Inspector 在本地测试服务:

npx @modelcontextprotocol/inspector uvx mcp-server-milvus@latest

示例

使用 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.

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 中,你可以这样提问:

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.

Collection 'articles' has been created successfully with the following schema:
- title: string
- content: string
- vector: float vector[128]

故障排除

常见问题
连接错误

如果你看到类似“Failed to connect to Milvus server”的错误:

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

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

  1. 确认 MILVUS_TOKEN 正确
  2. 检查 Milvus 实例是否需要身份验证
  3. 确保你拥有执行所需操作的正确权限
找不到工具

如果 MCP 工具未显示在 Claude Desktop 或 Cursor 中:

  1. 重启应用程序
  2. 检查服务日志中是否有错误
  3. 确认 MCP 服务正在正常运行
  4. 按下 MCP 设置中的刷新按钮(适用于 Cursor)
获取帮助

如果问题仍然存在:

  1. 在 GitHub Issues 中查看是否有类似问题
  2. 加入 Zilliz Community Discord 获取支持
  3. 提交新问题,并详细说明遇到的问题

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。