About Elasticsearch MCP Server
Elasticsearch MCP Server connects MCP clients to Elasticsearch data across multiple teams and environments. It provides tools for searching and analyzing exceptions, logs, and trends, with configurable authentication and access restrictions.
Key features
- 01Search exceptions with filters and frequency sorting
- 02Analyze exceptions and suggest causes and fixes
- 03Track exception trends and service health
- 04Search application logs
- 05Configure teams, environments, and access rules
Use cases
- 01Investigate frequent errors in a service
- 02Review exception patterns across environments
- 03Find application logs by service and time
- 04Check an Elasticsearch connection
MCP support
Exposes five Elasticsearch operations as tools to MCP clients. Supports both STDIO and HTTP+SSE transports.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEElasticsearch MCP Server
A Model Context Protocol (MCP) server for Elasticsearch integration with multi-team and multi-environment support. This server allows AI assistants to search exceptions, analyze patterns, and query logs across different teams and environments in a secure and organized way.
Features
- Multi-Team Support: Configure multiple teams with their own Elasticsearch clusters
- Multi-Environment Support: Support for development, staging, production environments per team
- Exception Search: Flexible exception search with filtering and frequency sorting
- Exception Analysis: Deep analysis of specific exceptions with cause and solution suggestions
- Trend Analysis: Analyze exception patterns, frequency trends, and service health
- Log Search: Search application logs with various filters
- Connection Testing: Test Elasticsearch connections for teams and environments
- Flexible Authentication: Support for API keys and username/password authentication
- HTTP and STDIO Transport: Support for both HTTP+SSE and STDIO transport protocols
Installation
npm install
Configuration
Environment Variables
LOG_LEVEL: Logging level (default:info) - handled directly by the loggerHTTP_PATH_PREFIX: HTTP path prefix (default:/)TEAMS_CONFIG_PATH: Path to teams configuration file (optional)PORT: HTTP server port (default:3000)
Teams Configuration
Create a teams-config.json file based on teams-config.example.json:
{
"server": {
"name": "elasticsearch-mcp",
"version": "1.0.0"
},
"teams": {
"team-alpha": {
"teamId": "team-alpha",
"teamName": "Team Alpha",
"defaultEnvironment": "production",
"environments": {
"staging": {
"node": "https://alpha-staging-es.company.com",
"apiKey": "your-api-key"
},
"production": {
"node": "https://alpha-prod-es.company.com",
"apiKey": "your-api-key"
}
},
"indexPatterns": {
"exceptions": ["alpha-logs-*", "alpha-exceptions-*"],
"applications": ["alpha-apm-*", "alpha-metrics-*"],
"logs": ["alpha-app-logs-*"]
},
"maxSearchResults": 50,
"allowedOperations": ["search_exceptions", "analyze_exception", "analyze_trends", "search_logs", "test_connection"]
}
}
}
Configuration Options
- teamId: Unique identifier for the team
- teamName: Human-readable team name
- defaultEnvironment: Default environment to use when none specified
- environments: Elasticsearch connection configurations per environment
- node: Elasticsearch cluster URL
- apiKey: API key for authentication (optional)
- username/password: Basic authentication (optional)
- maxRetries: Maximum retry attempts (default: 3)
- requestTimeout: Request timeout in milliseconds (default: 30000)
- indexPatterns: Index patterns for different data types
- exceptions: Patterns for exception/error logs
- applications: Patterns for application metrics/APM data
- logs: Patterns for general application logs
- maxSearchResults: Maximum number of results to return (default: 50)
- allowedOperations: List of allowed operations for this team (optional)
Usage
STDIO Mode (for MCP clients)
npm run dev
# or
npm start
HTTP Mode (for web interfaces)
npm run start-http
# or
npm run dev -- --http
The HTTP server will be available at:
- SSE endpoint:
GET http://localhost:3000/sse - Messages endpoint:
POST http://localhost:3000/messages - Health check:
GET http://localhost:3000/health
Available Tools
1. search_exceptions 🔍
Flexible exception search with advanced filtering and sorting capabilities.
Parameters:
environment(optional): The environment to search inmessage(optional): Filter by exception message contentquery(optional): Search term for exception message or stack traceservice(optional): Filter by service nameseverity(optional): Filter by log severity leveltimeRange(optional): Custom time rangestart: Start time in ISO formatend: End time in ISO format
timeframe(optional): Predefined time frame (1h,6h,12h,24h,7d)limit(optional): Number of results to return (default: 20, max: 100)sortByFrequency(optional): Sort by frequency (most frequent first)
Use Cases:
- "Welche Exceptions passen zu diesem Commit/Pull Request?"
- "Zeige mir alle Database-Exceptions der letzten 6 Stunden"
- "Finde die häufigsten Exceptions im User-Service"
2. analyze_exception 🔬
Deep analysis of a specific exception with causes and solution suggestions.
Parameters:
environment(optional): The environment to analyzeexceptionMessage(required): The specific exception message to analyzetimeframe(optional): Time frame for analysis (default:24h)
Use Cases:
- "Analysiere diese Exception: 'NullPointerException in UserService'"
- "Was ist die Ursache für 'Connection timeout' Fehler?"
3. analyze_trends 📈
Analyze exception patterns, frequency trends, and service health over time.
Parameters:
environment(optional): The environment to analyzetimeRange(optional): Custom time range for analysistimeframe(optional): Predefined time frame (default:24h)analysisType(optional): Type of analysis (exceptions,services,both)services(optional): List of specific services to analyze
Use Cases:
- "Welche Exceptions sind in den letzten 24h häufiger aufgetreten?"
- "Welche Services werfen in letzter Zeit mehr Exceptions?"
- "Zeige mir die Exception-Trends für das Payment-System"
4. search_logs 📋
Search general application logs with filtering capabilities.
Parameters:
environment(optional): The environment to search inmessage(optional): Filter by log message contentservice(optional): Filter by service nametimeRange(optional): Time range for search (defaults to last 1 hour)
Use Cases:
- "Zeige mir alle Logs vom User-Service der letzten Stunde"
- "Suche nach Logs mit 'payment failed'"
5. test_connection 🔌
Test Elasticsearch connection for a team and environment.
Parameters:
environment(optional): The environment to test
Use Cases:
- "Teste die Verbindung zu Production"
- "Ist Elasticsearch erreichbar?"
🚀 Common Prompts & Use Cases
Exception Investigation
"Welche Exceptions sind in den letzten 24h häufiger aufgetreten?"
→ Uses: analyze_trends with analysisType="exceptions"
"Mir ist diese Exception 'OutOfMemoryError' aufgefallen, finde mehr über sie heraus"
→ Uses: analyze_exception with exceptionMessage="OutOfMemoryError"
"Welche Exceptions passen zu diesem API-Endpoint /users/profile?"
→ Uses: search_exceptions with query="/users/profile"
Service Health Monitoring
"Welche Services werfen in letzter Zeit mehr Exceptions?"
→ Uses: analyze_trends with analysisType="services"
"Zeige mir alle Exceptions vom Payment-Service der letzten 6 Stunden"
→ Uses: search_exceptions with service="payment-service" and timeframe="6h"
Debugging & Troubleshooting
"Suche nach Database-Connection-Errors der letzten 24h"
→ Uses: search_exceptions with query="database connection" and timeframe="24h"
"Analysiere die häufigsten Exceptions im User-Service"
→ Uses: search_exceptions with service="user-service" and sortByFrequency=true
🛠️ Development
Code Quality
This project maintains high code quality standards:
# Run all quality checks
npm run check
# Individual checks
npm run typecheck # TypeScript type checking
npm run lint # ESLint code analysis
npm run format:check # Prettier formatting check
# Auto-fix issues
npm run lint:fix # Fix ESLint issues
npm run format # Format code with Prettier
Building
# Build the project
npm run build
# Clean build artifacts
npm run clean
Scripts Overview
npm run dev- Start development server with hot reloadnpm run build- Build for productionnpm run start- Build and start production servernpm run cli- Run the CLI toolnpm run check- Run all quality checks
Architecture
The server is built with a modular architecture:
- ConfigManager: Handles team configuration loading and validation
- ElasticsearchService: Manages Elasticsearch connections and queries
- MCP Tools: Individual tools for different operations (5 optimized tools)
- HTTP Server: Provides HTTP+SSE transport for web interfaces
- STDIO Transport: Provides STDIO transport for MCP clients
Tool Design Philosophy
The tools are designed with these principles:
- Short, memorable names (11-17 characters)
- Clear separation of concerns (search vs. analyze vs. trends)
- Flexible parameters to support various use cases
- No functional duplication between tools
Security Considerations
- Store sensitive credentials (API keys, passwords) securely
- Use environment variables for sensitive configuration
- Consider network security for Elasticsearch connections
- Implement proper access controls per team
- Use the
allowedOperationsconfiguration to restrict team capabilities
Error Handling
The server includes comprehensive error handling:
- Configuration validation on startup
- Connection error handling with retries
- Graceful degradation for unavailable services
- Detailed logging for troubleshooting
License
MIT
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Run linting and formatting
- Submit a pull request
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.