Elasticsearch模型上下文协议服务器
通过允许用户通过模型上下文协议服务器和自然语言命令执行索引操作、文档搜索和集群管理,促进与 Elasticsearch 集群的交互。
可用工具 (6 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
list_indices
List all indices in the Elasticsearch cluster
该工具无需必填参数,直接调用即可
get_mapping 1 个参数 需填 1 项
Get index mapping
必填参数:index
get_settings 1 个参数 需填 1 项
Get index settings
必填参数:index
search_documents 2 个参数 需填 2 项
Search documents in an index with a custom query
必填参数:index、body
get_cluster_health
Get cluster health status
该工具无需必填参数,直接调用即可
get_cluster_stats
Get cluster statistics
该工具无需必填参数,直接调用即可
服务介绍
Elasticsearch/OpenSearch MCP 服务器
概览
这是一个模型上下文协议 (MCP) 服务器实现,提供了与 Elasticsearch 和 OpenSearch 的交互功能。该服务器通过一系列工具支持文档搜索、索引分析和集群管理。
演示
https://github.com/user-attachments/assets/f7409e31-fac4-4321-9c94-b0ff2ea7ff15
功能
索引操作
list_indices: 列出所有索引。get_index: 返回一个或多个索引的信息(映射、设置、别名)。create_index: 创建一个新的索引。delete_index: 删除一个索引。
文档操作
search_documents: 搜索文档。index_document: 在索引中创建或更新文档。get_document: 通过 ID 获取文档。delete_document: 通过 ID 删除文档。delete_by_query: 删除与提供的查询匹配的文档。
集群操作
get_cluster_health: 返回关于集群健康状况的基本信息。get_cluster_stats: 返回集群统计数据的高级概览。
别名操作
list_aliases: 列出所有别名。get_alias: 获取特定索引的别名信息。put_alias: 为特定索引创建或更新别名。delete_alias: 删除特定索引的别名。
配置环境变量
将 .env.example 文件复制为 .env 并相应地更新值。
启动 Elasticsearch/OpenSearch 集群
使用 Docker Compose 启动 Elasticsearch/OpenSearch 集群:
# For Elasticsearch
docker-compose -f docker-compose-elasticsearch.yml up -d
# For OpenSearch
docker-compose -f docker-compose-opensearch.yml up -d
默认的 Elasticsearch 用户名为 elastic,密码为 test123。默认的 OpenSearch 用户名为 admin,密码为 admin。
您可以从 http://localhost:5601 访问 Kibana/OpenSearch 控制面板。
与 Claude Desktop 一起使用
选项 1:通过 Smithery 安装
要通过 Smithery 自动安装适用于 Claude Desktop 的 Elasticsearch 服务器:
npx -y @smithery/cli install elasticsearch-mcp-server --client claude
选项 2:使用 uvx
使用 uvx 将自动从 PyPI 安装包,无需在本地克隆仓库。将以下配置添加到 Claude Desktop 的配置文件 claude_desktop_config.json 中。
// For Elasticsearch
{
"mcpServers": {
"elasticsearch-mcp-server": {
"command": "uvx",
"args": [
"elasticsearch-mcp-server"
],
"env": {
"ELASTICSEARCH_HOST": "https://localhost:9200",
"ELASTICSEARCH_USERNAME": "elastic",
"ELASTICSEARCH_PASSWORD": "test123"
}
}
}
}
// For OpenSearch
{
"mcpServers": {
"opensearch-mcp-server": {
"command": "uvx",
"args": [
"opensearch-mcp-server"
],
"env": {
"OPENSEARCH_HOST": "https://localhost:9200",
"OPENSEARCH_USERNAME": "admin",
"OPENSEARCH_PASSWORD": "admin"
}
}
}
}
选项 3:使用 uv 进行本地开发
使用 uv 需要在本地克隆仓库并指定源代码路径。将以下配置添加到 Claude Desktop 的配置文件 claude_desktop_config.json 中。
// For Elasticsearch
{
"mcpServers": {
"elasticsearch-mcp-server": {
"command": "uv",
"args": [
"--directory",
"path/to/src/elasticsearch_mcp_server",
"run",
"elasticsearch-mcp-server"
],
"env": {
"ELASTICSEARCH_HOST": "https://localhost:9200",
"ELASTICSEARCH_USERNAME": "elastic",
"ELASTICSEARCH_PASSWORD": "test123"
}
}
}
}
// For OpenSearch
{
"mcpServers": {
"opensearch-mcp-server": {
"command": "uv",
"args": [
"--directory",
"path/to/src/elasticsearch_mcp_server",
"run",
"opensearch-mcp-server"
],
"env": {
"OPENSEARCH_HOST": "https://localhost:9200",
"OPENSEARCH_USERNAME": "admin",
"OPENSEARCH_PASSWORD": "admin"
}
}
}
}
- 在 macOS 上:
~/Library/Application Support/Claude/claude_desktop_config.json - 在 Windows 上:
%APPDATA%/Claude/claude_desktop_config.json
重启 Claude Desktop 以加载新的 MCP 服务器。
现在,您可以使用自然语言命令通过Claude与您的Elasticsearch/OpenSearch集群进行交互,例如:
- "列出集群中的所有索引"
- "学生Bob多大了?"
- "显示集群的健康状态"
使用Anthropic MCP客户端
uv run mcp_client/client.py src/server.py
许可证
本项目根据Apache许可证2.0版许可 - 详情请参阅LICENSE文件。