MCP Elasticsearch服务器🔍
一种模型上下文协议(MCP)服务器,为AI助手和其他MCP客户端提供Elasticsearch集成功能。该服务器支持通过标准化接口查询Elasticsearch集群。
特性
- 🔐 多种身份验证方法:支持API密钥和用户名/密码身份验证
- 📊 索引管理:列出具有健康状态和文档计数的索引
- 🗺️ 架构发现:检索字段映射以了解索引结构
- 🔍 高级搜索:使用聚合和排序执行复杂的Elasticsearch查询
- 📋 结构化响应:带搜索元数据的JSON格式输出
- ⚡ 性能监控:查询执行时间跟踪
- 🎯 上下文感知:支持通过适当的上下文取消执行搜索
工具
list_indices
列出所有带有可选模式过滤的Elasticsearch索引。
参数:
pattern(字符串,可选):索引模式过滤器(默认值:“\*”)
退货:
- 总索引计数
- 索引详细信息(名称、运行状况、状态、文档计数、大小)
get_index_mappings
获取一个或多个Elasticsearch索引的字段映射。
参数:
index(字符串,必填):索引名称或模式
退货:
- 指定索引的完整字段映射
搜索
在完全支持DSL的情况下执行Elasticsearch搜索查询。
参数:
index(字符串,必填):要搜索的索引名称或模式query(字符串,可选):Elasticsearch查询DSL为JSON(默认值:“{}”)size(数量,可选):可返回的最大文档数(默认值:10,最大值:10000)sort(string,可选):将规范排序为JSONtrack_total_hits(布尔值,可选):跟踪总点击数(默认值:true)
退货:
- 包含点击、聚合和元数据的搜索结果
配置
环境变量
Elasticsearch配置
ES_URL:Elasticsearch集群URL(必填)ES_API_KEY:用于身份验证的API密钥(可选)ES_USERNAME:基本身份验证的用户名(可选)ES_PASSWORD:基本身份验证密码(可选)
服务器配置
MCP_ES_SERVER_NAME:服务器名称(默认值:“mcp elasticsearch🔍")
日志记录配置
MCP_ES_LOG_LEVEL:日志级别(调试、信息、警告、错误、致命)MCP_ES_LOG_FORMAT:日志格式(json,控制台)MCP_ES_LOG_OUTPUT:日志输出(stdout、stderr)
认证
您必须提供:
- API密钥验证:设置
ES_API_KEY - 基本身份验证:设置两者
ES_USERNAME和ES_PASSWORD
安装
# Clone and build
git clone
cd mcp-elasticsearch
go mod download
go build -o bin/mcp-elasticsearch .
# Install to system
sudo install bin/mcp-elasticsearch /usr/local/bin/用法
直接执行
# With API key
ES_URL="https://your-cluster.com" ES_API_KEY="your-api-key" mcp-elasticsearch
# With basic auth
ES_URL="https://your-cluster.com" ES_USERNAME="user" ES_PASSWORD="pass" mcp-elasticsearch
# With custom logging
ES_URL="https://your-cluster.com" ES_API_KEY="key" MCP_ES_LOG_LEVEL=debug mcp-elasticsearch与Claude Desktop集成
添加到您的Claude配置中:
{
"mcpServers": {
"elasticsearch": {
"command": "mcp-elasticsearch",
"env": {
"ES_URL": "https://your-cluster.com",
"ES_API_KEY": "your-api-key",
"MCP_ES_LOG_LEVEL": "info"
}
}
}
}与ApMentor集成
更新您的 config.json:
{
"mcpServers": {
"elasticsearch-go": {
"command": "/usr/local/bin/mcp-elasticsearch",
"env": {
"ES_URL": "https://atani.es.eu-west-1.aws.found.io",
"ES_API_KEY": "your-api-key",
"MCP_ES_LOG_LEVEL": "info"
}
}
}
}查询示例
列出所有指数
{
"tool": "list_indices",
"parameters": {
"pattern": "*"
}
}仅列出日志索引
{
"tool": "list_indices",
"parameters": {
"pattern": "logs-*"
}
}获取索引映射
{
"tool": "get_index_mappings",
"parameters": {
"index": "logs-apm.error-*"
}
}简单搜索
{
"tool": "search",
"parameters": {
"index": "logs-*",
"query": "{\"match\": {\"service.name\": \"broker-api-b2b\"}}",
"size": 50
}
}使用聚合进行复杂搜索
{
"tool": "search",
"parameters": {
"index": "logs-*",
"query": "{\"bool\": {\"must\": [{\"term\": {\"service.name\": \"broker-api-b2b\"}}, {\"range\": {\"@timestamp\": {\"gte\": \"now-24h\"}}}]}}",
"size": 0,
"aggs": "{\"error_types\": {\"terms\": {\"field\": \"error.type.keyword\", \"size\": 10}}}"
}
}按排序搜索
{
"tool": "search",
"parameters": {
"index": "logs-*",
"query": "{\"match\": {\"log.level\": \"ERROR\"}}",
"sort": "[{\"@timestamp\": {\"order\": \"desc\"}}]",
"size": 20
}
}发展
# Install dependencies
go mod download
# Format code
gofmt -w .
# Run tests
go test -v ./...
# Build
go build -o bin/mcp-elasticsearch .
# Run with debug logging
MCP_ES_LOG_LEVEL=debug go run .错误处理
服务器为常见问题提供详细的错误消息:
- 身份验证失败:检查您的API密钥或凭据
- 找不到索引:验证索引名称和模式
- 查询语法错误:验证您的Elasticsearch查询JSON
- 连接问题:确保Elasticsearch可访问
安全考虑
- 安全存储API密钥和凭据
- 使用环境变量进行敏感配置
- 考虑Elasticsearch访问的网络安全
- 监控查询模式和资源使用情况
许可证
MIT许可证-有关详细信息,请参阅许可证文件。

