Skip to content

Commit e393cb2

Browse files
committed
Add OAuth protected resource metadata endpoint for separate mode
Fixes MCP Inspector connection by providing OAuth discovery endpoint that points to the external auth server at http://localhost:3001
1 parent 34fe20e commit e393cb2

1 file changed

Lines changed: 17 additions & 7 deletions

File tree

src/index.ts

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { BearerAuthMiddlewareOptions, requireBearerAuth } from "@modelcontextprotocol/sdk/server/auth/middleware/bearerAuth.js";
2-
import { AuthRouterOptions, getOAuthProtectedResourceMetadataUrl, mcpAuthRouter, mcpAuthMetadataRouter } from "@modelcontextprotocol/sdk/server/auth/router.js";
2+
import { AuthRouterOptions, getOAuthProtectedResourceMetadataUrl, mcpAuthRouter } from "@modelcontextprotocol/sdk/server/auth/router.js";
33
import cors from "cors";
44
import rateLimit from "express-rate-limit";
55
import express from "express";
@@ -227,18 +227,28 @@ if (AUTH_MODE === 'integrated') {
227227
}
228228
}
229229

230-
// In separate mode, we don't serve OAuth metadata endpoints
231-
// The auth server handles all OAuth metadata
232-
// We only need to configure the bearer auth middleware
233-
230+
// In separate mode, we serve minimal OAuth metadata that points to the auth server
231+
// This allows OAuth clients to discover the authorization endpoints
232+
233+
// Serve OAuth protected resource metadata endpoint
234+
app.get('/.well-known/oauth-protected-resource', (req, res) => {
235+
res.json({
236+
resource: BASE_URI,
237+
authorization_server: AUTH_SERVER_URL,
238+
bearer_methods_supported: ['header'],
239+
resource_documentation: `${BASE_URI}/docs`,
240+
resource_signing_alg_values_supported: ['HS256']
241+
});
242+
});
243+
234244
// Configure bearer auth with external verifier
235245
const externalVerifier = new ExternalAuthVerifier(AUTH_SERVER_URL);
236-
246+
237247
const bearerAuthOptions: BearerAuthMiddlewareOptions = {
238248
verifier: externalVerifier,
239249
resourceMetadataUrl: getOAuthProtectedResourceMetadataUrl(new URL(BASE_URI)),
240250
};
241-
251+
242252
bearerAuth = requireBearerAuth(bearerAuthOptions);
243253
}
244254

0 commit comments

Comments
 (0)