Add support for DNS rebinding protections (#861)

This commit is contained in:
David Dworken 2025-06-17 12:13:00 -07:00 • committed by GitHub
commit 86bb54cb28
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -50,6 +50,7 @@ from mcp.server.sse import SseServerTransport
from mcp.server.stdio import stdio_server
from mcp.server.streamable_http import EventStore
from mcp.server.streamable_http_manager import StreamableHTTPSessionManager
from mcp.server.transport_security import TransportSecuritySettings
from mcp.shared.context import LifespanContextT, RequestContext, RequestT
from mcp.types import (
AnyFunction,
@ -118,6 +119,9 @@ class Settings(BaseSettings, Generic[LifespanResultT]):
auth: AuthSettings | None = None
# Transport security settings (DNS rebinding protection)
transport_security: TransportSecuritySettings | None = None
def lifespan_wrapper(
app: FastMCP,
@ -674,6 +678,7 @@ class FastMCP:
sse = SseServerTransport(
normalized_message_endpoint,
security_settings=self.settings.transport_security,
)
async def handle_sse(scope: Scope, receive: Receive, send: Send):
@ -779,6 +784,7 @@ class FastMCP:
event_store=self._event_store,
json_response=self.settings.json_response,
stateless=self.settings.stateless_http, # Use the stateless setting
security_settings=self.settings.transport_security,
)
# Create the ASGI handler