mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-08-27 20:40:13 +03:00
The MCP library's TransportSecurityMiddleware only supports exact host matches or "host:*" port wildcards. It does NOT support a standalone "*" wildcard to mean "allow all hosts" — setting allowed_hosts=["*"] would reject every connection because no Host header equals "*". Worse, when transport_security=None was passed to FastMCP while its default host is "127.0.0.1", FastMCP would auto-enable protection with strict localhost-only rules, overriding GNS3's intent to allow all hosts. Root cause analysis: - FastMCP auto-enables DNS rebinding protection when host is localhost and no explicit TransportSecuritySettings is provided - GNS3 was passing transport_security=None (indirectly via FastMCP's default) when protection was disabled, triggering the auto-enable - The TransportSecuritySettings "allowed_hosts" list does NOT support "*" as a catch-all wildcard This fix: 1. Always pass an explicit TransportSecuritySettings to FastMCP - Disabled: TransportSecuritySettings(enable_dns_rebinding_protection=False) - Enabled: TransportSecuritySettings(enable_dns_rebinding_protection=True, ...) 2. Restore mcp_allowed_hosts and mcp_allowed_origins config fields 3. Set mcp_enable_dns_rebinding_protection default to False (allow all hosts) Behaviour: - Default (no config change): all hosts can connect to MCP server - With mcp_enable_dns_rebinding_protection=true: only configured hosts - Aligns with GNS3 server's 0.0.0.0 binding policy