LandfallDocs
Integrations · Telemetry

Connecting an MCP server to Landfall

Any MCP server you already run becomes a source Beacon, Landfall's diagnosis agent, can query during an investigation. One URL, an optional bearer token, and a label. Landfall offers the agent only the tools the server itself marks read-only; everything else the server exposes is left alone.

This is the one integration on this site that is not about a single vendor. Grafana, Sentry, Datadog, GitHub and many others publish an MCP server for their product; internal teams write them for their own systems. If a server speaks MCP over Streamable HTTP and annotates its tools, Landfall can read through it with no Landfall-side code for that provider at all.

Your MCP server
tools/list
Landfall
keeps readOnlyHint = true
Beacon
tools/call during an incident

What you'll need

  • An MCP server reachable from Landfall over HTTPS using the Streamable HTTP transport (MCP specification revision 2025-03-26 or later). Servers that only speak stdio or the older SSE transport are not reachable from a hosted service; most maintained servers offer Streamable HTTP with a flag.
  • Tool annotations. Landfall offers a tool only when the server declares annotations.readOnlyHint: true on it. A server that annotates nothing connects fine but contributes no tools.
  • If the server requires a caller token, a bearer token for Landfall. Give it the narrowest scope the server supports; for Grafana's own server that is a Viewer-role service account behind it.
  • An admin on your Landfall organization, to save the connection under Settings → Integrations.

1. Run your MCP server in Streamable HTTP mode

The worked example throughout is Grafana's open-source server, grafana/mcp-grafana, which is what Landfall's own local fixture was recorded against. Substitute your own server's flags.

  1. Start it with the Streamable HTTP transport and a caller token

    docker run --rm -p 8000:8000 \
      -e GRAFANA_URL=https://grafana.example.com \
      -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<viewer service account token> \
      -e MCP_GRAFANA_SERVER_TOKEN=<token Landfall will present> \
      grafana/mcp-grafana -t streamable-http -allowed-hosts mcp.example.com

    Two things matter for Landfall: the endpoint path (here /mcp, so the URL you will paste is https://mcp.example.com/mcp) and the caller token, which Landfall sends as Authorization: Bearer. Put the server behind TLS; Landfall will connect to a plain http:// URL, but nothing about a bearer token is private over one.

  2. Check the annotations once

    Any MCP client can show you a server's tool list. What Landfall will keep is every tool whose annotations include readOnlyHint: true. For mcp-grafana that is 53 of its 72 tools: dashboard search, datasource listing, PromQL and LogQL queries, alert rule reads. The 19 it excludes are the ones that create, update or delete something, and the same rule applies to any server: an unannotated tool counts as not read-only, because that is the MCP specification's own default.

2. Add it to Landfall

In Landfall, open Settings → Integrations → MCP server for your organization. It asks for three things: the endpoint URL, the bearer token (if the server needs one), and a label.

  1. Open the Integrations list and pick MCP server

    Settings → Integrations
    Screenshot to capture: Landfall's Settings → Integrations list, showing the MCP server tile (the Model Context Protocol mark) alongside the organization's other connectors such as AWS, Datadog and Grafana, before it is configured.
    Screenshot to capture: the Integrations list with the MCP server tile visible and not yet configured.
  2. Paste the URL, the token and a label

    The label is what the investigator sees in its catalog. Pick something a responder would recognise in a finding: Grafana MCP, not server-2. You can connect more than one MCP server; each is its own connection and each keeps its own label.

    Settings → Integrations → MCP server
    Screenshot to capture: Landfall's MCP server integration form with three fields filled in: Server URL set to an https address ending in /mcp, Bearer token entered and masked, and Label reading Grafana MCP, with the Test connection button below.
    Screenshot to capture: the MCP server form, all three fields filled, token masked.
  3. Test connection

    The test performs the protocol's initialize handshake and a tools/list, then reports how many of the offered tools are read-only. It never calls a tool. A result that reads "reachable, but none of its tools is annotated read-only" means the connection works and the agent will get nothing from it: fix the annotations on the server side first.

    Settings → Integrations → MCP server
    Screenshot to capture: Landfall's MCP server integration panel showing a green connected status and the message mcp-grafana reachable: 53 read-only tools of 72 offered will be available to the investigator.
    Screenshot to capture: a successful test naming the server and its read-only tool count.
  4. Save integration

    The server's tools are in the investigator's catalog within a minute, without a restart. The same one-minute bound applies when you rotate the token or remove the connection.

3. What the investigator sees

Beacon does not get a Grafana tool, a Sentry tool or an MCP tool. It gets the same generic query mechanism it already has for every other source, with one more source in it: mcp-server, carrying your label and one operation per read-only tool, each with the parameter hints taken from the tool's own input schema. Tool results come back verbatim and are treated as data the server returned, never as instructions.

war room · investigator catalog
Screenshot to capture: an open war room's investigator capability catalog listing the mcp-server source with the label Grafana MCP and its read-only operations such as search_dashboards, list_datasources and query_prometheus, each with parameter hints, next to the organization's other sources.
Screenshot to capture: the catalog entry for the connected MCP server, showing its read-only tools.
Test connection failed?
  • "rejected the bearer token (HTTP 401)": the server's caller token does not match what you pasted. It is a different value from any token the server itself uses to reach its own backend.
  • "HTTP 403" with a host error: many servers validate the Host header against an allowlist (mcp-grafana's -allowed-hosts). Add the hostname Landfall connects to.
  • "HTTP 404" or "no JSON-RPC response": the URL is the server's base address rather than its MCP endpoint. Most servers serve MCP under a path such as /mcp.
  • The server speaks only stdio or the legacy SSE transport. Landfall needs Streamable HTTP.
Connected, but the agent never finds a tool?

The server's tools are missing readOnlyHint: true. Landfall does not guess from a tool's name: list_things without the annotation is excluded exactly like delete_things, and each exclusion is logged once on the Landfall side. Annotate the read-only tools on the server and the catalog picks them up within a minute.

Triggering: not applicable

Every other integration on this site has a second direction, a webhook through which the provider's own alert opens a Landfall incident. An MCP server has no such direction, by the protocol's design: it answers tool calls and never initiates a delivery to a webhook, and Landfall only ever calls its read-only tools, so there is no event a server could send that Landfall would treat as an alert. The provider behind the server (Grafana's alerting, Sentry's issue alerts) keeps its own triggering path, documented on that provider's page. This is recorded as not applicable rather than as an open gap on Triggering Integrations: MCP servers.

Reference

FieldValue
Server URLThe MCP endpoint, e.g. https://mcp.example.com/mcp. Streamable HTTP transport.
Bearer tokenOptional. Sent as Authorization: Bearer on every request; stored as a secret, never shown again.
LabelThe name the investigator's catalog shows for this connection.
Tools offeredOnly tools with annotations.readOnlyHint === true; unannotated tools count as not read-only.
Connection testinitialize + tools/list; no tool is called.
Multiple serversSupported; each connection is listed separately under its own label.
Local developmentpnpm nx run signals:mcp-fixture-server replays a real capture of mcp-grafana on http://127.0.0.1:8931/mcp, no Grafana or credential needed.
Incident triggeringNot applicable (read-only tool source, see above).