# Does "Serverless" mean it cant be used on self hosted intances?

**URL:** <https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267>\
**Category:** Elasticsearch\
**Created:** [February 27, 2026, 4:41pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267 "2026-02-27T16:41:00Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![ItsMeBrille](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/itsmebrille/32/147025_2.png) [@ItsMeBrille](https://discuss.elastic.co/u/ItsMeBrille)\
**Post date:** [February 27, 2026, 4:41pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267/1 "2026-02-27T16:41:00Z")

</div>

Does the "Serverless" tag mean I can’t use those services on self hosted intances?

> **[Elastic Agent Builder MCP server | Elastic Docs](https://www.elastic.co/docs/explore-analyze/ai-features/agent-builder/mcp-server)**
>
> Learn how to connect Claude Desktop, Cursor, and VS Code to Elastic Agent Builder tools using the Model Context Protocol (MCP) server.

I want to connect to the MCP endpoint /api/agent\_builder/mcp, but it says the docs have the “tag” _Serverless._ Does this mean I cannot use it?

---

<div class="post-metadata">

**Author:** ![leandrojmp](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/leandrojmp/32/107231_2.png) [@leandrojmp](https://discuss.elastic.co/u/leandrojmp)\
**Post date:** [February 27, 2026, 6:08pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267/2 "2026-02-27T18:08:16Z")

</div>

Hello and welcome,

> [@ItsMeBrille](#):
>
> I want to connect to the MCP endpoint /api/agent\_builder/mcp, but it says the docs have the “tag” _Serverless._ Does this mean I cannot use it?

The tag `Serverless` means that this feature is available in the _Serverless_ offering from Elastic, but this also has the tack `Stack` and the version, which means that it is also available on other deployment types like Elastic Cloud Hosted, ECE, ECK, and Self-managed.

 ![image](https://us1.discourse-cdn.com/elastic/original/3X/6/e/6e973bfca774a6ed7be00c93278ede75453acbf3.png)

---

<div class="post-metadata">

**Author:** ![ItsMeBrille](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/itsmebrille/32/147025_2.png) [@ItsMeBrille](https://discuss.elastic.co/u/ItsMeBrille)\
**Post date:** [February 27, 2026, 7:43pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267/3 "2026-02-27T19:43:34Z")

</div>

Hey, thanks for fast response. That is good news.

When reading the docs, it is hard to find out where on my instance I can add the service.

The docs mentions the Tools GUI, refering to Tools in Elastic Agent Builder, but I dont understand how to navigate to such meny.

Any suggestions for where to start so I can get a better understanding?

---

<div class="post-metadata">

**Author:** ![leandrojmp](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/leandrojmp/32/107231_2.png) [@leandrojmp](https://discuss.elastic.co/u/leandrojmp)\
**Post date:** [February 27, 2026, 7:51pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267/4 "2026-02-27T19:51:09Z")

</div>

The MCP Server and Agent Builder are Kibana features, they run in Kibana.

This could be more clear, but it is in the endpoint as it mentiones KIBANA\_URL.

 ![image](https://us1.discourse-cdn.com/elastic/original/3X/2/b/2b0fda51b8bf2b01710c750568ad122d124ee2a0.png)

The Agent Builder is an App in Kibana.

Keep in mind that those features require an Enterprise license, you can test using a trial license for tests.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [March 2, 2026, 12:56pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267/5 "2026-03-02T12:56:17Z")

</div>



---

<div class="post-metadata">

**Author:** ![ItsMeBrille](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/itsmebrille/32/147025_2.png) [@ItsMeBrille](https://discuss.elastic.co/u/ItsMeBrille)\
**Post date:** [March 2, 2026, 12:56pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267/6 "2026-03-02T12:56:48Z")

</div>

I am not able to get this working.

Should this be the URL for my cloud-hosted instance?

![image](https://us1.discourse-cdn.com/elastic/original/3X/c/b/cb198da18f1e7a7d3a97b7c8587c84f8913a6bbe.png)

Do I have to install or enable it first, or should it be reachable from an out of the box installation?

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [March 2, 2026, 3:00pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267/7 "2026-03-02T15:00:10Z")

</div>



---

<div class="post-metadata">

**Author:** ![stephenb](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/stephenb/32/40856_2.png) [@stephenb](https://discuss.elastic.co/u/stephenb)\
**Post date:** [March 2, 2026, 3:10pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267/8 "2026-03-02T15:10:38Z")

</div>

HI @ItsMeBrille

What version are you on.

Use the Kibana Public Endpoint

 ![Screenshot 2026-03-02 at 7.03.53 AM](https://us1.discourse-cdn.com/elastic/original/3X/6/a/6a010949112a6d53958e6298eb666bc2cd5aca90.png)

You need a proper API key somthing like.

```auto
POST /_security/api_key
{
  "name": "my-mcp-api-key",
  "expiration": "30d",
  "role_descriptors": {
    "mcp-access": {
      "indices": [
        {
          "names": ["*"],
          "privileges": ["read", "view_index_metadata"]
        }
      ],
      "applications": [
        {
          "application": "kibana-.kibana",
          "privileges": ["feature_agentBuilder.read"],
          "resources": ["space:default"]
        }
      ]
    }
  }
}

```

Then I tested with curl... 🙂

```auto
curl -X POST -H "Authorization: ApiKey $API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "kbn-xsrf: true" "https://mycooldeploymentwithmcp.kb.us-west1.gcp.cloud.es.io/api/agent_builder/mcp" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \
| jq

  % Total % Received % Xferd Average Speed Time Time Time Current
                                 Dload Upload Total Spent Left Speed
100 8918 100 8872 100 46 57906 300 --:--:-- --:--:-- --:--:-- 58287
{
  "result": {
    "tools": [
      {
        "name": "platform_core_search",
        "description": "A powerful tool for searching and analyzing data within your Elasticsearch cluster.\nIt supports both full-text relevance searches and structured analytical queries.\n\nUse this tool for any query that involves finding documents, counting, aggregating, or summarizing data from a known index.\n\nExamples of queries:\n- \"find articles about serverless architecture\"\n- \"search for support tickets mentioning 'billing issue' 
...

```

---

<div class="post-metadata">

**Author:** ![ItsMeBrille](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/itsmebrille/32/147025_2.png) [@ItsMeBrille](https://discuss.elastic.co/u/ItsMeBrille)\
**Post date:** [March 2, 2026, 4:24pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267/9 "2026-03-02T16:24:08Z")

</div>

Thank you very much. It works now.

However, I noticed something wierd. I cannot access `/app/agent_builder/tools` without first adding an LLM as a connection. I belive this is a bug, as I want access to the MCP dashboard without using the LLM through Elastic connectors.

I solved it temporarily by adding an LLM, but I wish I didnt have to do it that way.

---

<div class="post-metadata">

**Author:** ![stephenb](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/stephenb/32/40856_2.png) [@stephenb](https://discuss.elastic.co/u/stephenb)\
**Post date:** [March 2, 2026, 5:16pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267/10 "2026-03-02T17:16:33Z")

</div>

@ItsMeBrille Exactly what version are you on?

---

<div class="post-metadata">

**Author:** ![ItsMeBrille](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/itsmebrille/32/147025_2.png) [@ItsMeBrille](https://discuss.elastic.co/u/ItsMeBrille)\
**Post date:** [March 2, 2026, 6:47pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267/11 "2026-03-02T18:47:53Z")

</div>

9.3.1

---

<div class="post-metadata">

**Author:** ![stephenb](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/stephenb/32/40856_2.png) [@stephenb](https://discuss.elastic.co/u/stephenb)\
**Post date:** [March 2, 2026, 7:15pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267/12 "2026-03-02T19:15:28Z")

</div>

That is a limitation to build tools through UI you can build them through the API and execute the tools via API

```auto
DELETE kbn:/api/agent_builder/tools/logs-count

POST kbn:/api/agent_builder/tools
{
  "id": "logs-count",
  "type": "esql",
  "description": "Counts Logs",
  "tags": [
    "incident",
    "timeline",
    "observability"
  ],
  "configuration": {
    "query": "FROM logs-*-* | STATS count = COUNT(*)",
    "params": {}
  }
}

POST kbn://api/agent_builder/tools/_execute
{
 "tool_id": "logs-count",
   "tool_params": {

  }
}

```

result

```auto
{
  "results": [
    {
      "type": "query",
      "data": {
        "esql": "FROM logs-*-* | STATS count = COUNT(*)"
      },
      "tool_result_id": "oEZytM"
    },
    {
      "tool_result_id": "XFbIlX",
      "type": "tabular_data",
      "data": {
        "source": "esql",
        "query": "FROM logs-*-* | STATS count = COUNT(*)",
        "columns": [
          {
            "name": "count",
            "type": "long"
          }
        ],
        "values": [
          [
            84456890
          ]
        ]
      }
    }
  ]
}

```

---

<div class="post-metadata">

**Author:** ![ItsMeBrille](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/itsmebrille/32/147025_2.png) [@ItsMeBrille](https://discuss.elastic.co/u/ItsMeBrille)\
**Post date:** [March 2, 2026, 7:33pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267/13 "2026-03-02T19:33:07Z")

</div>

okok. I see that some of the mcp tools actually require an LLM, which I think is a wierd way to utilize MCP, but so be it.

Any reason why you limited it in the UI?

---

<div class="post-metadata">

**Author:** ![stephenb](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/stephenb/32/40856_2.png) [@stephenb](https://discuss.elastic.co/u/stephenb)\
**Post date:** [March 2, 2026, 7:38pm UTC](https://discuss.elastic.co/t/does-serverless-mean-it-cant-be-used-on-self-hosted-intances/385267/14 "2026-03-02T19:38:56Z")

</div>

Don't know ... 🙂  
It is not _I_ that limit it .... I think the simple reason is that from within  
Kibana / Elastic self contained workflow  
Agents Call Tools  
Agent need an LLM  
Think it is that simple  
Agree seems like you should be able to build a tool without an Agent  
You CAN via the API which if you have no Agent that will be the only way to Call  
So UI vs API ...  
I will pass on our you can certainly open a Bug / Feature request against the Kibana Repo.

BTW From Internal

> _We disable the ui without an llm, to try force you to connect an llm. Doesn’t need to have an llm for tools but there are some tools that require llm (search tool (index\_search type) for example)_  
> _We probably need a skip button. A workaround is just adding a connector with dummy details to enable_
