io.github.CloudCorpRecords/indexsearch
Elasticsearch tools: indices, mappings, query DSL search, ES|QL, and shards.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
@reneturcios/indexsearchclaude mcp add indexsearch -- npx -y @reneturcios/indexsearch@0.1.0 mcp
{
"mcpServers": {
"indexsearch": {
"command": "npx",
"args": [
"-y",
"@reneturcios/indexsearch@0.1.0",
"mcp"
]
}
}
}
ghcr.io/cloudcorprecords/indexsearch:0.1.0claude mcp add indexsearch -- docker run -i --rm ghcr.io/cloudcorprecords/indexsearch:0.1.0 mcp
{
"mcpServers": {
"indexsearch": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/cloudcorprecords/indexsearch:0.1.0",
"mcp"
]
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
indexsearch
indexsearch gives an agent — or you, at a terminal — the five core Elasticsearch tools: see which indices exist, read an index's field mappings, run a search in query DSL, run an ES|QL query, and inspect shard placement. Everything goes through the cluster's own HTTP API; there is no bundled client library and no second query language to learn.
Each tool call is first mapped to a plain HTTP request — method, path,
and JSON body — and that mapping is the whole contract:
GET /_cat/indices?format=json, GET /{index}/_mapping,
POST /{index}/_search, POST /_query, GET /_cat/shards. Transport
is an injectable fetch function, which is what the test suite drives;
no live cluster is needed to verify behaviour, and no result is ever
invented when a cluster is unreachable or answers with an error.
Install
npx @reneturcios/indexsearch list-indices
Or run the container image:
docker run -i ghcr.io/cloudcorprecords/indexsearch
The container defaults to the MCP server (see below). Pass CLI
arguments to use it as a CLI instead, and pass the cluster settings as
environment variables (-e ES_URL=...).
Configuration
| Variable | Meaning | Default |
|---|---|---|
ES_URL | Cluster base URL | http://localhost:9200 |
INDEXSEARCH_URL | Fallback cluster base URL when ES_URL is unset | — |
ES_API_KEY | API key, sent as Authorization: ApiKey <key> | unset (no auth) |
CLI
# List indices
indexsearch list-indices
# Read one index's field mappings
indexsearch mappings products
# Search with query DSL (a bare clause, or a full {"query": ...} body)
indexsearch search products '{"match":{"name":"shoes"}}'
# Run an ES|QL query
indexsearch esql 'FROM products | SORT price DESC | LIMIT 5'
# Shard information for every index, or for one
indexsearch shards
indexsearch shards products
# Start the MCP server
indexsearch mcp
indexsearch --version
Exit codes: 0 on success, 1 when the request or the cluster
fails (the error names the HTTP status or the unreachable URL),
2 for usage errors.
Index names are validated before any request is made: names carrying
characters Elasticsearch forbids in index names (whitespace, /, *,
?, ", <, >, |, ,, #, :, \) are rejected locally.
MCP server
One bin serves both faces. The mcp subcommand starts a stdio MCP
server:
npx -y @reneturcios/indexsearch mcp
MCP client configuration:
{
"mcpServers": {
"indexsearch": {
"command": "npx",
"args": ["-y", "@reneturcios/indexsearch", "mcp"],
"env": { "ES_URL": "http://localhost:9200" }
}
}
}
Tools
| Tool | Required | Optional | HTTP request | What it does | |
|---|---|---|---|---|---|
list_indices | — | — | GET /_cat/indices?format=json | List all available indices | |
get_mappings | index | — | GET /{index}/_mapping | Get field mappings for an index | |
search | index, query (object) | — | POST /{index}/_search with { "query": ... } | Search using query DSL | |
esql | query (string) | — | POST /_query with { "query": ... } | Run an ES | QL query |
get_shards | — | index | GET /_cat/shards[/{index}]?format=json | Get shard information for all or specific indices |
Replies are returned as the cluster's parsed JSON. A non-JSON reply is
returned under a raw key rather than being dropped, and an empty
reply reads as an empty object.
Development
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network, no live cluster
npm run dev # run the CLI from source via tsx
Request construction, validation, header and body assembly, error surfacing, and settings resolution are all covered by tests that drive the core through a fake fetch and assert the exact paths and bodies.
License
MIT — see LICENSE.
Frequently asked questions
What is io.github.CloudCorpRecords/indexsearch?
Elasticsearch tools: indices, mappings, query DSL search, ES|QL, and shards.
How do I install io.github.CloudCorpRecords/indexsearch?
It runs on your machine. In Claude Code: claude mcp add indexsearch -- npx -y @reneturcios/indexsearch@0.1.0 mcp. For other clients, paste the JSON configuration from this page into their MCP settings.
Does io.github.CloudCorpRecords/indexsearch need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is io.github.CloudCorpRecords/indexsearch open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains io.github.CloudCorpRecords/indexsearch?
It is published by CloudCorpRecords. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.