<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Configure the Grafana MCP server on Grafana Labs</title><link>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/</link><description>Recent content in Configure the Grafana MCP server on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/grafana/v13.0/developer-resources/mcp/configure/index.xml" rel="self" type="application/rss+xml"/><item><title>Authentication</title><link>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/authentication/</link><pubDate>Thu, 23 Apr 2026 10:03:11 +0200</pubDate><guid>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/authentication/</guid><content><![CDATA[&lt;h1 id=&#34;authentication&#34;&gt;Authentication&lt;/h1&gt;
&lt;p&gt;The Grafana MCP server needs credentials to call the Grafana API. Use a service account token (recommended) or a username and password.&lt;/p&gt;
&lt;h2 id=&#34;what-youll-achieve&#34;&gt;What you&amp;rsquo;ll achieve&lt;/h2&gt;
&lt;p&gt;You set the environment variables (or equivalent) so the server can authenticate to your Grafana instance. The same credentials apply whether you run the server with uvx, Docker, a binary, or Helm.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A Grafana instance (Grafana 9.0 or later).&lt;/li&gt;
&lt;li&gt;For token auth: a &lt;a href=&#34;/docs/grafana/latest/administration/service-accounts/#add-a-token-to-a-service-account-in-grafana&#34;&gt;service account&lt;/a&gt; with a token and the RBAC permissions needed for the tools you use.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;use-a-service-account-token&#34;&gt;Use a service account token&lt;/h2&gt;
&lt;p&gt;Set &lt;code&gt;GRAFANA_URL&lt;/code&gt; and &lt;code&gt;GRAFANA_SERVICE_ACCOUNT_TOKEN&lt;/code&gt; in the environment passed to the server.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GRAFANA_URL:&lt;/strong&gt; Your Grafana base URL (for example, &lt;code&gt;http://localhost:3000&lt;/code&gt; or &lt;code&gt;https://myinstance.grafana.net&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GRAFANA_SERVICE_ACCOUNT_TOKEN:&lt;/strong&gt; The token you created for the service account.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The deprecated &lt;code&gt;GRAFANA_API_KEY&lt;/code&gt; is still supported but will be removed in a future version; use &lt;code&gt;GRAFANA_SERVICE_ACCOUNT_TOKEN&lt;/code&gt; instead.&lt;/p&gt;
&lt;h2 id=&#34;use-username-and-password&#34;&gt;Use username and password&lt;/h2&gt;
&lt;p&gt;You can use basic auth by setting &lt;code&gt;GRAFANA_USERNAME&lt;/code&gt; and &lt;code&gt;GRAFANA_PASSWORD&lt;/code&gt; instead of a token. This is less suitable for automation; prefer a service account token when possible.&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../enable-and-disable-tools/&#34;&gt;Enable and disable tools&lt;/a&gt; to control which MCP tools are available.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../transports-and-addresses/&#34;&gt;Transports and addresses&lt;/a&gt; for stdio, SSE, and streamable-http.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="authentication">Authentication&lt;/h1>
&lt;p>The Grafana MCP server needs credentials to call the Grafana API. Use a service account token (recommended) or a username and password.&lt;/p>
&lt;h2 id="what-youll-achieve">What you&amp;rsquo;ll achieve&lt;/h2>
&lt;p>You set the environment variables (or equivalent) so the server can authenticate to your Grafana instance. The same credentials apply whether you run the server with uvx, Docker, a binary, or Helm.&lt;/p></description></item><item><title>Transports and addresses</title><link>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/transports-and-addresses/</link><pubDate>Thu, 23 Apr 2026 10:03:11 +0200</pubDate><guid>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/transports-and-addresses/</guid><content><![CDATA[&lt;h1 id=&#34;transports-and-addresses&#34;&gt;Transports and addresses&lt;/h1&gt;
&lt;p&gt;The Grafana MCP server supports three transports: stdio (default for local use), SSE, and streamable-http. Choose the one that matches how your MCP client connects.&lt;/p&gt;
&lt;h2 id=&#34;what-youll-achieve&#34;&gt;What you&amp;rsquo;ll achieve&lt;/h2&gt;
&lt;p&gt;You run the server with the right transport and, for SSE or streamable-http, the correct address and path so your client can connect.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The server installed (for example, &lt;a href=&#34;../../set-up/install-with-uvx/&#34;&gt;Install with uvx&lt;/a&gt; or &lt;a href=&#34;../../set-up/install-with-docker/&#34;&gt;Install with Docker&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;use-stdio-transport&#34;&gt;Use stdio transport&lt;/h2&gt;
&lt;p&gt;With stdio (the default when you run the binary or uvx), the server talks to the client over standard input and output. Use this when the client launches the server as a subprocess (for example, Claude Desktop, Cursor). No &lt;code&gt;--address&lt;/code&gt; or port is needed.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;mcp-grafana
# or
uvx mcp-grafana&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;use-sse-or-streamable-http-transport&#34;&gt;Use SSE or streamable-http transport&lt;/h2&gt;
&lt;p&gt;With &lt;code&gt;-t sse&lt;/code&gt; or &lt;code&gt;-t streamable-http&lt;/code&gt;, the server listens on an address (default &lt;code&gt;localhost:8000&lt;/code&gt;). Use &lt;code&gt;--address&lt;/code&gt; to change host and port, and optionally &lt;code&gt;--base-path&lt;/code&gt; or &lt;code&gt;--endpoint-path&lt;/code&gt; for path configuration.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;mcp-grafana -t sse
mcp-grafana -t streamable-http --address :9090&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Clients connect to the server URL (for example, &lt;code&gt;http://localhost:8000/sse&lt;/code&gt; for SSE). For streamable-http, the default endpoint path is &lt;code&gt;/mcp&lt;/code&gt; (override with &lt;code&gt;--endpoint-path&lt;/code&gt; if your client expects a different path).&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../server-tls-streamable-http/&#34;&gt;Server TLS (streamable-http)&lt;/a&gt; if you need HTTPS for the MCP server.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../client-tls-grafana-connection/&#34;&gt;Client TLS&lt;/a&gt; if Grafana is behind mTLS or custom certificates.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="transports-and-addresses">Transports and addresses&lt;/h1>
&lt;p>The Grafana MCP server supports three transports: stdio (default for local use), SSE, and streamable-http. Choose the one that matches how your MCP client connects.&lt;/p></description></item><item><title>Enable and disable tools</title><link>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/enable-and-disable-tools/</link><pubDate>Thu, 23 Apr 2026 14:05:09 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/enable-and-disable-tools/</guid><content><![CDATA[&lt;h1 id=&#34;enable-and-disable-tools&#34;&gt;Enable and disable tools&lt;/h1&gt;
&lt;p&gt;You can limit which tools the server exposes (to reduce context window use or lock down capabilities) and run the server in read-only mode.&lt;/p&gt;
&lt;h2 id=&#34;what-youll-achieve&#34;&gt;What you&amp;rsquo;ll achieve&lt;/h2&gt;
&lt;p&gt;You enable only the tool categories you need, or disable write operations globally with &lt;code&gt;--disable-write&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The server installed and configured (&lt;a href=&#34;../../set-up/&#34;&gt;Set up&lt;/a&gt; and &lt;a href=&#34;../authentication/&#34;&gt;Authentication&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;enable-optional-tool-categories&#34;&gt;Enable optional tool categories&lt;/h2&gt;
&lt;p&gt;Some tool categories are disabled by default:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;runpanelquery&lt;/strong&gt; – Run dashboard panel queries.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;examples&lt;/strong&gt; – Query examples for datasource types.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;clickhouse&lt;/strong&gt; – ClickHouse datasource tools.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;cloudwatch&lt;/strong&gt; – CloudWatch tools.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;searchlogs&lt;/strong&gt; – Search logs across ClickHouse and Loki.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;elasticsearch&lt;/strong&gt; – Elasticsearch query tool.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;influxdb&lt;/strong&gt; – InfluxDB query tool (Flux and InfluxQL).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;admin&lt;/strong&gt; – Admin tools (teams, users, roles, permissions).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;--enabled-tools&lt;/code&gt; &lt;strong&gt;replaces&lt;/strong&gt; the default list, so to add an optional category you must pass the full set. For example, to keep the defaults and also enable &lt;code&gt;runpanelquery&lt;/code&gt; and &lt;code&gt;examples&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;mcp-grafana --enabled-tools search,datasource,incident,prometheus,loki,alerting,dashboard,folder,oncall,asserts,sift,pyroscope,navigation,proxied,annotations,rendering,runpanelquery,examples&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Refer to &lt;a href=&#34;../command-line-flags/&#34;&gt;Command-line flags&lt;/a&gt; for the default list.&lt;/p&gt;
&lt;h2 id=&#34;disable-tool-categories&#34;&gt;Disable tool categories&lt;/h2&gt;
&lt;p&gt;Use &lt;code&gt;--disable-&amp;lt;category&amp;gt;&lt;/code&gt; to turn off a whole category (for example, &lt;code&gt;--disable-oncall&lt;/code&gt;, &lt;code&gt;--disable-alerting&lt;/code&gt;, &lt;code&gt;--disable-dashboard&lt;/code&gt;). For every flag, read-only behavior, and TLS-related flags, refer to &lt;a href=&#34;../command-line-flags/&#34;&gt;Command-line flags&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For tools that come from external MCP servers through Grafana (for example from Grafana Tempo), refer to &lt;a href=&#34;../proxied-tools/&#34;&gt;Proxied tools&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;run-in-read-only-mode&#34;&gt;Run in read-only mode&lt;/h2&gt;
&lt;p&gt;Use &lt;code&gt;--disable-write&lt;/code&gt; to disable all write operations. The server can still read dashboards, run queries, and list resources, but it cannot create or update dashboards, incidents, alert rules, annotations, or investigations.&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../introduction/&#34;&gt;Introduction&lt;/a&gt; for an overview of tools and RBAC.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../authentication/&#34;&gt;Configure authentication&lt;/a&gt; if you have not set credentials yet.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="enable-and-disable-tools">Enable and disable tools&lt;/h1>
&lt;p>You can limit which tools the server exposes (to reduce context window use or lock down capabilities) and run the server in read-only mode.&lt;/p></description></item><item><title>Client TLS (Grafana connection)</title><link>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/client-tls-grafana-connection/</link><pubDate>Thu, 23 Apr 2026 10:03:11 +0200</pubDate><guid>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/client-tls-grafana-connection/</guid><content><![CDATA[&lt;h1 id=&#34;client-tls-grafana-connection&#34;&gt;Client TLS (Grafana connection)&lt;/h1&gt;
&lt;p&gt;If your Grafana instance uses mTLS or a custom CA, configure the MCP server to use the correct certificates when it calls the Grafana API.&lt;/p&gt;
&lt;h2 id=&#34;what-youll-achieve&#34;&gt;What you&amp;rsquo;ll achieve&lt;/h2&gt;
&lt;p&gt;The server uses your client certificate and key (and optionally a CA file) for HTTPS requests to Grafana, or verifies Grafana’s server certificate with a custom CA.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Client certificate and key (and CA file if needed) for your Grafana endpoint.&lt;/li&gt;
&lt;li&gt;The server installed (binary or Docker with access to the cert files).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-client-tls&#34;&gt;Configure client TLS&lt;/h2&gt;
&lt;p&gt;Use these flags when starting the server:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;ndash;tls-cert-file&lt;/strong&gt; – Path to the client certificate file.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ndash;tls-key-file&lt;/strong&gt; – Path to the client private key file.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ndash;tls-ca-file&lt;/strong&gt; – Path to the CA certificate file for server verification.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ndash;tls-skip-verify&lt;/strong&gt; – Skip TLS verification (insecure; use only for testing).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;mcp-grafana \
  --tls-cert-file /path/to/client.crt \
  --tls-key-file /path/to/client.key \
  --tls-ca-file /path/to/ca.crt&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;With Docker, mount the cert directory and pass the paths inside the container (for example, &lt;code&gt;/certs/client.crt&lt;/code&gt;).&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../set-up/client-configuration-examples/&#34;&gt;Client configuration examples&lt;/a&gt; for full MCP JSON (binary and Docker) with TLS flags.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../server-tls-streamable-http/&#34;&gt;Server TLS (streamable-http)&lt;/a&gt; if you want HTTPS for the MCP server itself.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../authentication/&#34;&gt;Authentication&lt;/a&gt; for Grafana credentials.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../command-line-flags/&#34;&gt;Command-line flags&lt;/a&gt; for all TLS-related flags.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="client-tls-grafana-connection">Client TLS (Grafana connection)&lt;/h1>
&lt;p>If your Grafana instance uses mTLS or a custom CA, configure the MCP server to use the correct certificates when it calls the Grafana API.&lt;/p></description></item><item><title>Proxied tools</title><link>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/proxied-tools/</link><pubDate>Thu, 23 Apr 2026 10:03:11 +0200</pubDate><guid>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/proxied-tools/</guid><content><![CDATA[&lt;h1 id=&#34;proxied-tools&#34;&gt;Proxied tools&lt;/h1&gt;
&lt;p&gt;Proxied tools are additional MCP tools that this server does not implement itself. It loads them from an MCP server that sits behind a Grafana datasource, using Grafana’s datasource proxy. Your client still talks only to this MCP server; the extra tools show up alongside the built-in ones.&lt;/p&gt;
&lt;p&gt;Today only the &lt;a href=&#34;/docs/tempo/latest/api_docs/mcp-server/&#34;&gt;Grafana Tempo MCP server&lt;/a&gt; is supported as a proxied source. Adding another datasource type for proxied tools requires a change to this server, not Grafana configuration alone.&lt;/p&gt;
&lt;h2 id=&#34;what-youll-achieve&#34;&gt;What you&amp;rsquo;ll achieve&lt;/h2&gt;
&lt;p&gt;Enable the MCP server in Grafana Tempo and use &lt;code&gt;--disable-proxied&lt;/code&gt; when you want proxied tools disabled.&lt;/p&gt;
&lt;h2 id=&#34;proxy-the-grafana-tempo-mcp-server&#34;&gt;Proxy the Grafana Tempo MCP Server&lt;/h2&gt;
&lt;p&gt;Complete &lt;a href=&#34;../authentication/&#34;&gt;authentication&lt;/a&gt; to Grafana (&lt;code&gt;GRAFANA_URL&lt;/code&gt; and credentials). Do not pass &lt;code&gt;--disable-proxied&lt;/code&gt; if you want proxied tools loaded.&lt;/p&gt;
&lt;p&gt;Enable Tempo’s MCP server so the proxy path responds (for example &lt;code&gt;query_frontend.mcp_server.enabled&lt;/code&gt; in YAML or flag &lt;code&gt;query-frontend.mcp-server.enabled&lt;/code&gt;). Refer to the &lt;a href=&#34;/docs/tempo/latest/api_docs/mcp-server/#configuration&#34;&gt;Tempo MCP server&lt;/a&gt; documentation.&lt;/p&gt;
&lt;p&gt;Add a Tempo datasource in Grafana if you do not already have one.&lt;/p&gt;
&lt;p&gt;Tools appear as &lt;code&gt;tempo_&amp;lt;remote-tool-name&amp;gt;&lt;/code&gt;. They are not listed in the static &lt;a href=&#34;../../reference/mcp-tools-table/&#34;&gt;MCP tools reference&lt;/a&gt;. Use your MCP client to list tools from the server.&lt;/p&gt;
&lt;h2 id=&#34;disable-proxied-tools&#34;&gt;Disable proxied tools&lt;/h2&gt;
&lt;p&gt;Proxied tools are enabled by default on this server. Pass &lt;code&gt;--disable-proxied&lt;/code&gt; to disable them. The &lt;code&gt;proxied&lt;/code&gt; token in &lt;code&gt;--enabled-tools&lt;/code&gt; does not gate proxied tools; only &lt;code&gt;--disable-proxied&lt;/code&gt; does. Omitting &lt;code&gt;proxied&lt;/code&gt; from &lt;code&gt;--enabled-tools&lt;/code&gt; does not disable them.&lt;/p&gt;
&lt;p&gt;With stdio transport, proxied tools are discovered once at startup. With SSE or streamable-http, discovery runs per MCP session when tools are listed or called.&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../enable-and-disable-tools/&#34;&gt;Enable and disable tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../command-line-flags/&#34;&gt;Command-line flags&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../transports-and-addresses/&#34;&gt;Transports and addresses&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="proxied-tools">Proxied tools&lt;/h1>
&lt;p>Proxied tools are additional MCP tools that this server does not implement itself. It loads them from an MCP server that sits behind a Grafana datasource, using Grafana’s datasource proxy. Your client still talks only to this MCP server; the extra tools show up alongside the built-in ones.&lt;/p></description></item><item><title>Server TLS (streamable-http)</title><link>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/server-tls-streamable-http/</link><pubDate>Thu, 23 Apr 2026 10:03:11 +0200</pubDate><guid>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/server-tls-streamable-http/</guid><content><![CDATA[&lt;h1 id=&#34;server-tls-streamable-http&#34;&gt;Server TLS (streamable-http)&lt;/h1&gt;
&lt;p&gt;When you use the streamable-http transport, you can serve the MCP server over HTTPS using your own TLS certificate and key.&lt;/p&gt;
&lt;h2 id=&#34;what-youll-achieve&#34;&gt;What you&amp;rsquo;ll achieve&lt;/h2&gt;
&lt;p&gt;Clients connect to the server with &lt;code&gt;https://&lt;/code&gt; instead of &lt;code&gt;http://&lt;/code&gt;. This is separate from client TLS, which configures how the server connects to Grafana.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A TLS certificate and private key for the host and port where the server will listen.&lt;/li&gt;
&lt;li&gt;The server run with &lt;code&gt;-t streamable-http&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-server-tls&#34;&gt;Configure server TLS&lt;/h2&gt;
&lt;p&gt;Use these flags with streamable-http:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;ndash;server.tls-cert-file&lt;/strong&gt; – Path to the server TLS certificate file.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ndash;server.tls-key-file&lt;/strong&gt; – Path to the server TLS private key file.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;mcp-grafana -t streamable-http \
  --server.tls-cert-file /path/to/server.crt \
  --server.tls-key-file /path/to/server.key \
  --address :8443&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Clients then connect to &lt;code&gt;https://localhost:8443&lt;/code&gt; with the streamable-http path (default &lt;code&gt;--endpoint-path&lt;/code&gt; is &lt;code&gt;/mcp&lt;/code&gt;, for example &lt;code&gt;https://localhost:8443/mcp&lt;/code&gt;).&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../transports-and-addresses/&#34;&gt;Transports and addresses&lt;/a&gt; for transport options.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../client-tls-grafana-connection/&#34;&gt;Client TLS (Grafana connection)&lt;/a&gt; for TLS toward Grafana.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="server-tls-streamable-http">Server TLS (streamable-http)&lt;/h1>
&lt;p>When you use the streamable-http transport, you can serve the MCP server over HTTPS using your own TLS certificate and key.&lt;/p>
&lt;h2 id="what-youll-achieve">What you&amp;rsquo;ll achieve&lt;/h2>
&lt;p>Clients connect to the server with &lt;code>https://&lt;/code> instead of &lt;code>http://&lt;/code>. This is separate from client TLS, which configures how the server connects to Grafana.&lt;/p></description></item><item><title>Multi-organization and headers</title><link>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/multi-organization-and-headers/</link><pubDate>Thu, 23 Apr 2026 10:03:11 +0200</pubDate><guid>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/multi-organization-and-headers/</guid><content><![CDATA[&lt;h1 id=&#34;multi-organization-and-headers&#34;&gt;Multi-organization and headers&lt;/h1&gt;
&lt;p&gt;You can point the server at a specific Grafana organization and add custom HTTP headers to every request to Grafana.&lt;/p&gt;
&lt;h2 id=&#34;what-youll-achieve&#34;&gt;What you&amp;rsquo;ll achieve&lt;/h2&gt;
&lt;p&gt;All Grafana API calls use the chosen organization context, and any extra headers you need (for example, tenant or custom auth) are sent automatically.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A Grafana instance with multiple organizations (or a need for custom headers).&lt;/li&gt;
&lt;li&gt;The server configured with &lt;a href=&#34;../authentication/&#34;&gt;Authentication&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;set-the-organization&#34;&gt;Set the organization&lt;/h2&gt;
&lt;p&gt;Set &lt;strong&gt;GRAFANA_ORG_ID&lt;/strong&gt; to the numeric organization ID. The server sends &lt;code&gt;X-Grafana-Org-Id&lt;/code&gt; on all requests to Grafana.&lt;/p&gt;
&lt;p&gt;When using SSE or streamable-http, you can also send &lt;strong&gt;X-Grafana-Org-Id&lt;/strong&gt; from the client; the header takes precedence over the environment variable so you can override the default org per request.&lt;/p&gt;
&lt;h2 id=&#34;send-custom-headers&#34;&gt;Send custom headers&lt;/h2&gt;
&lt;p&gt;Set &lt;strong&gt;GRAFANA_EXTRA_HEADERS&lt;/strong&gt; to a JSON object mapping header names to values. These headers are added to every Grafana API request.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;&amp;#34;GRAFANA_EXTRA_HEADERS&amp;#34;: &amp;#34;{\&amp;#34;X-Custom-Header\&amp;#34;: \&amp;#34;value\&amp;#34;, \&amp;#34;X-Tenant-ID\&amp;#34;: \&amp;#34;tenant-123\&amp;#34;}&amp;#34;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../authentication/&#34;&gt;Authentication&lt;/a&gt; for Grafana credentials.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../enable-and-disable-tools/&#34;&gt;Enable and disable tools&lt;/a&gt; to limit which tools are available.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="multi-organization-and-headers">Multi-organization and headers&lt;/h1>
&lt;p>You can point the server at a specific Grafana organization and add custom HTTP headers to every request to Grafana.&lt;/p>
&lt;h2 id="what-youll-achieve">What you&amp;rsquo;ll achieve&lt;/h2>
&lt;p>All Grafana API calls use the chosen organization context, and any extra headers you need (for example, tenant or custom auth) are sent automatically.&lt;/p></description></item><item><title>Command-line flags</title><link>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/command-line-flags/</link><pubDate>Thu, 23 Apr 2026 14:05:09 +0000</pubDate><guid>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/command-line-flags/</guid><content><![CDATA[&lt;h1 id=&#34;command-line-flags&#34;&gt;Command-line flags&lt;/h1&gt;
&lt;p&gt;The &lt;code&gt;mcp-grafana&lt;/code&gt; binary accepts flags for transports, tools, TLS, and observability. Run &lt;code&gt;mcp-grafana --help&lt;/code&gt; for the exact list in your installed build.&lt;/p&gt;
&lt;h2 id=&#34;what-youll-achieve&#34;&gt;What you&amp;rsquo;ll achieve&lt;/h2&gt;
&lt;p&gt;You can look up defaults, choose &lt;code&gt;--disable-*&lt;/code&gt; flags, or configure TLS without reading the source.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;You need a way to run &lt;code&gt;mcp-grafana&lt;/code&gt; on your machine—for example, a &lt;a href=&#34;../set-up/install-the-binary/&#34;&gt;release binary&lt;/a&gt;, &lt;a href=&#34;../set-up/install-with-uvx/&#34;&gt;&lt;code&gt;uvx&lt;/code&gt;&lt;/a&gt;, or a &lt;a href=&#34;../set-up/install-with-docker/&#34;&gt;container&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-transport-and-http-options&#34;&gt;Configure transport and HTTP options&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-t&lt;/code&gt; / &lt;code&gt;--transport&lt;/code&gt;: Transport type (&lt;code&gt;stdio&lt;/code&gt;, &lt;code&gt;sse&lt;/code&gt;, or &lt;code&gt;streamable-http&lt;/code&gt;). Default: &lt;code&gt;stdio&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--address&lt;/code&gt;: Host and port for the SSE or streamable-http server. Default: &lt;code&gt;localhost:8000&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--base-path&lt;/code&gt;: Base path for the SSE or streamable-http server.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--endpoint-path&lt;/code&gt;: HTTP path for the streamable-http MCP endpoint. Default: &lt;code&gt;/mcp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--session-idle-timeout-minutes&lt;/code&gt;: Idle timeout for streamable-http sessions, in minutes. Sessions with no activity for this duration are automatically reaped. Set to &lt;code&gt;0&lt;/code&gt; to disable. Default: &lt;code&gt;30&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-debug-and-logging&#34;&gt;Configure debug and logging&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--debug&lt;/code&gt;: Enable debug mode for detailed HTTP request and response logging to and from the Grafana API.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--log-level&lt;/code&gt;: Log level (&lt;code&gt;debug&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;warn&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;). Default: &lt;code&gt;info&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-observability-endpoints&#34;&gt;Configure observability endpoints&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--metrics&lt;/code&gt;: Expose a Prometheus metrics endpoint at &lt;code&gt;/metrics&lt;/code&gt; (SSE and streamable-http only).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--metrics-address&lt;/code&gt;: Optional separate listen address for metrics (for example, &lt;code&gt;:9090&lt;/code&gt;). If empty, metrics are served on the main HTTP server.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-tool-categories&#34;&gt;Configure tool categories&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--enabled-tools&lt;/code&gt;: Comma-separated list of enabled tool &lt;strong&gt;categories&lt;/strong&gt;. The default is exactly:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;search,datasource,incident,prometheus,loki,alerting,dashboard,folder,oncall,asserts,sift,pyroscope,navigation,proxied,annotations,rendering&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Categories &lt;strong&gt;not&lt;/strong&gt; in that default string are off until you add them, including: &lt;code&gt;admin&lt;/code&gt;, &lt;code&gt;elasticsearch&lt;/code&gt;, &lt;code&gt;cloudwatch&lt;/code&gt;, &lt;code&gt;examples&lt;/code&gt;, &lt;code&gt;clickhouse&lt;/code&gt;, &lt;code&gt;influxdb&lt;/code&gt;, &lt;code&gt;searchlogs&lt;/code&gt;, and &lt;code&gt;runpanelquery&lt;/code&gt;. Pass a full comma-separated list to replace the default entirely, or use &lt;code&gt;--disable-*&lt;/code&gt; flags to turn off pieces of the default set.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-search&lt;/code&gt;: Disable search tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-datasource&lt;/code&gt;: Disable datasource tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-incident&lt;/code&gt;: Disable incident tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-prometheus&lt;/code&gt;: Disable Prometheus tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-write&lt;/code&gt;: Disable write tools (read-only mode; refer to the following section).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-loki&lt;/code&gt;: Disable Loki tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-elasticsearch&lt;/code&gt;: Disable Elasticsearch tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-influxdb&lt;/code&gt;: Disable InfluxDB tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-alerting&lt;/code&gt;: Disable alerting tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-dashboard&lt;/code&gt;: Disable dashboard tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-folder&lt;/code&gt;: Disable folder tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-oncall&lt;/code&gt;: Disable OnCall tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-asserts&lt;/code&gt;: Disable Asserts tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-sift&lt;/code&gt;: Disable Sift tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-admin&lt;/code&gt;: Disable admin tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-pyroscope&lt;/code&gt;: Disable Pyroscope tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-navigation&lt;/code&gt;: Disable navigation (deeplink) tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-rendering&lt;/code&gt;: Disable rendering tools (panel or dashboard image export).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-cloudwatch&lt;/code&gt;: Disable CloudWatch tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-examples&lt;/code&gt;: Disable query examples tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-clickhouse&lt;/code&gt;: Disable ClickHouse tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-searchlogs&lt;/code&gt;: Disable search logs tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-runpanelquery&lt;/code&gt;: Disable run panel query tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-annotations&lt;/code&gt;: Disable annotation tools.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;--disable-proxied&lt;/code&gt;: Disable proxied tools (tools from external MCP servers).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-tool-limits&#34;&gt;Configure tool limits&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--max-loki-log-limit&lt;/code&gt;: Maximum number of log lines returned per &lt;code&gt;query_loki_logs&lt;/code&gt; call.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;run-in-read-only-mode&#34;&gt;Run in read-only mode&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;--disable-write&lt;/code&gt; prevents write operations to Grafana. Use it with read-only service accounts, safer production assistants, or to avoid accidental changes.&lt;/p&gt;
&lt;p&gt;When enabled, the following writes are disabled:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dashboard tools&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;update_dashboard&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Folder tools&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;create_folder&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Incident tools&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;create_incident&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;add_activity_to_incident&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Alerting tools&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;alerting_manage_rules&lt;/code&gt; (create, update, delete)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Annotation tools&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;create_annotation&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;update_annotation&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Sift tools&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;find_error_pattern_logs&lt;/code&gt; (creates investigations)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;find_slow_requests&lt;/code&gt; (creates investigations)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Read operations (queries, lists, searches) stay available.&lt;/p&gt;
&lt;h2 id=&#34;configure-client-tls-for-grafana&#34;&gt;Configure client TLS for Grafana&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--tls-cert-file&lt;/code&gt;: Client certificate for mTLS to Grafana.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--tls-key-file&lt;/code&gt;: Client private key.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--tls-ca-file&lt;/code&gt;: CA certificate for verifying Grafana’s server certificate.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--tls-skip-verify&lt;/code&gt;: Skip TLS verification (insecure; testing only).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-server-tls-for-streamable-http&#34;&gt;Configure server TLS for streamable-http&lt;/h2&gt;
&lt;p&gt;These flags secure the MCP HTTP server (between your MCP client and &lt;code&gt;mcp-grafana&lt;/code&gt;), not the connection from &lt;code&gt;mcp-grafana&lt;/code&gt; to Grafana:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--server.tls-cert-file&lt;/code&gt;: Server certificate for HTTPS.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--server.tls-key-file&lt;/code&gt;: Server private key.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;print-version-information&#34;&gt;Print version information&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--version&lt;/code&gt;: Print the version and exit.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../enable-and-disable-tools/&#34;&gt;Enable and disable tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../client-tls-grafana-connection/&#34;&gt;Client TLS (Grafana connection)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../server-tls-streamable-http/&#34;&gt;Server TLS (streamable-http)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../transports-and-addresses/&#34;&gt;Transports and addresses&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="command-line-flags">Command-line flags&lt;/h1>
&lt;p>The &lt;code>mcp-grafana&lt;/code> binary accepts flags for transports, tools, TLS, and observability. Run &lt;code>mcp-grafana --help&lt;/code> for the exact list in your installed build.&lt;/p>
&lt;h2 id="what-youll-achieve">What you&amp;rsquo;ll achieve&lt;/h2>
&lt;p>You can look up defaults, choose &lt;code>--disable-*&lt;/code> flags, or configure TLS without reading the source.&lt;/p></description></item><item><title>Health check endpoint</title><link>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/health-check-endpoint/</link><pubDate>Thu, 23 Apr 2026 10:03:11 +0200</pubDate><guid>https://grafana.com/docs/grafana/v13.0/developer-resources/mcp/configure/health-check-endpoint/</guid><content><![CDATA[&lt;h1 id=&#34;health-check-endpoint&#34;&gt;Health check endpoint&lt;/h1&gt;
&lt;p&gt;When you use the SSE (&lt;code&gt;-t sse&lt;/code&gt;) or streamable HTTP (&lt;code&gt;-t streamable-http&lt;/code&gt;) transport, the MCP server exposes a health check at &lt;code&gt;/healthz&lt;/code&gt;. Load balancers, monitoring, and orchestration can use it to verify that the server is running and accepting connections.&lt;/p&gt;
&lt;h2 id=&#34;what-youll-achieve&#34;&gt;What you&amp;rsquo;ll achieve&lt;/h2&gt;
&lt;p&gt;You can probe readiness from scripts or upstream checks when the server uses an HTTP transport.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The server running with &lt;code&gt;-t sse&lt;/code&gt; or &lt;code&gt;-t streamable-http&lt;/code&gt; (not stdio).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;send-a-health-check-request&#34;&gt;Send a health check request&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Endpoint:&lt;/strong&gt; &lt;code&gt;GET /healthz&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Response:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Status code: &lt;code&gt;200 OK&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Body: &lt;code&gt;ok&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Bash&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-bash&#34;&gt;# For streamable HTTP or SSE transport with default listen address (localhost:8000)
curl http://localhost:8000/healthz

# With custom address
curl http://localhost:9090/healthz&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;:  The health check endpoint is only available when using SSE or streamable HTTP transports. It is &lt;strong&gt;not&lt;/strong&gt; available with the stdio transport (&lt;code&gt;-t stdio&lt;/code&gt;), because stdio does not start an HTTP server.&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../transports-and-addresses/&#34;&gt;Transports and addresses&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../command-line-flags/&#34;&gt;Command-line flags&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="health-check-endpoint">Health check endpoint&lt;/h1>
&lt;p>When you use the SSE (&lt;code>-t sse&lt;/code>) or streamable HTTP (&lt;code>-t streamable-http&lt;/code>) transport, the MCP server exposes a health check at &lt;code>/healthz&lt;/code>. Load balancers, monitoring, and orchestration can use it to verify that the server is running and accepting connections.&lt;/p></description></item></channel></rss>