You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: explicit OAuth configuration for remote MCP servers (#2248)
Implement support for pre-registered OAuth clients with remote MCP servers.
This allows using servers that do not support Dynamic Client Registration (RFC 7591),
such as Slack and GitHub MCP.
Key features:
- New RemoteOAuthConfig struct for clientId, clientSecret, callbackPort, and scopes
- Explicit OAuth priority over dynamic registration
- Configurable callback port for OAuth flow
- Custom scope support for authorization requests
- Updated agent-schema.json for validation (using camelCase as requested)
- Comprehensive tests and example configuration
Fixes root cause of #416
Addresses #2248
Copy file name to clipboardExpand all lines: agent-schema.json
+36Lines changed: 36 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1205,13 +1205,49 @@
1205
1205
"additionalProperties": {
1206
1206
"type": "string"
1207
1207
}
1208
+
},
1209
+
"oauth": {
1210
+
"$ref": "#/definitions/RemoteOAuthConfig",
1211
+
"description": "Explicit OAuth configuration for remote MCP servers that do not support Dynamic Client Registration"
1208
1212
}
1209
1213
},
1210
1214
"required": [
1211
1215
"url"
1212
1216
],
1213
1217
"additionalProperties": false
1214
1218
},
1219
+
"RemoteOAuthConfig": {
1220
+
"type": "object",
1221
+
"description": "Explicit OAuth configuration for remote MCP servers. Allows using pre-registered OAuth clients with servers that do not support Dynamic Client Registration (RFC 7591), such as the Slack MCP server.",
1222
+
"properties": {
1223
+
"clientId": {
1224
+
"type": "string",
1225
+
"description": "OAuth client ID (required for explicit OAuth)",
1226
+
"examples": ["3660753192626.8903469228982"]
1227
+
},
1228
+
"clientSecret": {
1229
+
"type": "string",
1230
+
"description": "OAuth client secret (optional, for confidential clients)"
1231
+
},
1232
+
"callbackPort": {
1233
+
"type": "integer",
1234
+
"description": "Fixed port for the OAuth callback server (optional). When not specified, a random available port is used.",
1235
+
"examples": [3118]
1236
+
},
1237
+
"scopes": {
1238
+
"type": "array",
1239
+
"description": "List of OAuth scopes to request (optional). When not specified, default scopes from the server are used.",
1240
+
"items": {
1241
+
"type": "string"
1242
+
},
1243
+
"examples": [
1244
+
["search:read.public", "chat:write"]
1245
+
]
1246
+
}
1247
+
},
1248
+
"required": ["clientId"],
1249
+
"additionalProperties": false
1250
+
},
1215
1251
"ScriptShellToolConfig": {
1216
1252
"type": "object",
1217
1253
"description": "Configuration for custom shell tool",
0 commit comments