Elasticsearch
概要
作者による説明(英語の原文)
Elasticsearch MCP Server for ES 5.x-9.x with a query harness, field validation and full API access
PopNx MCPの3つの柱
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
- 利用者の声iレビューはまだありませんレビューは今後のステップで、アカウント機能と一緒に始まります
- 私たちの基本チェックi1項目中1項目に合格公開情報からチェック。コードはまだスキャンしていません
- 利用状況iとても新しい↓ 94/週 · ★ –
できること
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
- 接続方法: パソコンで動く
- トランスポート: stdio, Streamable HTTP
- カテゴリ: データベース・データセット
- 入力が必要なもの:ES_URL, ES_API_KEY, ES_PASSWORD
インストール
使っているAIアプリを選んで、設定をコピーしてください。
インストールの前に
- 基本チェック:1項目中1項目に合格
- あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
- 自分で入力するもの:
ES_URL,ES_API_KEY,ES_USERNAME,ES_PASSWORD,ES_CA_CERT,NODE_TLS_REJECT_UNAUTHORIZED,MAX_TOKEN_CALL
「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
- npmNode.jsのインストール(npxコマンドに必要)
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"elasticsearch": {
"command": "npx",
"args": [
"-y",
"@tocharianou/elasticsearch-mcp"
],
"env": {
"ES_URL": "your-value",
"ES_API_KEY": "your-value",
"ES_USERNAME": "your-value",
"ES_PASSWORD": "your-value",
"ES_CA_CERT": "your-value",
"NODE_TLS_REJECT_UNAUTHORIZED": "your-value",
"MAX_TOKEN_CALL": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add elasticsearch --env ES_URL=your-value --env ES_API_KEY=your-value --env ES_USERNAME=your-value --env ES_PASSWORD=your-value --env ES_CA_CERT=your-value --env NODE_TLS_REJECT_UNAUTHORIZED=your-value --env MAX_TOKEN_CALL=your-value -- npx -y @tocharianou/elasticsearch-mcp動かす前に、空欄の値を入力してください。
または、設定を自分でコピーする
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"elasticsearch": {
"command": "npx",
"args": [
"-y",
"@tocharianou/elasticsearch-mcp"
],
"env": {
"ES_URL": "your-value",
"ES_API_KEY": "your-value",
"ES_USERNAME": "your-value",
"ES_PASSWORD": "your-value",
"ES_CA_CERT": "your-value",
"NODE_TLS_REJECT_UNAUTHORIZED": "your-value",
"MAX_TOKEN_CALL": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
または、設定を自分でコピーする
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"elasticsearch": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@tocharianou/elasticsearch-mcp"
],
"env": {
"ES_URL": "your-value",
"ES_API_KEY": "your-value",
"ES_USERNAME": "your-value",
"ES_PASSWORD": "your-value",
"ES_CA_CERT": "your-value",
"NODE_TLS_REJECT_UNAUTHORIZED": "your-value",
"MAX_TOKEN_CALL": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
自分で入力する値
- Your Elasticsearch instance URL (e.g., https://localhost:9200)
- Elasticsearch API key for authentication
ES_USERNAMEenvElasticsearch username for basic authentication- Elasticsearch password for basic authentication
ES_CA_CERTenvPath to custom CA certificate for Elasticsearch SSL/TLSNODE_TLS_REJECT_UNAUTHORIZEDenvSet to '0' to disable SSL certificate validation (development only)MAX_TOKEN_CALLenvMaximum tokens per API call
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
できること
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名は、リポジトリを所有するGitHubアカウント TocharianOU で確認済みです
- … 未チェック
今もメンテナンスされている
このリポジトリはまだGitHubから読み取っていません
- … 未チェック
ライセンスがある
このリポジトリはまだGitHubから読み取っていません
- – 対象外
エンドポイントが応答する
これはパソコンで動くため、インターネット上のエンドポイントはありません
- – 対象外
OAuthでサインイン
パソコンで動き、代わりにローカルの設定を使います
- … 未チェック
ツールの説明に隠れた指示がない
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
データベース・データセットのほかのサーバーとの比較i
- このカテゴリのほかの1146件のうち0%よりスターが多い
- このカテゴリのほかの1146件のうち62%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの1146件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
Elasticsearchは安全ですか?
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
入力が必要なもの:ES_URL, ES_API_KEY, ES_PASSWORD
パソコンで動きますか、それともクラウドですか?
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は–、最新バージョン(0.9.1)がレジストリに届いたのは28 日前です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
代わりに使えるものは?
同じカテゴリには:Supabase, MongoDB MCP Server, Elasticsearch MCP Server
代わりの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
作者のREADME
READMEを開く
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Elasticsearch MCP Server
Enhanced Elasticsearch MCP Server Solution - Security & Threat Analysis Focused
This is a professional security-focused solution maintained by TocharianOU. It enables comprehensive interaction with all Elasticsearch APIs, specifically optimized for security analysis, threat detection, and incident investigation. Features include advanced security monitoring, anomaly detection, threat hunting, root cause analysis, and comprehensive audit capabilities.
Key Security Features:
- Real-time threat detection and security monitoring
- Advanced machine learning for anomaly detection
- Root cause analysis and attack chain tracking
- Security incident investigation and forensics
- Compliance monitoring and audit reporting
Note: This solution is designed for security professionals, SOC teams, and threat analysts.
Connect to your Elasticsearch data directly from any MCP Client (such as Claude Desktop) using the Model Context Protocol (MCP). Interact with your Elasticsearch security data through natural language queries for advanced threat analysis and incident response.
Prerequisites
- An Elasticsearch instance
- Elasticsearch authentication credentials (API key or username/password)
- MCP Client (e.g. Claude Desktop) or HTTP client for remote access
Multi-Version Elasticsearch Support
Automatically supports Elasticsearch 5.x - 9.x with intelligent version detection:
| Version | Status | Client | Notes | |
|---|---|---|---|---|
| ES 5.x | ✅ | 5.6.22 | EOL - Basic tools only | |
| ES 6.x | ✅ | 6.8.8 | EOL - ILM available (6.6+) | |
| ES 7.x | ✅ | 7.17.14 | LTS - Full features | |
| ES 8.x | ✅ | 8.19.1 | Recommended - Latest features, ES\ | QL (8.11+) |
| ES 9.x+ | ✅ | Auto-fallback | Future-ready |
Key Features:
- Automatic version detection - No manual configuration needed
- Smart client selection - Loads the right client for your ES version
- Adaptive features - Disables unsupported tools (e.g., Data Streams on ES < 7.9, ES|QL on ES < 8.11)
- Version-specific optimizations - Handles API differences transparently
What happens:
Connect → Detect ES version → Load matching client → Register compatible tools
The Query Harness (v0.9.0)
Since v0.9.0 the server ships a query harness: a deterministic layer between the AI model and your cluster. The design philosophy is simple:
The model steers; the harness knows.
Intent ("find failed logins by user") belongs to the model.
Correctness (real field names, aggregatability, version quirks) belongs to the harness.
What this means in practice — at the level of principles, not internals:
- Live truth beats bundled knowledge beats model memory. Every query is checked against the cluster's actual field capabilities before it runs. A bundled ECS (Elastic Common Schema) vocabulary provides *meaning*; the live cluster provides *existence*. The model's own recollection is never trusted.
- Unambiguous mistakes are fixed silently; ambiguous ones become guidance. The classic example: a spurious
.keywordsuffix on modern ECS mappings is auto-corrected (and the correction is reported); an unknown field blocks the doomed query and returns the nearest real fields instead of a provider error. - Field knowledge stays out of the context window. The full ECS dictionary (thousands of fields) lives in process memory. The model retrieves only the handful it needs, on demand, via
lookup_fields. - Every failure must be actionable. Raw Elasticsearch errors are rewritten with live suggestions and index-naming advice (data stream vs. legacy Beats naming, internal indices that should be accessed via Kibana APIs, and so on).
- The model needs zero version knowledge. Naming eras, API differences and mapping-style differences (legacy
text+.keywordsubfield vs. modern barekeyword) are absorbed entirely by the harness. The same model behaves identically against ES 5.6 and ES 9.x — verified by a version test matrix covering nine watershed releases (5.6 → 9.0). - An escape hatch always exists. Validation can be bypassed per call (
skip_lint) when the model knows better — e.g. runtime fields defined outside the query. The harness assists; it never imprisons.
SSL/TLS Connection
To connect to Elasticsearch with a self-signed certificate or in a test environment, you can set the following environment variable:
NODE_TLS_REJECT_UNAUTHORIZED=0
⚠️ This disables Node.js SSL certificate validation. Use only in development or testing environments. For production, always use a trusted CA certificate.
Installation & Setup
Install (or run) the server, point it at your cluster via environment variables, register it in your MCP client, then just start a conversation — the server connects and registers the tools your ES version supports.
Configuration Options
The Elasticsearch MCP Server supports the following configuration options:
Elasticsearch Configuration
| Environment Variable | Description | Required |
|---|---|---|
ES_URL | Your Elasticsearch instance URL | Yes |
ES_API_KEY | Elasticsearch API key for authentication | No |
ES_USERNAME | Elasticsearch username for basic authentication | No |
ES_PASSWORD | Elasticsearch password for basic authentication | No |
ES_CA_CERT | Path to custom CA certificate for Elasticsearch SSL/TLS | No |
NODE_TLS_REJECT_UNAUTHORIZED | Set to 0 to disable SSL certificate validation | No |
Transport Mode Configuration (NEW in v0.3.0)
| Environment Variable | Description | Default | Values |
|---|---|---|---|
MCP_TRANSPORT | Transport mode selection | stdio | stdio, http |
MCP_HTTP_PORT | HTTP server port (when using HTTP transport) | 3000 | 1-65535 |
MCP_HTTP_HOST | HTTP server host (when using HTTP transport) | localhost | Any valid host |
Transport Mode Details:
- Stdio mode (default): For Claude Desktop and local MCP clients
- HTTP Streamable mode: Runs as a standalone HTTP server for remote access, API integration, and web applications
Quick Start
Option 1: NPM Installation (Recommended)
- Install globally via NPM
npm install -g @tocharianou/elasticsearch-mcp
- Run directly
npx @tocharianou/elasticsearch-mcp
Option 2: GitHub Release (Standalone Package)
- Download release package
- Go to GitHub Releases
- Download the latest
.tar.gzfile and its checksum files (.sha256and.sha512)
- Verify package integrity
shasum -a 256 -c elasticsearch-mcp-v*.tar.gz.sha256
Should output: elasticsearch-mcp-v*.tar.gz: OK
- Extract and use
mkdir elasticsearch-mcp && cd elasticsearch-mcp
tar -xzf ../elasticsearch-mcp-v*.tar.gz
Run with your Elasticsearch credentials
ES_URL=https://localhost:9200 ES_API_KEY=your-key node dist/index.js
Option 3: Source Installation
- Clone the repository
git clone https://github.com/TocharianOU/elasticsearch-mcp.git
cd elasticsearch-mcp
- Install Dependencies
npm install
- Build the Project
npm run build
- Configure Claude Desktop App
- Open Claude Desktop App
- Go to Settings > Developer > MCP Servers
- Click
Edit Configand add a new MCP Server with the following configuration:
For NPM Installation:
{
"mcpServers": { "elasticsearch-mcp-server": { "command": "npx", "args": [ "@tocharianou/elasticsearch-mcp" ], "env": { "ES_URL": "your-elasticsearch-url", "ES_USERNAME": "elastic", "ES_PASSWORD": "your_pass", "NODE_TLS_REJECT_UNAUTHORIZED": "0" } } } }
For Source Installation:
{
"mcpServers": { "elasticsearch-mcp-server-local": { "command": "node", "args": [ "/path/to/your/elasticsearch-mcp/dist/index.js" ], "env": { "ES_URL": "your-elasticsearch-url", "ES_USERNAME": "elastic", "ES_PASSWORD": "your_pass", "NODE_TLS_REJECT_UNAUTHORIZED": "0" } } } }
- Debugging with MCP Inspector (optional)
ES_URL=your-elasticsearch-url ES_USERNAME=elastic ES_PASSWORD=your_pass npm run inspector
Installation & Integration Notes
If `npm install -g` misbehaves:
- *Permission errors (
EACCES) on global install* — don'tsudo. Either skip the global install entirely and let your MCP client runnpx @tocharianou/elasticsearch-mcp(npx fetches on demand), or set a user-level prefix:npm config set prefix ~/.npm-globaland add it to yourPATH. - *Slow or blocked registry* — use a mirror for the install only:
npm install -g @tocharianou/elasticsearch-mcp --registry=https://registry.npmmirror.com. - *Node version* — requires Node 18+ (
node --version). Older Node fails at startup with ESM/fetch errors, not at install time. - *
npxcold start* — the firstnpxrun downloads the package; if your MCP client times out on first connect, runnpx @tocharianou/elasticsearch-mcponce in a terminal to warm the cache, then reconnect. - *Fully offline hosts* — use the GitHub Release tarball (Option 2) and point your client at
node /path/to/dist/index.js; nothing is fetched at runtime.
Claude Desktop — Settings → Developer → MCP Servers → Edit Config, then add the JSON block shown above. Restart the app after editing; the server appears in the tools list of a new conversation.
Claude Code (CLI) — register the server per-project or globally:
claude mcp add elasticsearch \
-e ES_URL=https://your-es:9200 -e ES_API_KEY=your-key \ -- npx @tocharianou/elasticsearch-mcp
Any other MCP client / platform integration — run in HTTP mode (MCP_TRANSPORT=http, see below) and point the client at http://host:port/mcp; this is the recommended shape for containerized platforms, one server instance per cluster connection.
Credentials hygiene — the env vars end up in your client's config file in plain text. Prefer a scoped, read-only API key (see *Elasticsearch Access Control* below) over superuser credentials.
Method 3: HTTP Streamable Mode (NEW in v0.3.0)
Run the server as a standalone HTTP service for remote access and API integration:
# Start HTTP server (default port 3000)
MCP_TRANSPORT=http \ ES_URL=your-elasticsearch-url \ ES_USERNAME=elastic \ ES_PASSWORD=your_pass \ npx @tocharianou/elasticsearch-mcp
Or with custom port and host
MCP_TRANSPORT=http \ MCP_HTTP_PORT=9000 \ MCP_HTTP_HOST=0.0.0.0 \ ES_URL=your-elasticsearch-url \ ES_USERNAME=elastic \ ES_PASSWORD=your_pass \ npx @tocharianou/elasticsearch-mcp
**HTTP Streamable
冒頭だけを表示しています。続きはリポジトリで読めます