MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools addresses one concrete problem: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. The guide works from the actual objects — MCP, Streamable HTTP, Origin, DNS rebinding, localhost — and aims for a verifiable decision rather than a generic pattern.
The concrete problem: MCP meets Streamable HTTP
A robust implementation separates what the model proposes from what the application authorizes and verifies.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c11 starts at Streamable HTTP and treats Origin as an explicit boundary rather than an implicit assumption. The first control requires DNS rebinding to emit an observable result before localhost can trigger the intended effect around MCP. The conclusion stays bounded by DNS rebinding and MCP: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c11 is labeled as a limitation or inference, never promoted to fact. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns Streamable HTTP into a reviewable decision point with a named input and a retained output. To test Origin, fixture mcp-streamable-http-dns-rebinding-c11 contains both an allowed state and a rejected state; rejection must occur before any change attributed to DNS rebinding.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c12 starts at Origin and treats DNS rebinding as an explicit boundary rather than an implicit assumption. The first control requires localhost to emit an observable result before MCP can trigger the intended effect around Streamable HTTP. Operations then observes the transition between localhost and MCP, while security checks that Streamable HTTP receives neither implicit authority nor unnecessary data. If the MCP verification fails, rollback restores the configuration around Streamable HTTP, replays mcp-streamable-http-dns-rebinding-c12, and compares the new state with the control evidence from Origin. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to DNS rebinding, a concrete condition, and evidence instead of a generic assurance.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c13 starts at DNS rebinding and treats localhost as an explicit boundary rather than an implicit assumption. The first control requires MCP to emit an observable result before Streamable HTTP can trigger the intended effect around Origin. The conclusion stays bounded by MCP and Origin: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c13 is labeled as a limitation or inference, never promoted to fact. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns DNS rebinding into a reviewable decision point with a named input and a retained output. To test localhost, fixture mcp-streamable-http-dns-rebinding-c13 contains both an allowed state and a rejected state; rejection must occur before any change attributed to MCP.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c14 starts at localhost and treats MCP as an explicit boundary rather than an implicit assumption. The first control requires Streamable HTTP to emit an observable result before Origin can trigger the intended effect around DNS rebinding. Operations then observes the transition between Streamable HTTP and Origin, while security checks that DNS rebinding receives neither implicit authority nor unnecessary data. If the Origin verification fails, rollback restores the configuration around DNS rebinding, replays mcp-streamable-http-dns-rebinding-c14, and compares the new state with the control evidence from localhost. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to MCP, a concrete condition, and evidence instead of a generic assurance.

Failure modes, signals, and diagnosis
The starting point is not a feature; it is an observable decision boundary.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c21 starts at Origin and treats DNS rebinding as an explicit boundary rather than an implicit assumption. The first control requires localhost to emit an observable result before MCP can trigger the intended effect around Streamable HTTP. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to DNS rebinding, a concrete condition, and evidence instead of a generic assurance. The conclusion stays bounded by localhost and Streamable HTTP: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c21 is labeled as a limitation or inference, never promoted to fact. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns Origin into a reviewable decision point with a named input and a retained output.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c22 starts at DNS rebinding and treats localhost as an explicit boundary rather than an implicit assumption. The first control requires MCP to emit an observable result before Streamable HTTP can trigger the intended effect around Origin. To test localhost, fixture mcp-streamable-http-dns-rebinding-c22 contains both an allowed state and a rejected state; rejection must occur before any change attributed to MCP. Operations then observes the transition between MCP and Streamable HTTP, while security checks that Origin receives neither implicit authority nor unnecessary data. If the Streamable HTTP verification fails, rollback restores the configuration around Origin, replays mcp-streamable-http-dns-rebinding-c22, and compares the new state with the control evidence from DNS rebinding.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c23 starts at localhost and treats MCP as an explicit boundary rather than an implicit assumption. The first control requires Streamable HTTP to emit an observable result before Origin can trigger the intended effect around DNS rebinding. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to MCP, a concrete condition, and evidence instead of a generic assurance. The conclusion stays bounded by Streamable HTTP and DNS rebinding: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c23 is labeled as a limitation or inference, never promoted to fact. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns localhost into a reviewable decision point with a named input and a retained output.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c24 starts at MCP and treats Streamable HTTP as an explicit boundary rather than an implicit assumption. The first control requires Origin to emit an observable result before DNS rebinding can trigger the intended effect around localhost. To test Streamable HTTP, fixture mcp-streamable-http-dns-rebinding-c24 contains both an allowed state and a rejected state; rejection must occur before any change attributed to Origin. Operations then observes the transition between Origin and DNS rebinding, while security checks that localhost receives neither implicit authority nor unnecessary data. If the DNS rebinding verification fails, rollback restores the configuration around localhost, replays mcp-streamable-http-dns-rebinding-c24, and compares the new state with the control evidence from MCP.

Progressive rollout and rollback
A production design should make it clear who decides, what evidence is available, and what can be rolled back.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c31 starts at DNS rebinding and treats localhost as an explicit boundary rather than an implicit assumption. The first control requires MCP to emit an observable result before Streamable HTTP can trigger the intended effect around Origin. If the Streamable HTTP verification fails, rollback restores the configuration around Origin, replays mcp-streamable-http-dns-rebinding-c31, and compares the new state with the control evidence from DNS rebinding. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to localhost, a concrete condition, and evidence instead of a generic assurance. The conclusion stays bounded by MCP and Origin: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c31 is labeled as a limitation or inference, never promoted to fact.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c32 starts at localhost and treats MCP as an explicit boundary rather than an implicit assumption. The first control requires Streamable HTTP to emit an observable result before Origin can trigger the intended effect around DNS rebinding. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns localhost into a reviewable decision point with a named input and a retained output. To test MCP, fixture mcp-streamable-http-dns-rebinding-c32 contains both an allowed state and a rejected state; rejection must occur before any change attributed to Streamable HTTP. Operations then observes the transition between Streamable HTTP and Origin, while security checks that DNS rebinding receives neither implicit authority nor unnecessary data.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c33 starts at MCP and treats Streamable HTTP as an explicit boundary rather than an implicit assumption. The first control requires Origin to emit an observable result before DNS rebinding can trigger the intended effect around localhost. If the DNS rebinding verification fails, rollback restores the configuration around localhost, replays mcp-streamable-http-dns-rebinding-c33, and compares the new state with the control evidence from MCP. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to Streamable HTTP, a concrete condition, and evidence instead of a generic assurance. The conclusion stays bounded by Origin and localhost: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c33 is labeled as a limitation or inference, never promoted to fact.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c34 starts at Streamable HTTP and treats Origin as an explicit boundary rather than an implicit assumption. The first control requires DNS rebinding to emit an observable result before localhost can trigger the intended effect around MCP. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns Streamable HTTP into a reviewable decision point with a named input and a retained output. To test Origin, fixture mcp-streamable-http-dns-rebinding-c34 contains both an allowed state and a rejected state; rejection must occur before any change attributed to DNS rebinding. Operations then observes the transition between DNS rebinding and localhost, while security checks that MCP receives neither implicit authority nor unnecessary data.

- Step 1 — Configure MCP, run verification
mcp-streamable-http-dns-rebinding-step-1, and retain the observable result before continuing. - Step 2 — Configure Streamable HTTP, run verification
mcp-streamable-http-dns-rebinding-step-2, and retain the observable result before continuing. - Step 3 — Configure Origin, run verification
mcp-streamable-http-dns-rebinding-step-3, and retain the observable result before continuing. - Step 4 — Configure DNS rebinding, run verification
mcp-streamable-http-dns-rebinding-step-4, and retain the observable result before continuing. - Step 5 — Configure localhost, run verification
mcp-streamable-http-dns-rebinding-step-5, and retain the observable result before continuing. - Step 6 — Configure MCP, run verification
mcp-streamable-http-dns-rebinding-step-6, and retain the observable result before continuing.
Three failures and fixes
- Input rejected after the side effect: move validation before external execution.
- Missing evidence: log a decision identifier without the secret payload.
- Partial rollback: restore both configuration and authorization, then replay the control fixture.
Production decision criteria
The hard part appears when the happy path meets authorization, failures, and operational constraints.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c41 starts at localhost and treats MCP as an explicit boundary rather than an implicit assumption. The first control requires Streamable HTTP to emit an observable result before Origin can trigger the intended effect around DNS rebinding. Operations then observes the transition between Streamable HTTP and Origin, while security checks that DNS rebinding receives neither implicit authority nor unnecessary data. If the Origin verification fails, rollback restores the configuration around DNS rebinding, replays mcp-streamable-http-dns-rebinding-c41, and compares the new state with the control evidence from localhost. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to MCP, a concrete condition, and evidence instead of a generic assurance.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c42 starts at MCP and treats Streamable HTTP as an explicit boundary rather than an implicit assumption. The first control requires Origin to emit an observable result before DNS rebinding can trigger the intended effect around localhost. The conclusion stays bounded by Origin and localhost: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c42 is labeled as a limitation or inference, never promoted to fact. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns MCP into a reviewable decision point with a named input and a retained output. To test Streamable HTTP, fixture mcp-streamable-http-dns-rebinding-c42 contains both an allowed state and a rejected state; rejection must occur before any change attributed to Origin.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c43 starts at Streamable HTTP and treats Origin as an explicit boundary rather than an implicit assumption. The first control requires DNS rebinding to emit an observable result before localhost can trigger the intended effect around MCP. Operations then observes the transition between DNS rebinding and localhost, while security checks that MCP receives neither implicit authority nor unnecessary data. If the localhost verification fails, rollback restores the configuration around MCP, replays mcp-streamable-http-dns-rebinding-c43, and compares the new state with the control evidence from Streamable HTTP. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to Origin, a concrete condition, and evidence instead of a generic assurance.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c44 starts at Origin and treats DNS rebinding as an explicit boundary rather than an implicit assumption. The first control requires localhost to emit an observable result before MCP can trigger the intended effect around Streamable HTTP. The conclusion stays bounded by localhost and Streamable HTTP: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c44 is labeled as a limitation or inference, never promoted to fact. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns Origin into a reviewable decision point with a named input and a retained output. To test DNS rebinding, fixture mcp-streamable-http-dns-rebinding-c44 contains both an allowed state and a rejected state; rejection must occur before any change attributed to localhost.

Trust boundaries around Origin
A robust implementation separates what the model proposes from what the application authorizes and verifies.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c51 starts at MCP and treats Streamable HTTP as an explicit boundary rather than an implicit assumption. The first control requires Origin to emit an observable result before DNS rebinding can trigger the intended effect around localhost. To test Streamable HTTP, fixture mcp-streamable-http-dns-rebinding-c51 contains both an allowed state and a rejected state; rejection must occur before any change attributed to Origin. Operations then observes the transition between Origin and DNS rebinding, while security checks that localhost receives neither implicit authority nor unnecessary data. If the DNS rebinding verification fails, rollback restores the configuration around localhost, replays mcp-streamable-http-dns-rebinding-c51, and compares the new state with the control evidence from MCP.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c52 starts at Streamable HTTP and treats Origin as an explicit boundary rather than an implicit assumption. The first control requires DNS rebinding to emit an observable result before localhost can trigger the intended effect around MCP. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to Origin, a concrete condition, and evidence instead of a generic assurance. The conclusion stays bounded by DNS rebinding and MCP: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c52 is labeled as a limitation or inference, never promoted to fact. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns Streamable HTTP into a reviewable decision point with a named input and a retained output.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c53 starts at Origin and treats DNS rebinding as an explicit boundary rather than an implicit assumption. The first control requires localhost to emit an observable result before MCP can trigger the intended effect around Streamable HTTP. To test DNS rebinding, fixture mcp-streamable-http-dns-rebinding-c53 contains both an allowed state and a rejected state; rejection must occur before any change attributed to localhost. Operations then observes the transition between localhost and MCP, while security checks that Streamable HTTP receives neither implicit authority nor unnecessary data. If the MCP verification fails, rollback restores the configuration around Streamable HTTP, replays mcp-streamable-http-dns-rebinding-c53, and compares the new state with the control evidence from Origin.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c54 starts at DNS rebinding and treats localhost as an explicit boundary rather than an implicit assumption. The first control requires MCP to emit an observable result before Streamable HTTP can trigger the intended effect around Origin. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to localhost, a concrete condition, and evidence instead of a generic assurance. The conclusion stays bounded by MCP and Origin: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c54 is labeled as a limitation or inference, never promoted to fact. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns DNS rebinding into a reviewable decision point with a named input and a retained output.

Prepare the starting state and prerequisites
The starting point is not a feature; it is an observable decision boundary.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c61 starts at Streamable HTTP and treats Origin as an explicit boundary rather than an implicit assumption. The first control requires DNS rebinding to emit an observable result before localhost can trigger the intended effect around MCP. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns Streamable HTTP into a reviewable decision point with a named input and a retained output. To test Origin, fixture mcp-streamable-http-dns-rebinding-c61 contains both an allowed state and a rejected state; rejection must occur before any change attributed to DNS rebinding. Operations then observes the transition between DNS rebinding and localhost, while security checks that MCP receives neither implicit authority nor unnecessary data.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c62 starts at Origin and treats DNS rebinding as an explicit boundary rather than an implicit assumption. The first control requires localhost to emit an observable result before MCP can trigger the intended effect around Streamable HTTP. If the MCP verification fails, rollback restores the configuration around Streamable HTTP, replays mcp-streamable-http-dns-rebinding-c62, and compares the new state with the control evidence from Origin. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to DNS rebinding, a concrete condition, and evidence instead of a generic assurance. The conclusion stays bounded by localhost and Streamable HTTP: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c62 is labeled as a limitation or inference, never promoted to fact.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c63 starts at DNS rebinding and treats localhost as an explicit boundary rather than an implicit assumption. The first control requires MCP to emit an observable result before Streamable HTTP can trigger the intended effect around Origin. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns DNS rebinding into a reviewable decision point with a named input and a retained output. To test localhost, fixture mcp-streamable-http-dns-rebinding-c63 contains both an allowed state and a rejected state; rejection must occur before any change attributed to MCP. Operations then observes the transition between MCP and Streamable HTTP, while security checks that Origin receives neither implicit authority nor unnecessary data.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c64 starts at localhost and treats MCP as an explicit boundary rather than an implicit assumption. The first control requires Streamable HTTP to emit an observable result before Origin can trigger the intended effect around DNS rebinding. If the Origin verification fails, rollback restores the configuration around DNS rebinding, replays mcp-streamable-http-dns-rebinding-c64, and compares the new state with the control evidence from localhost. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to MCP, a concrete condition, and evidence instead of a generic assurance. The conclusion stays bounded by Streamable HTTP and DNS rebinding: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c64 is labeled as a limitation or inference, never promoted to fact.

Execute the procedure and observe the result
A production design should make it clear who decides, what evidence is available, and what can be rolled back.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c71 starts at Origin and treats DNS rebinding as an explicit boundary rather than an implicit assumption. The first control requires localhost to emit an observable result before MCP can trigger the intended effect around Streamable HTTP. The conclusion stays bounded by localhost and Streamable HTTP: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c71 is labeled as a limitation or inference, never promoted to fact. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns Origin into a reviewable decision point with a named input and a retained output. To test DNS rebinding, fixture mcp-streamable-http-dns-rebinding-c71 contains both an allowed state and a rejected state; rejection must occur before any change attributed to localhost.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c72 starts at DNS rebinding and treats localhost as an explicit boundary rather than an implicit assumption. The first control requires MCP to emit an observable result before Streamable HTTP can trigger the intended effect around Origin. Operations then observes the transition between MCP and Streamable HTTP, while security checks that Origin receives neither implicit authority nor unnecessary data. If the Streamable HTTP verification fails, rollback restores the configuration around Origin, replays mcp-streamable-http-dns-rebinding-c72, and compares the new state with the control evidence from DNS rebinding. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to localhost, a concrete condition, and evidence instead of a generic assurance.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c73 starts at localhost and treats MCP as an explicit boundary rather than an implicit assumption. The first control requires Streamable HTTP to emit an observable result before Origin can trigger the intended effect around DNS rebinding. The conclusion stays bounded by Streamable HTTP and DNS rebinding: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c73 is labeled as a limitation or inference, never promoted to fact. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns localhost into a reviewable decision point with a named input and a retained output. To test MCP, fixture mcp-streamable-http-dns-rebinding-c73 contains both an allowed state and a rejected state; rejection must occur before any change attributed to Streamable HTTP.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c74 starts at MCP and treats Streamable HTTP as an explicit boundary rather than an implicit assumption. The first control requires Origin to emit an observable result before DNS rebinding can trigger the intended effect around localhost. Operations then observes the transition between Origin and DNS rebinding, while security checks that localhost receives neither implicit authority nor unnecessary data. If the DNS rebinding verification fails, rollback restores the configuration around localhost, replays mcp-streamable-http-dns-rebinding-c74, and compares the new state with the control evidence from MCP. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to Streamable HTTP, a concrete condition, and evidence instead of a generic assurance.
Evidence point: OpenAI documents that agent and tool guardrails can validate inputs or outputs and can stop execution with tripwire-style failures. This source anchors execute the procedure and observe the result but does not replace local verification. [S7]Controls that remain after launch
The hard part appears when the happy path meets authorization, failures, and operational constraints.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c81 starts at DNS rebinding and treats localhost as an explicit boundary rather than an implicit assumption. The first control requires MCP to emit an observable result before Streamable HTTP can trigger the intended effect around Origin. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to localhost, a concrete condition, and evidence instead of a generic assurance. The conclusion stays bounded by MCP and Origin: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c81 is labeled as a limitation or inference, never promoted to fact. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns DNS rebinding into a reviewable decision point with a named input and a retained output.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c82 starts at localhost and treats MCP as an explicit boundary rather than an implicit assumption. The first control requires Streamable HTTP to emit an observable result before Origin can trigger the intended effect around DNS rebinding. To test MCP, fixture mcp-streamable-http-dns-rebinding-c82 contains both an allowed state and a rejected state; rejection must occur before any change attributed to Streamable HTTP. Operations then observes the transition between Streamable HTTP and Origin, while security checks that DNS rebinding receives neither implicit authority nor unnecessary data. If the Origin verification fails, rollback restores the configuration around DNS rebinding, replays mcp-streamable-http-dns-rebinding-c82, and compares the new state with the control evidence from localhost.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c83 starts at MCP and treats Streamable HTTP as an explicit boundary rather than an implicit assumption. The first control requires Origin to emit an observable result before DNS rebinding can trigger the intended effect around localhost. This detail makes “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools” reviewable because each operational statement points to Streamable HTTP, a concrete condition, and evidence instead of a generic assurance. The conclusion stays bounded by Origin and localhost: anything not demonstrated by scenario mcp-streamable-http-dns-rebinding-c83 is labeled as a limitation or inference, never promoted to fact. That sequence serves this concrete job: Deploy Streamable HTTP with Origin validation, safe binding and authentication so a browser cannot pivot into a local MCP server. It turns MCP into a reviewable decision point with a named input and a retained output.
In “MCP Streamable HTTP security: stop DNS rebinding before it reaches local tools”, scenario mcp-streamable-http-dns-rebinding-c84 starts at Streamable HTTP and treats Origin as an explicit boundary rather than an implicit assumption. The first control requires DNS rebinding to emit an observable result before localhost can trigger the intended effect around MCP. To test Origin, fixture mcp-streamable-http-dns-rebinding-c84 contains both an allowed state and a rejected state; rejection must occur before any change attributed to DNS rebinding. Operations then observes the transition between DNS rebinding and localhost, while security checks that MCP receives neither implicit authority nor unnecessary data. If the localhost verification fails, rollback restores the configuration around MCP, replays mcp-streamable-http-dns-rebinding-c84, and compares the new state with the control evidence from Streamable HTTP.
Evidence point: PostgreSQL Global Development Group documents that postgreSQL 18 documents OAuth client authentication concepts and terminology for clients such as libpq and psql. This source anchors controls that remain after launch but does not replace local verification. [S8]Operational checklist
- The control around MCP has an input, a rule, a rejection behavior, and evidence.
- The control around Streamable HTTP has an input, a rule, a rejection behavior, and evidence.
- The control around Origin has an input, a rule, a rejection behavior, and evidence.
- The control around DNS rebinding has an input, a rule, a rejection behavior, and evidence.
- The control around localhost has an input, a rule, a rejection behavior, and evidence.
Sources and control points
- [S1] PHP 8.5 Release Announcement — PHP 8.5 adds the URI extension, pipe operator, clone-with syntax and additional language/runtime improvements. source
- [S2] Model context protocol (MCP) - OpenAI Agents SDK — MCP integrations can expose remote or local tools; the documentation recommends trusted servers, least-privilege credentials and approvals for sensitive operations. source
- [S3] Transports - Model Context Protocol — MCP defines stdio and Streamable HTTP transports; Streamable HTTP deployments need Origin validation, safe local binding and authentication. source
- [S4] Authorization - Model Context Protocol — For HTTP authorization, MCP requires resource-bound tokens, server-side audience validation and PKCE, and forbids insecure token passthrough patterns. source
- [S5] Agents - OpenAI Agents SDK — An Agent combines instructions, tools and optional runtime behavior such as handoffs, guardrails and structured outputs. source
- [S6] Tools - OpenAI Agents SDK — The SDK distinguishes hosted tools, local execution tools, function tools and agents-as-tools, each with different trust and execution boundaries. source
- [S7] Guardrails - OpenAI Agents SDK — Agent and tool guardrails can validate inputs or outputs and can stop execution with tripwire-style failures. source
- [S8] PostgreSQL 18 OAuth Authorization/Authentication — PostgreSQL 18 documents OAuth client authentication concepts and terminology for clients such as libpq and psql. source
- [S9] MySQL 8.4 Security Components and Plugins — MySQL provides pluggable security components for authentication, password validation, key storage, auditing and firewall capabilities. source
- [S10] Web Authentication Level 3 — WebAuthn Level 3 defines strong public-key credentials scoped to relying parties and reached Candidate Recommendation Snapshot status in May 2026. source




Comments
No published comment yet.
Sign in to comment