Transports¶
Both native implementations support STDIO and stateless Streamable HTTP.
STDIO¶
STDIO remains the default. The MCP client launches one subprocess for each client session.
Streamable HTTP¶
The C# binary accepts the same transport, address, and port arguments.
| Endpoint | Purpose |
|---|---|
/mcp |
Stateless Streamable HTTP MCP |
/health |
Health, service identity, and version metadata |
/shutdown |
Optional manager-authenticated loopback shutdown |
--listen-address falls back to MCP_LISTEN_ADDRESS and then 127.0.0.1.
--port falls back to PORT and then 8080.
{
"mcpServers": {
"bing-webmaster": {
"type": "http",
"url": "http://127.0.0.1:8083/mcp",
"tools": ["*"]
}
}
}
Credentials belong to the server process, not the HTTP client configuration.
Security defaults¶
- The default listener is loopback-only.
- Go and C# validate Host headers.
- Go and C# allow safe methods and reject cross-site writes using
Sec-Fetch-SiteandOrigin. - MCP request bodies are limited to 1 MiB.
- Header and keep-alive timeouts are bounded.
- The transport is stateless and requires no session affinity.
Go uses the comma-separated --allowed-hosts option. C# uses standard ASP.NET
Core AllowedHosts, whose default is:
The built-in host does not authenticate MCP callers. Non-loopback deployments require TLS, authentication and authorization, trusted proxy configuration, and ingress limits.
See Shared Service for cross-session lifecycle management.