項目概述
elasticsearch-mcp-server
是一個基于 Model Context Protocol (MCP) 的服務器實現,提供了與 Elasticsearch 和 OpenSearch 交互的能力。該服務器允許用戶搜索文檔、分析索引以及管理集群,通過一系列工具函數實現這些功能。
項目結構
項目主要由以下部分組成:
-
服務器核心 (server.py):
- 定義了
SearchMCPServer
類,負責初始化服務器、創建搜索客戶端和注冊工具 - 提供了
run_search_server
函數,支持不同的傳輸協議(stdio、streamable-http、sse) - 包含命令行參數解析功能
- 定義了
-
工具模塊 (tools/):
register.py
:定義ToolsRegister
類,負責注冊工具到 MCP 服務器index.py
:定義IndexTools
類,提供索引管理工具document.py
:定義DocumentTools
類,提供文檔操作工具cluster.py
:定義ClusterTools
類,提供集群管理工具alias.py
:定義AliasTools
類,提供別名管理工具general.py
:定義GeneralTools
類,提供通用 API 請求工具
-
配置文件:
docker-compose-elasticsearch.yml
:用于啟動 Elasticsearch 集群docker-compose-opensearch.yml
:用于啟動 OpenSearch 集群.env.example
:環境變量示例
工作流程
功能特點
-
索引操作:
- 列出所有索引
- 獲取索引信息(映射、設置、別名)
- 創建新索引
- 刪除索引
-
文檔操作:
- 搜索文檔
- 創建或更新文檔
- 通過 ID 獲取文檔
- 刪除文檔
- 通過查詢刪除文檔
-
集群操作:
- 獲取集群健康信息
- 獲取集群統計信息
-
別名操作:
- 列出所有別名
- 獲取特定索引的別名信息
- 創建或更新別名
- 刪除別名
-
通用操作:
- 執行通用 HTTP API 請求
使用方式
-
配置環境變量:
- git clone https://github.com/cr7258/elasticsearch-mcp-server.git
- cd elasticsearch-mcp-server
- 復制
.env.example
到.env
并更新相應的值
-
啟動 Elasticsearch/OpenSearch 集群:
# 對于 Elasticsearch docker-compose -f docker-compose-elasticsearch.yml up -d# 對于 OpenSearch docker-compose -f docker-compose-opensearch.yml up -d
以docker-compose -f docker-compose-opensearch.yml up -d
為例
- 運行 MCP 服務器:
- 可以通過 stdio、streamable-http 或 sse 傳輸協議運行
- 支持配置主機、端口和路徑
chatbot測試
配置
示例1
問題:創建一個名為 users 的索引,要求包含 username (文本類型)和 age (整型)字段。
trae:
示例2
問題:Returns basic information about the health of the cluster.
tare:
inspector測試
啟動
配置
命令參數
環境變量
token
工具