fbpx

利用 MCP 協議將 Agents 連接到 Elasticsearch

想像一下,如果只需要簡單地詢問:「顯示上個月所有超過 $500 的訂單」或「哪些產品獲得最多的 5 星評價?」就能即時獲得準確的答案,完全不需要編寫查詢語句。這該有多輕鬆?

模型上下文協議(MCP)能將對話式 AI 與您的資料庫及外部 API 連接,把複雜的請求轉換為自然對話。雖然現代的大型語言模型(LLMs)在理解語言方面表現出色,但當與現實世界系統整合時,它們的真正潛力才能得以發揮。MCP 拉近了它們之間的差距,讓資料互動更加直觀、高效。

在這篇文章中,我們將探討:

  • MCP 架構在後臺如何運作
  • MCP 伺服器連接 Elasticsearch 的優勢
  • 如何建立一個基於 Elasticsearch 的 MCP 伺服器

激動人心的時刻即將來臨!MCP 與 Elastic 堆疊的整合,將改變您與資訊互動的方式,讓複雜的查詢變得像日常對話一樣直觀。

關於模型上下文協議

模型上下文協議(MCP)由 Anthropic 開發,是一種開放標準,透過安全的雙向通道將 AI 模型連接到外部資料來源。它克服了 AI 的關鍵瓶頸,讓對話不中斷的同時,仍能即時存取外部系統。

MCP 架構

模型上下文協議架構是由兩個關鍵組件組成:

MCP 客戶端 – 請求資訊或代表使用者執行任務的 AI 助手和聊天機器人。

MCP 伺服器 – 檢索相關資訊或執行請求操作(例如,調用外部 API)的資料庫、搜尋引擎和 API。

MCP 伺服器向客戶端提供兩種主要功能:

資源 – 可以檢索並用作 LLM 互動上下文的結構化資料、文件和內容。這讓 AI 助手能夠從資料庫、搜尋索引或其他來源訪問相關資訊。

工具 – 可執行的功能,讓 LLM 能夠與外部系統互動、執行計算或進行現實世界的操作。這些工具擴展了 AI 的能力,不僅限於文本生成,還可以讓助手觸發工作流程、調用 API 或動態操作資料。

提示 – 可重複使用的提示模板和工作流程,用來標準化和共享常見的 LLM 互動。

取樣 – 透過客戶端請求 LLM 完成,以啟用複雜的代理行為,同時保持安全性和隱私。

MCP 伺服器 + Elasticsearch

傳統的檢索增強生成(RAG)系統會根據使用者查詢檢索文件,但 MCP 更進一步:讓 AI 代理能夠即時動態地構建和執行任務。使用者能夠提出自然語言問題,而且無需編寫任何查詢語句,便能即時獲得精確的答案!

MCP 是如何做到這一點的呢?

動態選擇工具 – 代理會根據使用者的意圖,智能地選擇透過 MCP 伺服器公開的正確工具。更智能的 LLM 通常能在根據上下文選擇適當參數的工具上表現更好。

雙向通訊 – 代理與資料來源之間可以流暢地交換資訊,並根據需要細化查詢(例如,先查找索引映射,再建立 Elasticsearch 查詢)。

協同運作多工具 – 工作流程可以同時運用來自多個 MCP 伺服器的工具來達成目標。這樣的協同作業可以讓多個工具一起工作,提升整體效能。

持續對話 – 代理會記住先前的互動,維持對話的連貫性,使得與 AI 的互動更加流暢、自然。

與 Elasticsearch 連接的 MCP 伺服器解鎖了強大的即時檢索架構。AI 代理能夠隨時探索、查詢和分析 Elasticsearch 資料,並且使用者可以透過簡單的聊天介面進行資料搜尋。

除了檢索資料外,MCP 還能夠執行其他操作。它與其他工具整合,觸發工作流程、進行自動化處理,並將結果反饋到分析系統中。透過將搜尋和執行分開,MCP 讓 AI 驅動的應用程式保持靈活、最新,並且能夠無縫整合到代理的工作流程中。

應用:與 Elasticsearch 資料對話的 MCP 伺服器

要透過 MCP 伺服器與 Elasticsearch 進行互動,我們至少需要以下功能:

• 檢索索引

• 獲取映射

• 使用 Elasticsearch 的查詢 DSL 執行搜尋

我們的伺服器是使用 TypeScript 編寫的,並且會使用官方的 MCP TypeScript SDK。對於設定,我們建議安裝 Claude Desktop 應用程式(免費版本即可),因為它內建了 MCP 客戶端。我們的 MCP 伺服器基本上是透過 MCP 工具公開了官方的 JavaScript Elasticsearch 客戶端。

const esClient = new Client({
    node: url,
    auth: {
      apiKey: apiKey,
    },
  }); const server = new McpServer({
    name: “elasticsearch-mcp-server”,
    version: “0.1.0”,
});

我們將使用以下 MCP 伺服器工具與 Elasticsearch 互動:

  • 列出索引(list_indices):這個工具會擷取所有可用的 Elasticsearch 索引,並提供索引名稱、健康狀態、文件數量等詳細資訊。
  • 取得映射(get_mappings):這個工具用來擷取指定 Elasticsearch 索引的欄位對應資訊,幫助使用者了解儲存文件的結構和資料類型。
  • 搜尋(search):這個工具透過指定的查詢 DSL 在 Elasticsearch 中執行搜尋。它會自動對文字欄位啟用高亮顯示,讓相關搜尋結果更容易辨識。

完整的 Elasticsearch MCP 伺服器實作可在 elastic/mcp-server-elasticsearch 存放庫中找到。

與您的索引對話

讓我們來看看如何設定 Elasticsearch MCP 伺服器,讓您可以直接用自然語言查詢資料,例如:「查找上個月所有超過 $500 的訂單。」

設定 Claude Desktop 應用程式

  1. 開啟 Claude Desktop 應用程式
  2. 前往 設定 > 開發者 > MCP 伺服器
  3. 點擊「編輯設定」,然後將以下設定新增到 claude_desktop_config.json

{
  “mcpServers”: {
    “Elasticsearch MCP Server”: {
      “command”: “npx”,
      “args”: [
        “-y”,
        “@elastic/mcp-server-elasticsearch”
      ],
      “env”: {
        “ES_URL”: “”,
        “ES_API_KEY”: “”
      }
    }
  }
}

初始化 Elasticsearch 索引

您可以使用我們的範例資料來填充「orders」索引,進行測試。這樣,您就能嘗試像「查找上個月所有超過 $500 的訂單」這類查詢。

開始使用

  1. Claude Desktop 應用程式中開啟一個新的對話
  2. MCP 伺服器會自動連線
  3. 開始詢問有關 Elasticsearch 資料的問題吧!

觀看這個示範(閱讀原文查看影片),看看如何用自然語言輕鬆查詢您的 Elasticsearch 資料!

如何運作?

當詢問「查找上個月所有超過 $500 的訂單」時,LLM 會識別出您的意圖是要在 Elasticsearch 索引中進行搜尋,並套用特定條件。為了執行有效的搜尋,代理會:

  1. 確定索引名稱:orders
  2. 瞭解 orders 索引的欄位對應(mapping)
  3. 建立與索引結構相容的 查詢 DSL,並執行搜尋請求

這樣的互動可以表示為:

總結

模型上下文協議(MCP) 強化了您與 Elasticsearch 資料的互動,讓您可以用自然語言對話來取代繁瑣的查詢語法。透過 MCP 將 AI 能力與您的資料串接,打造更直覺、高效的工作流程,並在整個互動過程中保持上下文。

Elasticsearch MCP 伺服器 已作為 npm 公開套件@elastic/mcp-server-elasticsearch)提供,讓開發者更輕鬆整合。只需簡單的設定,團隊就能開始探索資料、觸發工作流程,並透過對話獲取關鍵見解。

🔹 立即試用 Elasticsearch MCP 伺服器 👉 GitHub 連結,開始與資料進行對話吧!

Related Posts