將 agents 連接到 Elasticsearch 使用模型上下文協議 - docker

我們在之前的文章 “將 agents 連接到 Elasticsearch 使用模型上下文協議” 及 “使用 MCP 將代理連接到 Elasticsearch 并對索引進行查詢” 詳述了如何使用 Elasticsearch MCP server 來和我們的 Elasticsearch 進行對話。細心的開發者可能已經注意到我們的 Elasticsearch MCP server 已經重寫了,而且他的運行方式也有所改變。請參考鏈接?https://github.com/elastic/mcp-server-elasticsearch。在今天的文章里,我來詳述如何一步一步地安裝 Elasticsearch MCP server,并展示如何和 Elasticsearch 進行對話。

安裝

Elasticsearch 及 Kibana

如果你還沒有安裝好你自己的 Elasticsearch 及 Kibana,那么請參考如下的文章來進行安裝:

  • 如何在 Linux,MacOS 及 Windows 上進行安裝 Elasticsearch

  • Kibana:如何在 Linux,MacOS 及 Windows 上安裝 Elastic 棧中的 Kibana

在安裝的時候,請參考 Elastic Stack 8.x/9.x 的安裝指南來進行。在本次安裝中,我將使用 Elastic Stack 9.1.2?來進行展示。

首次安裝 Elasticsearch 的時候,我們可以看到如下的畫面:

我們按照上面的鏈接把 Elasticsearch 及 Kibana 安裝好。

?獲得 Elasticsearch API key

按照如下的步驟獲得 API key:

點擊上面的拷貝圖標。我們把得到的 API key 保存好,供下面進行使用。

安裝 Claude Desktop

我們可以在地址?App unavailable \ Anthropic?下載并按照 Claude Desktop。由于一些原因,我們需要自己來注冊一個賬號。

安裝 MCP 服務器

我們參考連接 mcp-server-elasticsearch?來進行安裝。通過 Model Context Protocol (MCP),你可以直接從任何 MCP 客戶端(例如 Claude Desktop)連接到你的 Elasticsearch 數據。這個服務器使用 Model Context Protocol (MCP) 將智能代理連接到你的 Elasticsearch 數據,使你能夠通過自然語言對話與 Elasticsearch 索引進行交互。

Elasticsearch MCP Server

可用的工具

  • list_indices:列出所有可用的 Elasticsearch 索引
  • get_mappings:獲取指定 Elasticsearch 索引的字段映射
  • search:使用提供的查詢 DSL 執行一次 Elasticsearch 搜索
  • get_shards:獲取所有或指定索引的分片信息

可實現的查詢

  • "What indices do I have in my Elasticsearch cluster?"
  • "Show me the field mappings for the 'products' index."
  • "Find all orders over $500 from last month."
  • "Which products received the most 5-star reviews?"

工作原理

  • MCP Client 分析你的請求,并確定需要執行哪些 Elasticsearch 操作。
  • MCP Server 執行這些操作(列出索引、獲取映射、執行搜索)。
  • MCP Client 處理結果,并以用戶友好的格式呈現。

安裝步驟

注意:

0.3.1 及更早版本是通過 npm 安裝的。這些版本已被棄用且不再受支持。以下說明僅適用于 0.4.0 及更高版本。

要查看 0.3.1 及更早版本的說明,請參閱 v0.3.1 的 README。

在本博客中,我們將在本地部署 MCP 服務器。我們查看頁面?https://github.com/elastic/mcp-server-elasticsearch。這個 MCP 服務器作為一個 Docker 鏡像提供,地址是 docker.elastic.co/mcp/elasticsearch,支持 MCP 的 stdio、SSE 和 streamable-HTTP 協議。它的安裝也非常直接。在新的發布中,它使用 docker 來進行安裝。運行這個容器而不帶任何參數會輸出一條用法信息:

docker run docker.elastic.co/mcp/elasticsearch
Usage: elasticsearch-mcp-server <COMMAND>Commands:stdio  Start a stdio serverhttp   Start a streamable-HTTP server with optional SSE supporthelp   Print this message or the help of the given subcommand(s)Options:-h, --help     Print help-V, --version  Print version

使用 stdio 協議

MCP 服務器需要設置環境變量:

  • ES_URL: 你的 Elasticsearch 集群的 URL

  • 身份驗證可使用 API key 或基本認證:

    • API key: ES_API_KEY

    • 基本認證: ES_USERNAMEES_PASSWORD

  • 可選: ES_SSL_SKIP_VERIFY 設置為 true 時,會在連接 Elasticsearch 時跳過 SSL/TLS 證書驗證。提供自定義證書的功能將在后續版本中加入。

MCP 服務器在 stdio 模式下通過以下命令啟動:

docker run -i --rm -e ES_URL -e ES_API_KEY docker.elastic.co/mcp/elasticsearch stdio

針對我們運行在 https://localhost:9200 的 Elasticsearch,我們使用如下的命令來運行:

ES_URL=https://host.docker.internal:9200 ES_API_KEY=ZWRqdDBKZ0JDUHpOTGZoR0E0UzA6Z1B2TlBpUUppTUNvUHlCWEdQSGtrdw== ES_SSL_SKIP_VERIFY=true docker run -i --rm -e ES_URL -e ES_API_KEY -e ES_SSL_SKIP_VERIFY docker.elastic.co/mcp/elasticsearch stdio

我們替換 https://localhost:9200 為地址?https://host.docker.internal:9200?。

配置 Claude Desktop

針對免費的 Claude Desktop,它只支持 stdio。

  1. 打開 Claude 桌面應用

  2. 前往?Settings > Developer > MCP Servers

  3. 點擊?Edit Config?并添加一個新的 MCP 服務器,配置如下:

Claude Desktop 的配置如下:

{"mcpServers": {"elasticsearch-mcp-server": {"command": "docker","args": ["run", "-i", "--rm","-e", "ES_URL", "-e", "ES_API_KEY","docker.elastic.co/mcp/elasticsearch","stdio"],"env": {"ES_URL": "<elasticsearch-cluster-url>","ES_API_KEY": "<elasticsearch-API-key>"}}}
}

針對我們的情況,我們使用如下從配置:

{"mcpServers": {"elasticsearch-mcp-server": {"command": "docker","args": ["run","-i","--rm","-e","ES_URL","-e","ES_API_KEY","-e","ES_SSL_SKIP_VERIFY","docker.elastic.co/mcp/elasticsearch","stdio"],"env": {"ES_URL": "https://host.docker.internal:9200","ES_API_KEY": "ZWRqdDBKZ0JDUHpOTGZoR0E0UzA6Z1B2TlBpUUppTUNvUHlCWEdQSGtrdw==","ES_SSL_SKIP_VERIFY": "true"}}}
}

我們需要替換 https://localhost:9200 為?https://host.docker.internal:9200。由于目前的版本不支持 SSL 連接,我們設置?"ES_SSL_SKIP_VERIFY": "true"。如果在連接的過程中有錯誤,請在如下的地址查找錯誤信息:

~/Library/Logs/Claude/
$ cd ~/Library/Logs/Claude/
$ ls
main.log                                      mcp.log
mcp-server-elasticsearch-mcp-server-local.log window.log
mcp-server-elasticsearch-mcp-server.log

測試

我們接下來測試我們的 Elasticsearch MCP server:

What are the indices in the Elasticsearch cluster?

What is the mapping for "my-index"?

Please return in JSON format

?接下來,我們導入一個 Kibana 自帶的索引:

這樣我們就向 Elasticsearch 寫入了一個叫做?kibana_sample_data_flights 名字的索引。

我們做如下的查詢:

What is the cheapest price from CN to US?  and tell me the OriginCityName and DestCityName

在上面我們并沒有指名任何索引的名稱:

Please use the flights index

我們也可以嘗試使用中文來進行查詢:

從中國到美國的最低價格是多少?請告訴我出發城市名稱和目的地城市名稱。

很顯然,我們也得到了我們需要的答案。

{`index`: `kibana_sample_data_flights`,`query_body`: {`size`: 1,`sort`: [{`AvgTicketPrice`: {`order`: `asc`}}],`query`: {`bool`: {`must`: [{`term`: {`OriginCountry`: `CN`}},{`term`: {`DestCountry`: `US`}}]}},`_source`: [`AvgTicketPrice`,`OriginCityName`,`DestCityName`,`OriginCountry`,`DestCountry`]}
}

結論

通過 Elasticsearch MCP server 的使用,我們可以很方便地使用自然語音的方式來對我們的數據進行查詢。我們可以不必使用非常難寫的 DSL 語句。

Happy Exploration!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/94743.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/94743.shtml
英文地址,請注明出處:http://en.pswp.cn/web/94743.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Shell 編程基礎與實踐要點梳理

目錄 前言 一、認識 Shell 1.1 Shell 的定義與作用 1.2 Shell 解釋器 二、Shell 腳本入門 2.1 編寫 Shell 腳本 2.2 賦予執行權限與執行腳本 三、Shell 變量 3.1 變量定義與規則 3.2 變量使用與操作 3.3 變量類型 四、Shell 字符串 4.1 字符串定義方式 4.2 字符串…

Python自動化測試完整教程:pytest + selenium實戰

目錄 前言環境搭建pytest基礎教程selenium基礎教程pytest selenium實戰項目頁面對象模式(POM)測試報告生成持續集成配置最佳實踐和進階技巧總結 前言 自動化測試是現代軟件開發中不可或缺的一環。Python作為一門簡潔優雅的編程語言&#xff0c;配合pytest測試框架和seleniu…

APM 系列(一):Skywalking 與 Easyearch 集成

概述 SkyWalking 是一個開源的可觀測性平臺&#xff0c;用于收集、分析、聚合和可視化服務和云原生基礎設施的數據。SkyWalking 提供了一種簡單的方法&#xff0c;即使在云之間也能保持對分布式系統的清晰視圖。它是一個現代的 APM&#xff0c;專門為云原生、基于容器的分布式…

使用 AD 帳戶從 ASP.NET 8 容器登錄 SQL Server 的 Kerberos Sidecar

我最近在做一個項目,需要將一個 ASP.NET 8 Web API 應用程序容器化,該應用程序需要與本地運行的 SQL Server 數據庫進行通信。我們決定將 ASP.NET 8 容器定位到 Linux 系統,因此必須與運行在 Windows AD 域中的數據庫進行通信。 問題 我們之前的設置是使用 IIS 在 Windows …

More Effective C++ 條款11:禁止異常流出析構函數之外

More Effective C 條款11&#xff1a;禁止異常流出析構函數之外核心思想 在C中&#xff0c;析構函數絕對不允許拋出異常。如果異常從析構函數中傳播出去&#xff0c;可能會導致程序立即終止或未定義行為&#xff0c;特別是在棧展開過程中處理已有異常時。通過捕獲并處理所有析構…

商超高峰客流統計誤差↓75%!陌訊多模態融合算法在智慧零售的實戰解析

原創聲明&#xff1a;本文為原創技術解析&#xff0c;核心技術參數、架構設計及實戰數據引用自 “陌訊技術白皮書”&#xff0c;技術方案與落地案例結合aishop.mosisson.com智慧零售數據聯動場景展開&#xff0c;禁止未經授權的轉載與商用。 一、行業痛點&#xff1a;智慧零售…

PyTorch實戰(2)——使用PyTorch構建神經網絡

PyTorch實戰&#xff08;2&#xff09;——使用PyTorch構建神經網絡0. 前言1. PyTorch 構建神經網絡初體驗1.1 使用 PyTorch 構建神經網絡1.2 神經網絡數據加載1.3 模型測試1.4 獲取中間層的值2. 使用 Sequential 類構建神經網絡3. PyTorch 模型的保存和加載3.1 模型保存所需組…

關于git的安裝(windows)

1.git的介紹 Git 是一個分布式版本控制系統&#xff0c;由 Linus Torvalds 在 2005 年為 Linux 內核開發而創建。它能夠高效地處理從小型到超大型項目的版本管理&#xff0c;具有以下特點&#xff1a; 分布式架構&#xff1a;每個開發者本地都有完整的倉庫副本高效性能&#…

Java后端開發?接口封裝器!

開發接口確實是Java后端開發中最核心、最可見的產出工作。“對入參校驗、處理業務邏輯、返回格式處理”——精準地描述了一個API接口的核心處理流程。 但這只是冰山之上最直觀的部分。一個專業、穩健、可擴展的后端系統&#xff0c;其復雜性和價值絕大部分隱藏在冰山之下。結合…

【沉浸式解決問題】NVIDIA 顯示設置不可用。 您當前未使用連接到NVIDIA GPU 的顯示器。

目錄一、問題描述二、環境版本三、原因分析四、解決方案一、問題描述 在看一篇cuda安裝的教程時&#xff0c;第一步是打開NVIDIA 控制面板&#xff0c;但是我打不開&#xff1a; NVIDIA 顯示設置不可用。 您當前未使用連接到NVIDIA GPU 的顯示器。 二、環境版本 設備&#xf…

牛客周賽 Round 106(小苯的方格覆蓋/小苯的數字折疊/ 小苯的波浪加密器/小苯的數字變換/小苯的洞數組構造/ 小苯的數組計數)

A 小苯的方格覆蓋思路&#xff1a;怎么擺第三行都是橫放的2*1&#xff1b;故若n為奇數&#xff0c;總格子數3n為奇數&#xff0c;無法被2整除&#xff0c;直接排除。#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<iostream> #include<bits/stdc…

高并發內存池(16)-三層緩存的回收過程

高并發內存池&#xff08;16&#xff09;-三層緩存的回收過程 內存池的回收過程是內存管理系統的關鍵環節&#xff0c;它通過分層協作和智能合并機制&#xff0c;確保內存高效重復利用。以下是完整的回收流程解析&#xff1a;一、回收觸發場景 ThreadCache回收&#xff1a;線程…

深入解析MyBatis Mapper接口工作原理

在Java持久層框架中&#xff0c;MyBatis以其靈活性和易用性贏得了廣大開發者的青睞。作為MyBatis的核心概念之一&#xff0c;Mapper接口機制極大地簡化了數據庫操作代碼的編寫。本文將深入剖析MyBatis Mapper接口的工作原理&#xff0c;從基礎概念到底層實現&#xff0c;幫助開…

瘋狂星期四文案網第49天運營日記

網站運營第49天&#xff0c;點擊觀站&#xff1a; 瘋狂星期四 crazy-thursday.com 全網最全的瘋狂星期四文案網站 運營報告 今日訪問量 常州蘇州那些ip鍥而不舍的掃了很多php的頁面 今日搜索引擎收錄情況 k頁面比較嚴重了&#xff0c;哎。 我感覺不該做其他類型文案的 網…

從GPT-5發布來分析LLM大模型幻覺收斂(一)

GPT-5 號稱在任何領域都有博士級別能力。在醫療健康領域&#xff0c;能夠對專業的癌癥診斷報告做通俗易懂的解讀。對復雜的放射治療方案決策&#xff0c;也能提供詳細的分析報告&#xff0c;幫助病人權衡利弊。一位癌癥患者的家屬在發布會上表示&#xff0c;“ 真正鼓舞人心的是…

大模型安全概述、LlamaFirewall

資料搜集整理自網絡。 概述 大模型爆火之后&#xff0c;衍生出大模型安全這一個比較新的領域。和之前的文章一樣&#xff0c;本文有不少新穎的名詞、概念、理論。 信通院、清華大學等多個單位聯合發布的《大模型安全實踐&#xff08;2024&#xff09;》&#xff0c;提出LLM安…

【目標檢測】論文閱讀3

Lightweight tomato ripeness detection algorithm based on the improved RT-DETR 論文地址 摘要 番茄具有很高的營養價值&#xff0c;需要對成熟果實進行準確的成熟度鑒定和選擇性采收&#xff0c;以顯著提高番茄收獲管理的效率和經濟效益。以往對番茄智能收獲的研究往往只以…

Python音頻分析與線性回歸:探索聲音中的數學之美

摘要&#xff1a;通過Python實現WAV音頻信號處理與線性回歸建模&#xff0c;揭示雙聲道音頻的數學關聯性&#xff0c;為聲音特征分析提供新視角。1. 音頻數據處理流程 1.1 WAV文件讀取與預處理 使用scipy.io.wavfile讀取音頻文件&#xff0c;獲取采樣率與時域信號數據&#xff…

Linux shell腳本數值計算與條件執行

變量的數值計算實踐 1 算術運算符 如果要執行算術運算&#xff0c;就會離不開各種運算符號&#xff0c;和其他編程語言類似&#xff0c;Shell 也有很多算術運算符。 下面就給大家介紹一下常見的 Shell 算術運算符&#xff1a; 、-&#xff0c;一元正號和負號。、-&#xff0c;加…

C#實戰:基于iTextSharp實現PDF加密小工具

目錄 1、技術框架 2、代碼實戰 2.1 創建窗體 2.2 后臺代碼邏輯 2.3 PDF加密用戶類型 2.4 PDF加密權限列表 3、運行效果 4、總結 大家日常辦公中有時候為了文檔資料的安全需要對文檔進行加密,尤其是針對PDF文檔這個場景還是非常廣泛的。今天給大家分享使用C#來實現PDF…