🚀 Easysearch MCP 服務器
這是一個 MCP 服務器,可讓 AI Agent 操作 INFINI Easysearch(兼容 Elasticsearch/OpenSearch API),為 AI 與搜索服務的交互提供便利。
🚀 快速開始
1. 配置 MCP 客戶端
Kiro (.kiro/settings/mcp.json):
{
"mcpServers": {
"easysearch": {
"command": "python3",
"args": ["-m", "easysearch_mcp.server"],
"cwd": "/path/to/easysearch-mcp-server/src",
"env": {
"EASYSEARCH_URL": "https://localhost:9200",
"EASYSEARCH_USER": "admin",
"EASYSEARCH_PASSWORD": "your-password",
"PYTHONPATH": "/path/to/easysearch-mcp-server/src"
}
}
}
}
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"easysearch": {
"command": "python3",
"args": ["-m", "easysearch_mcp.server"],
"cwd": "/path/to/easysearch-mcp-server/src",
"env": {
"EASYSEARCH_URL": "https://localhost:9200",
"EASYSEARCH_USER": "admin",
"EASYSEARCH_PASSWORD": "your-password",
"PYTHONPATH": "/path/to/easysearch-mcp-server/src"
}
}
}
}
⚠️ 重要提示
將 /path/to/easysearch-mcp-server 替換為實際的項目路徑。
2. 開始使用
配置完成後,AI Agent 就可以直接操作 Easysearch 了,例如:
- "查看集群健康狀態"
- "創建一個 products 索引"
- "搜索價格大於 100 的商品"
- "統計每個分類的訂單數量"
✨ 主要特性
- 🔧 121 個工具:覆蓋集群、索引、文檔、搜索、監控等全部功能,滿足多樣化的操作需求。
- 🔌 即插即用:支持 Kiro、Claude Desktop 等 MCP 客戶端,方便集成。
- 🔒 安全連接:支持 HTTPS 和基礎認證,保障數據傳輸安全。
- ⚡ 高性能:基於 httpx 異步 HTTP 客戶端,提升操作效率。
📦 安裝指南
git clone https://github.com/cloudsmithy/easysearch-mcp-server.git
cd easysearch-mcp-server
pip install -e .
💻 使用示例
基礎用法
集群監控
查看集群健康狀態
→ cluster_health()
查看所有節點
→ cat_nodes()
查看線程池狀態
→ cat_thread_pool()
按大小排序查看索引
→ cat_indices(sort_by="store.size", order="desc")
索引操作
創建索引
→ index_create("products",
mappings={"properties": {"name": {"type": "text"}, "price": {"type": "float"}}},
settings={"number_of_shards": 3})
寫入文檔
→ doc_index("products", {"name": "iPhone", "price": 999})
批量寫入
→ doc_bulk_simple("products", [
{"name": "iPad", "price": 799},
{"name": "MacBook", "price": 1299}
])
搜索查詢
簡單搜索
→ search_simple("products", "iPhone")
DSL 搜索
→ search("products", query={
"bool": {
"must": [{"match": {"name": "phone"}}],
"filter": [{"range": {"price": {"lte": 1000}}}]
}
})
聚合統計
→ aggregate("orders", aggs={
"by_status": {"terms": {"field": "status"}},
"avg_amount": {"avg": {"field": "amount"}}
})
SQL 查詢
→ sql_query("SELECT * FROM products WHERE price > 500 ORDER BY price DESC")
索引克隆/拆分/收縮
# 克隆索引(需要先設置只讀)
→ index_set_readonly("my-index", True)
→ index_clone("my-index", "my-index-clone")
→ index_set_readonly("my-index", False)
# 收縮索引(需要準備)
→ index_prepare_for_shrink("my-index")
→ index_shrink("my-index", "my-index-shrunk", {"index.number_of_shards": 1})
# 滾動索引(需要可寫別名)
→ index_create_with_write_alias("logs-000001", "logs")
→ index_rollover("logs", conditions={"max_docs": 1000000})
📚 詳細文檔
工具列表
集群管理 (8)
| 工具 |
說明 |
cluster_health |
集群健康狀態 |
cluster_stats |
集群統計信息 |
cluster_state |
集群狀態詳情 |
cluster_settings |
獲取集群設置 |
cluster_update_settings |
更新集群設置 |
cluster_pending_tasks |
待處理任務 |
cluster_allocation_explain |
分片分配解釋 |
cluster_reroute |
手動路由分片 |
索引管理 (25)
| 工具 |
說明 |
index_create |
創建索引 |
index_delete |
刪除索引 |
index_exists |
檢查索引是否存在 |
index_get |
獲取索引詳情 |
index_get_mapping |
獲取映射 |
index_put_mapping |
更新映射 |
index_get_settings |
獲取設置 |
index_put_settings |
更新設置 |
index_open |
打開索引 |
index_close |
關閉索引 |
index_refresh |
刷新索引 |
index_flush |
刷盤 |
index_forcemerge |
強制合併段 |
index_clear_cache |
清除緩存 |
index_stats |
索引統計 |
index_segments |
段信息 |
index_recovery |
恢復狀態 |
index_shard_stores |
分片存儲信息 |
index_set_readonly |
設置只讀(clone/split/shrink 前置條件) |
index_prepare_for_shrink |
準備收縮(shrink 前置條件) |
index_create_with_write_alias |
創建帶可寫別名的索引(rollover 前置條件) |
index_clone |
克隆索引 |
index_split |
拆分索引 |
index_shrink |
收縮索引 |
index_rollover |
滾動索引 |
別名管理 (4)
| 工具 |
說明 |
alias_get |
獲取別名 |
alias_create |
創建別名 |
alias_delete |
刪除別名 |
alias_actions |
批量別名操作 |
模板管理 (3)
| 工具 |
說明 |
template_get |
獲取模板 |
template_create |
創建模板 |
template_delete |
刪除模板 |
文檔操作 (11)
| 工具 |
說明 |
doc_index |
寫入文檔 |
doc_get |
獲取文檔 |
doc_exists |
檢查文檔是否存在 |
doc_delete |
刪除文檔 |
doc_update |
更新文檔 |
doc_bulk |
批量操作 |
doc_bulk_simple |
簡化批量寫入 |
doc_mget |
批量獲取 |
doc_source |
獲取文檔源 |
doc_delete_by_query |
按查詢刪除 |
doc_update_by_query |
按查詢更新 |
搜索功能 (15)
| 工具 |
說明 |
search |
DSL 搜索 |
search_simple |
簡單關鍵詞搜索 |
search_template |
模板搜索 |
msearch |
多重搜索 |
count |
文檔計數 |
validate_query |
驗證查詢 |
explain |
解釋評分 |
aggregate |
聚合查詢 |
aggregate_simple |
簡化聚合 |
scroll_start |
開始滾動搜索 |
scroll_next |
獲取下一批 |
scroll_clear |
清除滾動上下文 |
field_caps |
字段能力 |
knn_search |
向量搜索 |
sql_query |
SQL 查詢 |
CAT API (19)
| 工具 |
說明 |
cat_health |
集群健康 |
cat_nodes |
節點列表 |
cat_indices |
索引列表 |
cat_shards |
分片分佈 |
cat_allocation |
磁盤分配 |
cat_thread_pool |
線程池狀態 |
cat_master |
主節點信息 |
cat_segments |
段信息 |
cat_count |
文檔計數 |
cat_recovery |
恢復狀態 |
cat_pending_tasks |
待處理任務 |
cat_aliases |
別名列表 |
cat_templates |
模板列表 |
cat_plugins |
插件列表 |
cat_fielddata |
Fielddata 使用 |
cat_nodeattrs |
節點屬性 |
cat_repositories |
快照倉庫 |
cat_snapshots |
快照列表 |
cat_tasks |
任務列表 |
節點管理 (5)
| 工具 |
說明 |
nodes_info |
節點信息 |
nodes_stats |
節點統計 |
nodes_hot_threads |
熱點線程 |
nodes_usage |
功能使用統計 |
nodes_reload_secure_settings |
重載安全設置 |
快照管理 (10)
| 工具 |
說明 |
snapshot_repo_create |
創建倉庫 |
snapshot_repo_get |
獲取倉庫 |
snapshot_repo_delete |
刪除倉庫 |
snapshot_repo_verify |
驗證倉庫 |
snapshot_create |
創建快照 |
snapshot_get |
獲取快照 |
snapshot_status |
快照狀態 |
snapshot_delete |
刪除快照 |
snapshot_restore |
恢復快照 |
snapshot_clone |
克隆快照 |
快照生命週期管理 SLM (6)
| 工具 |
說明 |
slm_policy_create |
創建策略 |
slm_policy_get |
獲取策略 |
slm_policy_delete |
刪除策略 |
slm_policy_explain |
解釋策略 |
slm_policy_start |
啟動策略 |
slm_policy_stop |
停止策略 |
任務管理 (3)
| 工具 |
說明 |
tasks_list |
任務列表 |
tasks_get |
任務詳情 |
tasks_cancel |
取消任務 |
Ingest Pipeline (6)
| 工具 |
說明 |
pipeline_get |
獲取 Pipeline |
pipeline_create |
創建 Pipeline |
pipeline_delete |
刪除 Pipeline |
pipeline_simulate |
模擬 Pipeline |
ingest_stats |
Ingest 統計 |
ingest_processor_grok |
Grok 模式列表 |
ILM 索引生命週期管理 (5)
| 工具 |
說明 |
ilm_policy_get |
獲取 ILM 策略 |
ilm_policy_create |
創建 ILM 策略 |
ilm_policy_delete |
刪除 ILM 策略 |
ilm_add_policy |
給索引綁定 ILM 策略 |
ilm_remove_policy |
從索引移除 ILM 策略 |
其他 (1)
環境變量
| 變量 |
說明 |
默認值 |
EASYSEARCH_URL |
Easysearch 地址 |
https://localhost:9200 |
EASYSEARCH_USER |
用戶名 |
admin |
EASYSEARCH_PASSWORD |
密碼 |
- |
開發
git clone https://github.com/cloudsmithy/easysearch-mcp-server.git
cd easysearch-mcp-server
pip install -e .
pytest
black src/
ruff check src/
兼容性測試
所有 121 個工具已在 INFINI Easysearch 上完成測試驗證:
| 分類 |
工具數 |
狀態 |
| 集群管理 |
8 |
✅ 全部通過 |
| 索引管理 |
25 |
✅ 全部通過 |
| 別名管理 |
4 |
✅ 全部通過 |
| 模板管理 |
3 |
✅ 全部通過 |
| 文檔操作 |
11 |
✅ 全部通過 |
| 搜索功能 |
15 |
✅ 全部通過 |
| CAT API |
19 |
✅ 全部通過 |
| 節點管理 |
5 |
✅ 全部通過 |
| 快照管理 |
10 |
✅ 全部通過 |
| SLM |
6 |
✅ 全部通過 |
| 任務管理 |
3 |
✅ 全部通過 |
| Ingest Pipeline |
6 |
✅ 全部通過 |
| ILM |
5 |
✅ 全部通過 |
| 其他 |
1 |
✅ 全部通過 |
⚠️ 重要提示
快照和 SLM 功能需要服務器配置 path.repo 才能創建倉庫。
📄 許可證
MIT License