在 Google MCP Toolbox for Databases 中引入 Elasticsearch 支持

作者:来自 Elastic Enrico Zimuel 及 Laurent Saint-Félix

探索 Elasticsearch 支持现已在 Google MCP Toolbox for Databases 中可用,并利用 ES|QL 工具安全地将你的索引与任何 MCP 客户端集成。

动手体验 Elasticsearch:深入了解我们的示例 notebooks,开始免费的 cloud 试用,或立即在你的本地机器上试用 Elastic。


在本文中,我们将介绍如何将 Google MCP Toolbox 与 Elasticsearch 一起使用,构建一个用于从 Elasticsearch 索引中提取信息的简单工具。

我们最近为 Google MCP Toolbox for Databases 开源项目做出了贡献,新增了对 Elasticsearch 作为数据库的支持。

有了这个新功能,你现在可以使用 Google MCP Toolbox 连接到 Elasticsearch,并直接与你的数据进行 “对话”。

Elasticsearch

我们需要运行一个 Elasticsearch 实例。你可以在 Elastic Cloud 上激活一个免费试用,或者使用 start-local 脚本在本地安装:

curl -fsSL https://elastic.co/start-local | sh

这将会在你的电脑上安装 Elasticsearch 和 Kibana,并生成一个 API key,用于配置 Google MCP Toolbox。

API key 将作为前一个命令的输出显示,并存储在 elastic-start-local 文件夹中的 .env 文件里。

安装示例数据集

安装完成后,你可以使用用户名 elastic 和由 start-local 脚本生成的密码登录 Kibana(存储在 .env 文件中)。

你可以安装 Kibana 中提供的 eCommerce orders 示例数据集。它包含一个名为 kibana_sample_data_ecommerce 的索引,其中包含来自一个电商网站的 4,675 个订单的信息。对于每个订单,我们有以下信息:

  • 客户信息(姓名、ID、出生日期、邮箱等)
  • 订单日期
  • 订单 ID
  • 产品(所有产品的列表,包括价格、数量、ID、类别、折扣等)
  • SKU
  • 总价(未含税、含税)
  • 总数量
  • 地理信息(城市、国家、大洲、位置、地区)

要安装示例数据,请在 Kibana 中打开 Integrations 页面(在顶部搜索栏中搜索 “Integration”),并安装 “Sample Data”。更多细节请参考这里的文档:https://www.elastic.co/docs/explore-analyze/#gs-get-data-into-kibana。

本文的目标是展示配置 Google MCP Toolbox 连接到 Elasticsearch,并使用自然语言与 kibana_sample_data_ecommerce 索引交互是多么简单。

Google MCP Toolbox

Google MCP Toolbox 是一个开源的 MCP server,旨在让应用和 AI agents 能够安全、高效地与 databases 交互。该项目之前名为 “GenAI Toolbox for Databases”,在采用了对 Model Context Protocol(MCP)的完全兼容之后进行了重命名。它的目标是消除 agents 连接 databases 时传统上所需的繁重工作,通过在后台处理 connection pooling、authentication、observability 以及其他运维相关问题。

从核心来看,Toolbox 允许开发者定义可复用的高层 tools,用于封装 database 交互。这些 tools 随后可以被任何兼容 MCP 的 client(例如 AI agent)调用,而无需 client 实现底层的 SQL queries 或管理 database connections。这种方式大幅减少了构建具备 database 能力的 agents 所需的样板代码,使得只需几行应用逻辑就能集成高级的数据操作。一旦定义了一个 tool,它就可以在多个 agents、frameworks 或 languages 之间共享(Figure 1)。

图 1:Google MCP Toolbox 的整体架构

如何安装 MCP Toolbox

你可以使用以下命令在 Linux 上安装 MCP Toolbox server:

export VERSION=0.21.0
curl -L -o toolbox https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
chmod +x toolbox

如果你想在 macOS 或 Windows 上安装,可以按照这里详细说明的说明进行操作。

为 Elasticsearch 配置 Toolbox

要为 Elasticsearch 配置 MCP Toolbox,我们需要创建一个 tools.yaml 文件,如下所示:

sources:
  my-cluster:
    kind: elasticsearch
    addresses:
      - http://localhost:9200
    apikey: <insert-here-api-key>

tools:
  customer-orders:
    kind: elasticsearch-esql
    source: my-cluster
    description: Get the orders made by a customer identified by name.
    query: |
    	FROM kibana_sample_data_ecommerce | WHERE MATCH(customer_full_name, ?name, {"operator": "AND"})
    parameters:
      - name: name
        type: string
        description: The customer name.

toolsets:
  elasticsearch-tools:
    - customer-orders

你需要将 <insert-here-api-key> 替换为有效的 Elasticsearch API key。如果你使用 start-local 在本地运行 Elasticsearch,可以在 start-local 生成的 .env 文件中找到该 API key,变量名为 ES_LOCAL_API_KEY。如果你使用 Elastic Cloud,可以按照这里描述的步骤生成 API key。

前面的 tools 包含以下用于 Elasticsearch 的 ES|QL 查询:

FROM kibana_sample_data_ecommerce | WHERE MATCH(customer_full_name, ?name)

如果你不熟悉 ES|QL,它是由 Elastic 开发的一种查询语言,类似于 SQL,可用于搜索一个或多个索引。你可以在官方文档中了解更多关于 ES|QL 的信息。

上面的查询会搜索存储在 kibana_sample_data_ecommerce 索引中、包含指定客户姓名的所有订单,使用 ?name 参数(问号表示参数)。

客户姓名在之前的 YAML 配置中定义,类型为 string,描述为 “The customer name”。

该工具可用于回答有关客户订单的问题——例如:How many orders did customer Foo place in October 2025?

工具及其参数的描述对于从用户的自然语言请求中提取相关信息至关重要。此提取通过 Large Language Model (LLM) 的 function-calling 功能来执行。在实际操作中,LLM 可以确定需要执行哪个函数(工具)以获取所需信息,以及该函数的适当参数。

关于 function calls 的更多信息,我们建议阅读 Ashish Tiwari 撰写的 OpenAI function calling with Elasticsearch 文章。

运行 Toolbox server

你可以使用前面的 tools.yaml 文件通过以下命令运行 MCP Toolbox:

./toolbox --tools-file tools.yaml --ui

–ui 参数会在 http://127.0.0.1:5000/ui 运行一个 web 应用(图 2)。

图 2:MCP Toolbox UI

你可以选择 Tools > customer-orders,并在参数 name 中输入客户姓名(例如 Gwen Sanders),然后点击 Run Tool 按钮。你应该会看到如图 3 所示的 JSON 响应。

图 3:使用 name 值 “Gwen” 执行 customer-orders 工具的结果

设置完成后,MCP Toolbox 可以执行 customer-orders 工具,与 Elasticsearch 通信并运行 ES|QL 查询。

使用 MCP Toolbox 与 Gemini CLI

我们可以使用任何 MCP client 与 MCP Toolbox for Databases 进行通信。例如,我们可以使用 Gemini CLI,这是一款用于使用 Gemini 的命令行工具。你可以按照这里的说明安装 Gemini CLI。

Gemini CLI 提供了一个为 MCP Toolbox 预配置的扩展,位于 gemini-cli-extensions/mcp-toolbox。你可以通过运行以下命令安装此扩展:

gemini extensions install https://github.com/gemini-cli-extensions/mcp-toolbox

安装完成后,你需要进入存放 MCP Toolbox tools.yaml 配置文件的目录,并按如下方式执行 Gemini CLI(此步骤是为了让 Gemini CLI 自动配置 MCP Toolbox):

gemini

你应该会看到如图 4 所示的输出:

图 4:Gemini CLI 终端

你可以使用以下命令检查 MCP Toolbox 是否已连接:

/mcp list

你应该会看到 mcp_toolbox 及其列出的 customer-orders 工具(图 5)。

如果 MCP Toolbox 已连接到 Gemini CLI,我们现在可以尝试提出一些问题,例如:“Give me the orders for the customer Gwen Sanders.” 然后 Gemini CLI 会请求执行来自 mcp_toolbox server 的 customer-orders 工具的权限(见图 6)。

图 6:执行 customer-orders 工具的权限请求

确认后,Gemini CLI 会向 MCP Toolbox 执行请求,得到 JSON 响应作为结果,并用它来格式化响应(图 7)。

图 7:来自 MCP Toolbox 的响应以及 Gemini CLI 的最终响应

来自 Gemini CLI 的响应会显示 Gwen Sanders 只下了一笔包含 2 个产品的订单,总价为 132 euros。

MCP Toolbox SDKs

Google MCP Toolbox 还提供了 SDK,可从用 Go、Python 和 Javascript 编写的程序访问所有功能。

例如,Python SDK 可在 Github 上的以下页面获取:https://github.com/googleapis/mcp-toolbox-sdk-python。

我们需要创建一个简单的 agent 来连接 MCP Toolbox。需要安装以下包:

pip install toolbox-core
pip install google-adk

并使用以下命令创建一个新的 agent 项目:

adk create my_agent

这将创建一个名为 my_agent 的新目录,其中包含一个文件 agent.py。

使用以下内容更新 my_agent/agent.py 以连接 Toolbox:

from google.adk import Agent
from google.adk.apps import App
from toolbox_core import ToolboxSyncClient

client = ToolboxSyncClient("http://127.0.0.1:5000")

root_agent = Agent(
    name='root_agent',
    model='gemini-2.5-flash',
    instruction="You are a helpful AI assistant designed to search information about a dataset of ecommerce orders.",
    tools=client.load_toolset(),
)

app = App(root_agent=root_agent, name="my_agent")

创建一个包含你的 Google API key 的 .env 文件:

echo 'GOOGLE_API_KEY="YOUR_API_KEY"' > my_agent/.env

最后,我们可以运行 agent 并观察结果。要执行 agent,你可以运行以下命令:

adk run my_agent

或者,你可以通过 web 界面来运行它:

adk web --port 8000

在这两种情况下,你都可以使用问答界面与 MCP Toolbox 交互。例如,你可以提出之前的问题:Give me the orders of the customer Gwen Sanders。

有关不同 SDK 的更多信息,你可以参考此文档页面

结论

在本文中,我们演示了 Google MCP Toolbox for Databases 的 Elasticsearch 集成。通过一个简单的 YAML 配置文件,我们可以定义一组工具,将自然语言问题转换为使用 ES|QL 语言的 Elasticsearch 查询。

我们展示了如何与 kibana_sample_data_ecommerce 数据集交互,该数据集包含来自一个电商网站的订单。使用这个配置文件,我们只需运行 MCP Toolbox server,就可以从任何 MCP client 连接到它。

最后,我们演示了如何使用 Gemini CLI 作为客户端连接到 MCP Toolbox for Databases,并查询存储在 Elasticsearch 中的电商数据。我们执行了一个自然语言查询,以检索特定客户(通过姓名标识)的订单信息。

随着 MCP 生态系统的不断发展,这种模式——轻量级工具定义,依托安全、生产就绪的基础设施——为构建越来越强大、具备数据感知能力的 agents 提供了新的机会,且几乎无需额外工作。无论你是在本地使用 Elastic 的示例数据集进行实验,还是将搜索功能集成到更大的应用中,MCP Toolbox 都为使用自然语言与 Elasticsearch 数据交互提供了可靠且可扩展的基础。

有关 agentic AI 应用开发的更多信息,你可以阅读 Anish Mathur 和 Dana Juratoni 撰写的 使用 Elasticsearch 构建 AI Agentic 工作流程 文章。

有关 Google MCP Toolbox 的更多信息,你可以访问 https://googleapis.github.io/genai-toolbox/getting-started/introduction/。

原文:https://www.elastic.co/search-labs/blog/google-mcp-toolbox-elasticsearch-support

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值