Elasticsearch
Elasticsearch MCP is Elastic's own stdio server that lets an assistant list indices, read mappings and run search queries against an Elasticsearch cluster you already operate. It ships on npm as @elastic/mcp-server-elasticsearch and speaks to your cluster over HTTP with either an API key or basic auth. It is a query client, not a cluster admin tool.
How we started it
npx -y @elastic/mcp-server-elasticsearchUse it only if you already have a cluster URL and an API key ready before the assistant ever launches it, because it will not start without them. When we booted it with a clean environment it exited with code 1 during config parsing, complaining that the Elasticsearch URL cannot be empty and then that the same empty string was an invalid URL format. That is a defensible design: a search client with no cluster is nothing. The cost is that you get no tool list, no capability discovery and no way to evaluate the thing until you have pointed it at real infrastructure.
Use it if
Skip it if
The bill for your context window
Nobody can quote you a Context Tax for this one. The server never completed initialize, so tools/list never happened and the measured token estimate is zero by absence rather than by thrift. Judge that against the batch's heaviest listing, Notion, whose tool schemas alone dwarf the median: you cannot know which side of that line Elasticsearch falls on until you give it a cluster. Reason it out from the shape instead. A search server needs a query tool carrying Elasticsearch query DSL in its schema description, and DSL is verbose, so expect the tool payload to be dominated by one or two entries rather than spread thin across many small ones.
Setup reality
The npm install printed a deprecation notice for @elastic/mcp-server-elasticsearch@0.3.1 saying the package is deprecated and pointing at the GitHub README for how to run v0.4.0 or later, so the plain npx invocation we used is already the old path. Then it read its config and stopped: Elasticsearch URL cannot be empty, path url, followed by an invalid URL format error on the same field. The harness deliberately runs with a clean environment and no secrets, so that failure is expected rather than a bug. To get past it you need the cluster URL in the environment plus one of an API key or a username and password, and for a self-signed cluster certificate you will need the CA path too. Our probe scraped no environment variable names out of stderr, because the server validates a parsed config object and reports field paths instead of the variables that fill them.
Questions people ask
Why did the Elasticsearch MCP server fail to start?
We ran it with an empty environment and it exited with code 1 before initialize, reporting that the Elasticsearch URL cannot be empty and that the empty value was an invalid URL. It validates its configuration at startup rather than at first tool call.
Which environment variables does it need?
At minimum the cluster URL, plus credentials: an API key, or a username and password. Our probe recorded no variable names from stderr because the errors name config fields, not variables, so check the README for the exact names your version expects.
Is the npm package the right way to run it?
Not any more, by Elastic's own account. Installing it surfaced a deprecation notice on version 0.3.1 directing you to the GitHub README for running v0.4.0 or later, so read that before you pin anything into a client config.
Can I let an assistant write queries against production?
Technically yes, and you should think hard first. Give it a read-scoped API key restricted to the indices you care about; a model that guesses at a wide aggregation on a large index costs you cluster time, and one with write scope costs you more than that.
Other databases servers we started
How this page is made: the server is spawned as an unprivileged user with a clean environment and no credentials, then asked for its tools, resources and prompts over stdio. Token figures are estimates at four characters per token, not a tokenizer count. One run, one machine. Corrections: contact the desk.