Rightshold™ Sign up

Evidence Delivery · $99 / 30 days · Offers open November 18, 2026 · online purchasing currently unavailable

Answers · MCP security

We want to run a vendor's MCP server, or serve our own agent over MCP, in HTTP mode so a remote client or several people can reach it. Two 2026 advisories showed MCP servers whose HTTP mode ran tool calls with no authentication. Is an unauthenticated HTTP mode acceptable on a trusted network or on localhost, and what should we check before turning it on?

Last updated

TL;DR: Not if the server holds credentials or can run commands. In HTTP mode, anyone who can reach the port can send a raw tools/call request, and the server runs it with whatever access it was given; the caller never needs the operator's credentials. The Dynatrace MCP server advisory GHSA-p7w7-4929-vpj5 (high, CVSS 3.1 7.5, tracked as CVE-2026-123811) found that --http mode did no authentication, session validation or Origin and Host checks in versions up to 1.8.7, so an unauthenticated caller could run execute_dql against the operator's Dynatrace tenant to read logs, security events and user sessions; the report puts the effective score at 9.3 when bound to 0.0.0.0. fast-agent's advisory GHSA-9vhv-g5hf-m7m7 (CVE-2026-102610) found fast-agent serve listening on 0.0.0.0:8000 with no authentication and no warning through 0.7.20; with --shell, an unauthenticated client could get the agent to run operating system commands. Both fixes moved the bind address to 127.0.0.1, and Dynatrace 2.0.0 also added bearer-token authentication and DNS rebinding protection. The MCP specification's Streamable HTTP rules say servers MUST validate the Origin header, SHOULD bind only to localhost when running locally, and SHOULD authenticate all connections. Localhost alone isn't enough: the Dynatrace report says loopback-only deployments still carry reduced but non-zero risk from DNS rebinding or a compromise on the same host.

What should I check, step by step?

1. Use stdio when only one local client needs the server. A server the client starts as a subprocess has no network port for anyone else to reach.

  1. Before enabling HTTP mode, find out how the server authenticates callers: a required bearer token or OAuth. Don't run one that accepts tool calls without either when it holds credentials or shell access.
  2. Read the bind address in the startup log. Keep it at 127.0.0.1 unless remote clients must connect; 0.0.0.0 or a LAN address means anyone on that network can try the port.
  3. Upgrade: the Dynatrace MCP server to 2.0.0 or later (its repository was deprecated in 2.1.2 in favor of Dynatrace's remote MCP server and dtctl), and fast-agent-mcp to 0.7.21 or later.
  4. Probe it yourself without credentials: a JSON-RPC tools/list request with no Authorization header should get 401, and a request carrying an Origin you don't own should get 403, as the specification requires when Origin is present and invalid.
  5. Give the server the narrowest credential its tools need. An unauthenticated caller inherits exactly what the server holds, as the Dynatrace report's "unauthenticated proxy" description shows.
  6. Keep shell and write tools off any HTTP endpoint more than one person can reach. fast-agent prints a warning whenever --shell is enabled, with stronger wording for remote callers, and its docs recommend --instance-scope request for public or multi-user servers.
  7. For a remote server, put it behind a reverse proxy or gateway that authenticates and logs every request, and firewall the port to the clients that need it.
  8. Keep an inventory of every MCP server running in HTTP mode, with host, port, bind address, credential scope and owner, so a forgotten test server doesn't stay open.

What did the Dynatrace MCP server (CVE-2026-123811) and fast-agent (CVE-2026-102610) HTTP mode advisories find?

Dynatrace's advisory for @dynatrace-oss/dynatrace-mcp-server (published June 9, 2026, affected 1.8.7 and earlier, patched in 2.0.0) says the --http flag created a Streamable HTTP transport for each request with no bearer-token check, session token, Host allowlist or Origin allowlist, and handed the parsed body straight to it. In the version tested (1.8.5), two tools ran with no human-approval gate: execute_dql, which reads arbitrary Grail data such as logs, security events and user sessions with the operator's Dynatrace credentials, and create_dynatrace_notebook, which writes notebooks to the tenant. The report notes that send_event's approval call threw for an HTTP caller and so blocked that write.

Does binding an MCP server's HTTP mode to 127.0.0.1 make it safe without authentication?

Dynatrace's 2.0.0 release (June 16, 2026) lists bearer token auth and HTTP server hardening, a default host of 127.0.0.1 "to prevent unintended 0.0.0.0 exposure", DNS rebinding protection in the HTTP transport, and a notice advising --http users to use Dynatrace's official remote MCP server. 2.1.0 (June 30) enforces an MCP_BEARER_TOKEN requirement, and 2.1.2 (July 20) deprecated the repository and points users to the remote MCP server and dtctl.

How do you check whether an MCP server you run accepts unauthenticated HTTP tool calls?

Find it: list the listening ports on each host where agents run and match them to MCP processes, then note each bind address. Servers started for a demo or a test are the ones most likely to be left open.

How do I ask Rightshold about this (free, no key)?

Add the MCP server https://www.rightshold.com/mcp to Claude, Cursor, ChatGPT, Grok or VS Code, then ask: “Before we start the Dynatrace MCP server in HTTP mode for the on-call team, ask me to approve the exact settings first, with a record I can check later.”

One-click setup

{
  "tool": "request_human_approval",
  "arguments": {
    "action": {
      "server": "@dynatrace-oss/dynatrace-mcp-server",
      "server_version": "<the 2.x version you reviewed>",
      "mode": "http",
      "bind": "127.0.0.1",
      "auth": "MCP_BEARER_TOKEN set",
      "exposed_via": "<reverse proxy or gateway that authenticates>",
      "credential_scope": "<the Dynatrace token scopes>"
    },
    "summary": "Start dynatrace-mcp-server in HTTP mode on 127.0.0.1 behind the authenticating proxy",
    "expires_in_minutes": 30
  }
}

Rightshold isn't affiliated with Dynatrace, fast-agent, Agent Ops Guide or the Model Context Protocol project, and it doesn't scan networks, run MCP servers or test their authentication. Advisory details are as published in the dynatrace-oss/dynatrace-mcp and evalstate/fast-agent repositories on GitHub, release details from their release pages and docs, the CVE and review dates from the OSV database, the independent test results as reported by Agent Ops Guide, and transport requirements from the MCP specification's Streamable HTTP page, all read November 13, 2026; advisories get updated, so confirm fixed versions on the linked pages.

What are the sources?

Related

Not legal advice. JSON · Markdown · All answers

Get a free API key in one call

No card and no email needed. 100 free credits; the license and policy checks stay free without a key.

curl -s -X POST https://www.rightshold.com/v1/accounts/signup -H "Content-Type: application/json" -d '{"accept_terms":true}'
export RIGHTSHOLD_API_KEY=rs_...   # the api_key from the reply (shown once)
curl -s https://www.rightshold.com/v1/licenses/check -H "Authorization: Bearer $RIGHTSHOLD_API_KEY" \
  -H "Content-Type: application/json" -d '{"license":"MIT","intended_use":{"commercial_use":true}}'