docs: Updated the MCP docs to mention the redirectHost escape hatch

2026-07-07 15:38:38 -06:00
parent 5d3031b45a
commit eddf5dfb64
+23
@@ -100,6 +100,7 @@ For remote MCP servers that support the Streamable HTTP transport:
| `headers` | no | Custom HTTP headers to include with every request | | `headers` | no | Custom HTTP headers to include with every request |
| `oauth.clientId` | no | OAuth client ID. Omit to use Dynamic Client Registration (auto-registers on first `.mcp auth`) | | `oauth.clientId` | no | OAuth client ID. Omit to use Dynamic Client Registration (auto-registers on first `.mcp auth`) |
| `oauth.callbackPort` | no | Callback port for the OAuth redirect listener. Required when the server enforces a specific redirect URI port | | `oauth.callbackPort` | no | Callback port for the OAuth redirect listener. Required when the server enforces a specific redirect URI port |
| `oauth.redirectHost` | no | Hostname used in the OAuth redirect URI. Defaults to `127.0.0.1`. Set to `localhost` if the server's registered redirect URI uses that form instead (e.g. some Slack OAuth apps) |
## SSE Servers ## SSE Servers
@@ -127,6 +128,7 @@ prefer `http` where the server supports it):
| `headers` | no | Custom HTTP headers to include with every request | | `headers` | no | Custom HTTP headers to include with every request |
| `oauth.clientId` | no | OAuth client ID. Omit to use Dynamic Client Registration (auto-registers on first `.mcp auth`) | | `oauth.clientId` | no | OAuth client ID. Omit to use Dynamic Client Registration (auto-registers on first `.mcp auth`) |
| `oauth.callbackPort` | no | Callback port for the OAuth redirect listener. Required when the server enforces a specific redirect URI port | | `oauth.callbackPort` | no | Callback port for the OAuth redirect listener. Required when the server enforces a specific redirect URI port |
| `oauth.redirectHost` | no | Hostname used in the OAuth redirect URI. Defaults to `127.0.0.1`. Set to `localhost` if the server's registered redirect URI uses that form instead (e.g. some Slack OAuth apps) |
**Note:** Both `http` and `sse` types use the same underlying transport, which auto-negotiates the **Note:** Both `http` and `sse` types use the same underlying transport, which auto-negotiates the
protocol with the server. The `type` field primarily serves as documentation of which protocol the protocol with the server. The `type` field primarily serves as documentation of which protocol the
@@ -227,6 +229,27 @@ fixed port. Use `oauth.callbackPort` in that case:
} }
``` ```
Coyote's redirect URI uses `127.0.0.1` by default (e.g. `http://127.0.0.1:3118/callback`). If the OAuth app
you registered uses `localhost` instead, set `oauth.redirectHost` to match:
```json
{
"mcpServers": {
"notion": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"clientId": "your-slack-client-id",
"redirectHost": "localhost"
}
}
}
}
```
> **Note:** This only applies when using a pre-registered `clientId`. When DCR is used (no `clientId`
> configured), Coyote registers its own redirect URI so the host format never mismatches.
### Using a static token instead of OAuth ### Using a static token instead of OAuth
If the server issues long-lived tokens (e.g. Notion internal integrations), you can skip the OAuth flow If the server issues long-lived tokens (e.g. Notion internal integrations), you can skip the OAuth flow