{"_id":"@dylansoong/elasticsearch-mcp","name":"@dylansoong/elasticsearch-mcp","dist-tags":{"latest":"0.8.0"},"versions":{"0.8.0":{"name":"@dylansoong/elasticsearch-mcp","description":"Elasticsearch MCP Server with full version support (ES 5.x-9.x) and comprehensive API access","version":"0.8.0","mcpName":"io.github.TocharianOU/elasticsearch","license":"Apache-2.0","author":{"name":"TocharianOU","email":"tocharian139@protonmail.com"},"type":"module","main":"dist/index.js","module":"dist/index.js","bin":{"elasticsearch-mcp":"dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/TocharianOU/elasticsearch-mcp.git"},"bugs":{"url":"https://github.com/TocharianOU/elasticsearch-mcp/issues"},"homepage":"https://github.com/TocharianOU/elasticsearch-mcp#readme","keywords":["elasticsearch","search","mcp","mcp-server"],"scripts":{"build":"tsc && shx chmod +x dist/*.js","prepare":"npm run build","prepublishOnly":"npm run build && npm run license-checker","watch":"tsc --watch","start":"node dist/index.js","start:http":"MCP_TRANSPORT=http node dist/index.js","inspector":"npx @modelcontextprotocol/inspector node dist/index.js","test":"npm run build","license-checker":"license-checker --production --onlyAllow='MIT;Apache-2.0;Apache1.1;ISC;BSD-3-Clause;BSD-2-Clause;0BSD;BlueOak-1.0.0;Unlicense'","license-header":"./scripts/check-spdx","generate-notice":"node ./scripts/generate-notice.js","release":"./scripts/create-release.sh","release:npm":"npm run build && tar -czf elasticsearch-mcp-v$npm_package_version.tar.gz dist logos LICENSE NOTICE.txt README.md package.json"},"dependencies":{"@elastic/elasticsearch":"^8.17.1","@elastic/elasticsearch-v8":"npm:@elastic/elasticsearch@^8.15.0","@elastic/elasticsearch-v7":"npm:@elastic/elasticsearch@^7.17.0","@elastic/elasticsearch-v6":"npm:@elastic/elasticsearch@^6.8.0","@elastic/elasticsearch-v5":"npm:@elastic/elasticsearch@^5.6.0","@modelcontextprotocol/sdk":"^1.22.0","@types/express":"^5.0.3","express":"^5.1.0","mcp-ssh":"^1.0.1","server-cmd":"^2.0.1","tiktoken":"^1.0.18"},"engines":{"node":">=18"},"devDependencies":{"@types/node":"22.13.15","license-checker":"^25.0.1","shx":"0.4.0","typescript":"5.8.2"},"publishConfig":{"access":"public"},"_id":"@dylansoong/elasticsearch-mcp@0.8.0","gitHead":"ee2c85135adc003ee3da1df9d8012a2c415e73e0","types":"./dist/index.d.ts","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-SJGtebfB+lYKrJ7lQWFDX3HRYbZyBbPVBDJZlSTnr7zZ23jeTH4cyTdj0JfwkSr/bIS/HgnikaZ1KnRndMQ4AQ==","shasum":"e38ca26033fb994daa2a668dc6412293feba1fb8","tarball":"https://registry.npmjs.org/@dylansoong/elasticsearch-mcp/-/elasticsearch-mcp-0.8.0.tgz","fileCount":54,"unpackedSize":594053,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDS6Q9/4FP4oee+pIFGFMEykSRQG0Bu8hwYeLONkNNNiAIgafWN5VwCiyPSrJ5wOBLtFmZf0X0VfCXKtx9wZ/TQC7A="}]},"_npmUser":{"name":"dylansoong","email":"dobbinsoong@gmail.com"},"directories":{},"maintainers":[{"name":"dylansoong","email":"dobbinsoong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/elasticsearch-mcp_0.8.0_1776432704674_0.09760152768202257"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-17T13:31:44.491Z","0.8.0":"2026-04-17T13:31:44.821Z","modified":"2026-04-17T13:31:45.116Z"},"maintainers":[{"name":"dylansoong","email":"dobbinsoong@gmail.com"}],"description":"Elasticsearch MCP Server with full version support (ES 5.x-9.x) and comprehensive API access","homepage":"https://github.com/TocharianOU/elasticsearch-mcp#readme","keywords":["elasticsearch","search","mcp","mcp-server"],"repository":{"type":"git","url":"git+https://github.com/TocharianOU/elasticsearch-mcp.git"},"author":{"name":"TocharianOU","email":"tocharian139@protonmail.com"},"bugs":{"url":"https://github.com/TocharianOU/elasticsearch-mcp/issues"},"license":"Apache-2.0","readme":"# Elasticsearch MCP Server\n[![npm version](https://badge.fury.io/js/@tocharianou%2Felasticsearch-mcp.svg)](https://www.npmjs.com/package/@tocharianou/elasticsearch-mcp)\n[![Downloads](https://img.shields.io/npm/dm/@tocharianou/elasticsearch-mcp.svg)](https://www.npmjs.com/package/@tocharianou/elasticsearch-mcp)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/TocharianOU/elasticsearch-mcp)\n\n> **Enhanced Elasticsearch MCP Server Solution - Security & Threat Analysis Focused**\n\nThis 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.\n\n**Key Security Features:**\n- Real-time threat detection and security monitoring\n- Advanced machine learning for anomaly detection  \n- Root cause analysis and attack chain tracking\n- Security incident investigation and forensics\n- Compliance monitoring and audit reporting\n\n---\n\n**Note:** This solution requires a valid Elasticsearch license (trial, platinum, or enterprise) and is designed for security professionals, SOC teams, and threat analysts.\n\nConnect 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.\n\n\n## Prerequisites\n\n* An Elasticsearch instance\n* **A valid Elasticsearch license (trial, platinum, enterprise) is required.**\n* Elasticsearch authentication credentials (API key or username/password)\n* MCP Client (e.g. Claude Desktop) or HTTP client for remote access\n\n> ⚠️ This project requires your Elasticsearch cluster to have a valid license. If you do not have a license, you can activate a trial license as shown below.\n\n## Multi-Version Elasticsearch Support\n\n**Automatically supports Elasticsearch 5.x - 9.x with intelligent version detection:**\n\n| Version | Status | Client | Notes |\n|---------|--------|--------|-------|\n| ES 5.x | ✅ | 5.6.22 | EOL - Basic tools only |\n| ES 6.x | ✅ | 6.8.8 | EOL - ILM available (6.6+) |\n| ES 7.x | ✅ | 7.17.14 | LTS - Full features |\n| ES 8.x | ✅ | 8.19.1 | **Recommended** - Latest features, ES\\|QL (8.11+) |\n| ES 9.x+ | ✅ | Auto-fallback | Future-ready |\n\n**Key Features:**\n- **Automatic version detection** - No manual configuration needed\n- **Smart client selection** - Loads the right client for your ES version\n- **Adaptive features** - Disables unsupported tools (e.g., Data Streams on ES < 7.9, ES|QL on ES < 8.11)\n- **Version-specific optimizations** - Handles API differences transparently\n\n**What happens:**\n```\nConnect → Detect ES version → Load matching client → Register compatible tools\n```\n\n## SSL/TLS Connection\n\nTo connect to Elasticsearch with a self-signed certificate or in a test environment, you can set the following environment variable:\n\n```bash\nNODE_TLS_REJECT_UNAUTHORIZED=0\n```\n\n> ⚠️ This disables Node.js SSL certificate validation. Use only in development or testing environments. For production, always use a trusted CA certificate.\n\n## Installation & Setup\n\n\n2. **Start a Conversation**\n   - Open a new conversation in your MCP Client\n   - The MCP server should connect automatically\n   - You can now ask questions about your Elasticsearch data\n\n### Configuration Options\n\nThe Elasticsearch MCP Server supports the following configuration options:\n\n#### Elasticsearch Configuration\n\n| Environment Variable           | Description                                              | Required |\n|-------------------------------|----------------------------------------------------------|----------|\n| `ES_URL`                      | Your Elasticsearch instance URL                          | Yes      |\n| `ES_API_KEY`                  | Elasticsearch API key for authentication                 | No       |\n| `ES_USERNAME`                 | Elasticsearch username for basic authentication          | No       |\n| `ES_PASSWORD`                 | Elasticsearch password for basic authentication          | No       |\n| `ES_CA_CERT`                  | Path to custom CA certificate for Elasticsearch SSL/TLS  | No       |\n| `NODE_TLS_REJECT_UNAUTHORIZED`| Set to `0` to disable SSL certificate validation         | No       |\n\n#### Transport Mode Configuration (NEW in v0.3.0)\n\n| Environment Variable | Description                                      | Default   | Values          |\n|---------------------|--------------------------------------------------|-----------|-----------------|\n| `MCP_TRANSPORT`     | Transport mode selection                         | `stdio`   | `stdio`, `http` |\n| `MCP_HTTP_PORT`     | HTTP server port (when using HTTP transport)     | `3000`    | 1-65535         |\n| `MCP_HTTP_HOST`     | HTTP server host (when using HTTP transport)     | `localhost` | Any valid host  |\n\n**Transport Mode Details:**\n- **Stdio mode** (default): For Claude Desktop and local MCP clients\n- **HTTP Streamable mode**: Runs as a standalone HTTP server for remote access, API integration, and web applications\n\n#### OAuth Configuration (NEW)\n\nWhen running in HTTP mode, you can optionally enable OAuth 2.1 to protect the `/mcp` endpoint. This uses the MCP SDK's built-in OAuth server framework with PKCE, dynamic client registration, and token revocation.\n\n| Environment Variable  | Description                                                    | Default                | Required |\n|-----------------------|----------------------------------------------------------------|------------------------|----------|\n| `OAUTH_ENABLED`       | Enable OAuth protection on the HTTP endpoint                   | `false`                | No       |\n| `OAUTH_ISSUER_URL`    | OAuth issuer identifier URL                                    | `http://localhost:3000`| No       |\n| `OAUTH_CLIENT_ID`     | Pre-registered OAuth client ID (skips dynamic registration)    | —                      | No       |\n| `OAUTH_CLIENT_SECRET` | Pre-registered OAuth client secret                             | —                      | No       |\n\n**When OAuth is enabled:**\n- OAuth discovery metadata is served at `/.well-known/oauth-authorization-server`\n- Standard OAuth 2.1 endpoints are available: `/authorize`, `/token`, `/register`, `/revoke`\n- All `/mcp` POST and GET requests require a valid `Authorization: Bearer <token>` header\n- The `/health` endpoint remains unauthenticated and reports `oauth_enabled: true`\n- Dynamic client registration is supported via `POST /register`\n\n**When OAuth is disabled (default):** No authentication is required — behavior is identical to previous versions.\n\n### Quick Start\n\n#### Option 1: NPM Installation (Recommended)\n\n1. **Install globally via NPM**\n   ```bash\n   npm install -g @tocharianou/elasticsearch-mcp\n   ```\n\n2. **Run directly**\n   ```bash\n   npx @tocharianou/elasticsearch-mcp\n   ```\n\n#### Option 2: GitHub Release (Standalone Package)\n\n1. **Download release package**\n   - Go to [GitHub Releases](https://github.com/TocharianOU/elasticsearch-mcp/releases)\n   - Download the latest `.tar.gz` file and its checksum files (`.sha256` and `.sha512`)\n\n2. **Verify package integrity**\n   ```bash\n   shasum -a 256 -c elasticsearch-mcp-v*.tar.gz.sha256\n   # Should output: elasticsearch-mcp-v*.tar.gz: OK\n   ```\n\n3. **Extract and use**\n   ```bash\n   mkdir elasticsearch-mcp && cd elasticsearch-mcp\n   tar -xzf ../elasticsearch-mcp-v*.tar.gz\n   \n   # Run with your Elasticsearch credentials\n   ES_URL=https://localhost:9200 ES_API_KEY=your-key node dist/index.js\n   ```\n\n#### Option 3: Source Installation\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/TocharianOU/elasticsearch-mcp.git\n   cd elasticsearch-mcp\n   ```\n\n2. **Install Dependencies**\n   ```bash\n   npm install\n   ```\n\n3. **Build the Project**\n   ```bash\n   npm run build\n   ```\n\n4. **Configure Claude Desktop App**\n   - Open **Claude Desktop App**\n   - Go to **Settings > Developer > MCP Servers**\n   - Click `Edit Config` and add a new MCP Server with the following configuration:\n\n   **For NPM Installation:**\n   ```json\n   {\n     \"mcpServers\": {\n       \"elasticsearch-mcp-server\": {\n         \"command\": \"npx\",\n         \"args\": [\n           \"@tocharianou/elasticsearch-mcp\"\n         ],\n         \"env\": {\n           \"ES_URL\": \"your-elasticsearch-url\",\n           \"ES_USERNAME\": \"elastic\",\n           \"ES_PASSWORD\": \"your_pass\",\n           \"NODE_TLS_REJECT_UNAUTHORIZED\": \"0\"\n         }\n       }\n     }\n   }\n   ```\n\n   **For Source Installation:**\n   ```json\n   {\n     \"mcpServers\": {\n       \"elasticsearch-mcp-server-local\": {\n         \"command\": \"node\",\n         \"args\": [\n           \"/path/to/your/elasticsearch-mcp/dist/index.js\"\n         ],\n         \"env\": {\n           \"ES_URL\": \"your-elasticsearch-url\",\n           \"ES_USERNAME\": \"elastic\",\n           \"ES_PASSWORD\": \"your_pass\",\n           \"NODE_TLS_REJECT_UNAUTHORIZED\": \"0\"\n         }\n       }\n     }\n   }\n   ```\n\n6. **Debugging with MCP Inspector**\n   ```bash\n   ES_URL=your-elasticsearch-url ES_USERNAME=elastic ES_PASSWORD=your_pass npm run inspector\n   ```\n\n   This will start the MCP Inspector, allowing you to debug and analyze requests. You should see:\n\n   ```bash\n   Starting MCP inspector...\n   Proxy server listening on port 3000\n\n   MCP Inspector is up and running at http://localhost:5173\n   ```\n\n### Method 3: HTTP Streamable Mode (NEW in v0.3.0)\n\nRun the server as a standalone HTTP service for remote access and API integration:\n\n```bash\n# Start HTTP server (default port 3000)\nMCP_TRANSPORT=http \\\nES_URL=your-elasticsearch-url \\\nES_USERNAME=elastic \\\nES_PASSWORD=your_pass \\\nnpx @tocharianou/elasticsearch-mcp\n\n# Or with custom port and host\nMCP_TRANSPORT=http \\\nMCP_HTTP_PORT=9000 \\\nMCP_HTTP_HOST=0.0.0.0 \\\nES_URL=your-elasticsearch-url \\\nES_USERNAME=elastic \\\nES_PASSWORD=your_pass \\\nnpx @tocharianou/elasticsearch-mcp\n```\n\n**HTTP Streamable Mode Features:**\n- Exposes MCP server at `http://host:port/mcp` endpoint\n- Health check available at `http://host:port/health`\n- Session-based connection management\n- Supports both POST (JSON-RPC requests) and GET (SSE streams)\n- Compatible with any HTTP client or MCP SDK\n\n**Example HTTP client usage:**\n```javascript\n// Initialize connection\nconst response = await fetch('http://localhost:3000/mcp', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\n    jsonrpc: '2.0',\n    method: 'initialize',\n    params: {\n      protocolVersion: '2024-11-05',\n      capabilities: {},\n      clientInfo: { name: 'my-client', version: '1.0.0' }\n    },\n    id: 1\n  })\n});\n\nconst sessionId = response.headers.get('mcp-session-id');\n\n// Subsequent requests include session ID\nconst toolsResponse = await fetch('http://localhost:3000/mcp', {\n  method: 'POST',\n  headers: {\n    'Content-Type': 'application/json',\n    'mcp-session-id': sessionId\n  },\n  body: JSON.stringify({\n    jsonrpc: '2.0',\n    method: 'tools/list',\n    params: {},\n    id: 2\n  })\n});\n\n// Call a tool (e.g., list_indices)\nconst indicesResponse = await fetch('http://localhost:3000/mcp', {\n  method: 'POST',\n  headers: {\n    'Content-Type': 'application/json',\n    'mcp-session-id': sessionId\n  },\n  body: JSON.stringify({\n    jsonrpc: '2.0',\n    method: 'tools/call',\n    params: {\n      name: 'list_indices',\n      arguments: {}\n    },\n    id: 3\n  })\n});\n```\n\n### Method 4: HTTP Streamable Mode with OAuth\n\nEnable OAuth 2.1 protection on the HTTP endpoint to require client authentication:\n\n```bash\n# Start HTTP server with OAuth enabled\nOAUTH_ENABLED=true \\\nOAUTH_ISSUER_URL=http://localhost:3000 \\\nMCP_TRANSPORT=http \\\nES_URL=your-elasticsearch-url \\\nES_USERNAME=elastic \\\nES_PASSWORD=your_pass \\\nnpx @tocharianou/elasticsearch-mcp\n\n# With a pre-registered client (skips dynamic registration)\nOAUTH_ENABLED=true \\\nOAUTH_CLIENT_ID=my-app \\\nOAUTH_CLIENT_SECRET=my-secret \\\nMCP_TRANSPORT=http \\\nES_URL=your-elasticsearch-url \\\nES_USERNAME=elastic \\\nES_PASSWORD=your_pass \\\nnpx @tocharianou/elasticsearch-mcp\n```\n\n**OAuth flow for clients:**\n1. **Register** (if no pre-registered client): `POST /register` with redirect URIs\n2. **Authorize**: `GET /authorize?response_type=code&client_id=...&code_challenge=...&redirect_uri=...`\n3. **Exchange code for token**: `POST /token` with authorization code and PKCE verifier\n4. **Use the token**: Include `Authorization: Bearer <access_token>` on all `/mcp` requests\n5. **Refresh**: `POST /token` with refresh token when the access token expires (1 hour)\n6. **Revoke**: `POST /revoke` to invalidate tokens\n\nA ready-to-use startup script with OAuth is available at [`start-http-examp.sh`](start-http-examp.sh).\n\n## Available Tools\n\n| Tool | Description | Min Version |\n|------|-------------|-------------|\n| `list_indices` | List indices with pattern filter, health filter, sorting and token-aware summary | ES 5.x+ |\n| `get_mappings` | Get field mappings with flat/tree/raw modes, field filtering and multi-index compare | ES 5.x+ |\n| `es_search` | Full Query DSL search with auto-highlight on text/vector fields | ES 5.x+ |\n| `execute_es_api` | Execute any ES REST endpoint directly (GET/POST/PUT/DELETE/HEAD) | ES 5.x+ |\n| `get_shards` | Shard info with health analysis, problem detection and recommendations | ES 5.x+ |\n| `list_data_streams` | List and analyze Data Streams with ILM info and backing index details | ES 7.9+ |\n| `esql_query` | Execute ES\\|QL pipe-based queries with tabular output and parameterised support | **ES 8.11+** |\n\n> Tools not supported by your cluster version are automatically skipped at startup.\n\n### ES|QL Query Tool (`esql_query`)\n\nES|QL is Elasticsearch's modern pipe-based query language, ideal for analytics and data exploration without complex JSON DSL.\n\n**Example queries:**\n```\nFROM logs-* | WHERE level == \"error\" | STATS count = COUNT(*) BY service | SORT count DESC | LIMIT 20\nFROM metrics-* | WHERE @timestamp > NOW() - 1 hour | STATS avg_cpu = AVG(cpu.usage) BY host.name\nFROM auditbeat-* | WHERE event.action == \"user_login\" AND event.outcome == \"failure\" | LIMIT 50\n```\n\n**Parameters:**\n- `query` — the ES|QL string (required)\n- `params` — positional parameters replacing `?` placeholders (optional)\n- `include_types` — include column type info in output (optional, default `false`)\n- `break_token_rule` — bypass token limit for large results (optional, default `false`)\n\n> Automatically registered only on ES 8.11+ clusters.\n\n## Contributing\n\nWe welcome contributions from the community! For details on how to contribute, please see [Contributing Guidelines](/docs/CONTRIBUTING.md).\n\n## How It Works\n\n1. The MCP Client analyzes your request and determines which Elasticsearch operations are needed.\n2. The MCP server comunicate with ES.\n3. The MCP Client processes the results and presents them in a user-friendly format, including highlights, aggregation summaries, and anomaly insights.\n\n## Security Analysis Examples\n\n> [!TIP]\n> Here are security-focused queries you can try with your MCP Client.\n\n**Threat Detection:**\n* \"Analyze brute force attack attempts in the past 24 hours\"\n* \"Detect abnormal login behavior and suspicious IP addresses in the system\"\n* \"Identify potential SQL injection attack patterns and malicious requests\"\n* \"Discover DDoS attack signatures and traffic anomalies in network flows\"\n\n**Root Cause Analysis:**\n* \"Trace the complete attack chain and impact scope for specific security incidents\"\n* \"Analyze root causes and propagation paths of system failures\"\n* \"Identify data breach sources and involved sensitive information\"\n* \"Investigate user privilege abuse incidents with timeline and operation records\"\n\n**Threat Intelligence:**\n* \"Create machine learning models to detect zero-day attacks and unknown threats\"\n* \"Establish behavioral baselines and identify activities deviating from normal patterns\"\n* \"Analyze threat levels and attack history of malicious domains and IP addresses\"\n* \"Detect behavioral characteristics and attack patterns of Advanced Persistent Threats (APT)\"\n\n**Real-time Monitoring:**\n* \"Monitor active threats and ongoing attacks in the current system\"\n* \"Detect abnormal data access patterns and privilege escalation behaviors\"\n* \"Discover suspicious network communications and data exfiltration activities\"\n* \"Identify security causes of abnormal system resource consumption and performance degradation\"\n\n## Security Best Practices\n\n> [!WARNING]\n> Avoid using cluster-admin privileges. Create dedicated API keys with limited scope and apply fine-grained access control at the index level to prevent unauthorized data access.\n\n### Package Integrity Verification\n\nWhen downloading release packages, always verify checksums to ensure integrity:\n\n```bash\n# Verify SHA256 checksum\nshasum -a 256 -c elasticsearch-mcp-vX.Y.Z.tar.gz.sha256\n\n# Verify SHA512 checksum\nshasum -a 512 -c elasticsearch-mcp-vX.Y.Z.tar.gz.sha512\n```\n\nThis protects against:\n- Corrupted downloads\n- Tampered packages\n- Man-in-the-middle attacks\n\n### Elasticsearch Access Control\n\nYou can create a dedicated Elasticsearch API key with minimal permissions to control access to your data:\n\n```POST /_security/api_key\n{\n  \"name\": \"es-mcp-server-access\",\n  \"role_descriptors\": {\n    \"mcp_server_role\": {\n      \"cluster\": [\n        \"monitor\"\n      ],\n      \"indices\": [\n        {\n          \"names\": [\n            \"index-1\",\n            \"index-2\",\n            \"index-pattern-*\"\n          ],\n          \"privileges\": [\n            \"read\",\n            \"view_index_metadata\"\n          ]\n        }\n      ]\n    }\n  }\n}\n```\n\n## License\n\nThis project is licensed under the Apache License 2.0.\n\n## Troubleshooting\n\n* Ensure your MCP configuration is correct.\n* Verify that your Elasticsearch URL is accessible from your machine.\n* Check that your authentication credentials (API key or username/password) have the necessary permissions.\n* If using SSL/TLS with a custom CA, verify that the certificate path is correct and the file is readable.\n* Look at the terminal output for error messages.\n\nIf you encounter issues, feel free to open an issue on the GitHub repository.\n\n## Running with a Trial License\n\nIf your Elasticsearch cluster does not have a valid license, you can activate a 30-day trial license with the following command:\n\n```bash\ncurl -X POST -u elastic:your_password \\\n  -k \"https://your-es-host:9200/_license/start_trial?acknowledge=true\"\n```\n\n- Replace `your_password` and `your-es-host` with your actual credentials and host.\n- This will enable all features for 30 days.\n\n> **Note:** This project will not start if your cluster does not have a valid license (trial, platinum, enterprice etc.).\n","readmeFilename":"README.md","_rev":"1-4382f0efd749d4cb3e33424d8c36fd97"}