odigo-elastic-s2l-mcp
Provides tools for searching and querying Elasticsearch indices, including Query DSL and ES|QL, with a semantic layer for field descriptions and business rules.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@odigo-elastic-s2l-mcpsearch for failed transactions in the last 24 hours"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
odigo-elastic-s2l-mcp
MCP Elasticsearch Server with Semantic S2L Layer
Copyright 2025 Odigo SAS — Developed by Régis BEGUIN (regis.beguin@odigo.com)
A generic Model Context Protocol (MCP) server that connects LLMs to Elasticsearch, with a Semantic-to-Lexical (S2L) layer that translates technical field names into business knowledge — without hardcoding any domain logic in the server itself.
How it works
The S2L layer is a simple JSON file (field_descriptions.json) that provides:
Field descriptions: human-readable explanations of each Elasticsearch field
Business rules: mandatory filters, billing criteria, error codes, timezone handling, index patterns — anything the LLM needs to build correct queries autonomously
The LLM reads this semantic layer via get_field_descriptions() and builds Query DSL or ES|QL queries on its own. No business logic is hardcoded in the server.
LLM ──► get_field_descriptions() ──► reads business rules from JSON
LLM ──► get_mappings() ──► reads enriched schema
LLM ──► search() / esql() ──► executes autonomous queriesAvailable Tools
Tool | Description |
| Cluster info and available features (version, ES|QL support) |
| List available indices |
| Index schema enriched with S2L field descriptions |
| Field descriptions + business rules from |
| Query DSL search |
| ES|QL query (Elasticsearch >= 8.11.0 only) |
| Shard information |
Requirements
Python 3.11+
Elasticsearch >= 8.10.4
Docker or Podman
Quick Start
1. Configure your S2L layer
Edit src/field_descriptions.json to describe your Elasticsearch fields and business rules:
{
"_business_rules": {
"_mandatory_filter": "All queries must include: { 'term': { 'status': 'active' } }",
"_index_pattern": "Target index pattern: my_data_index_*",
"_timezone": "Timestamps are stored in UTC."
},
"my_field": "Description of what this field means in your domain.",
"my_status_field": "Status: '0' = success, '1' = failure."
}2. Build the Docker image
chmod +x build.sh
./build.shOr with Podman:
CONTAINER_TOOL=podman ./build.sh3. Configure Claude Desktop
Edit %APPDATA%\Claude\claude_desktop_config.json (Windows) or
~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"elastic-s2l-mcp": {
"command": "docker",
"args": [
"run", "-i", "--rm", "--network", "host",
"-e", "ES_URL=http://your-elasticsearch-host:9200",
"-e", "ES_API_KEY=YOUR_API_KEY",
"elastic-s2l-mcp:latest"
]
}
}
}4. Or run directly with Python
pip install -r requirements.txt
ES_URL=http://localhost:9200 ES_API_KEY=YOUR_KEY python src/server.pyEnvironment Variables
Variable | Description | Default |
| Elasticsearch URL |
|
| Elasticsearch API key | (empty — no auth) |
| Path to the S2L JSON config file |
|
Project Structure
odigo-elastic-s2l-mcp/
├── src/
│ ├── server.py # MCP server (generic, no business logic)
│ └── field_descriptions.json # S2L semantic layer (your domain knowledge)
├── Dockerfile
├── requirements.txt
├── build.sh
├── lance_mcp.sh
├── export_image.sh
├── LICENSE
└── README.mdAbout
This project was developed as part of an R&D initiative at Odigo, a leading European cloud contact center software company.
Author: Régis BEGUIN — Revenue Assurance Engineer, Odigo
Contact: regis.beguin@odigo.com
License
Copyright 2025 Odigo SAS Developed by Régis BEGUIN (regis.beguin@odigo.com)
Licensed under the Apache License, Version 2.0.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rbeg1/odigo-elastic-s2l-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server