mirror of
https://github.com/supermemoryai/supermemory.git
synced 2026-10-09 03:18:04 +00:00
fix: oauth discovery not working with some clients (#666)
### TL;DR TESTING REMAINING. This is my hypothesis. @MaheshtheDev please carry on from here or we can test in prod. Added a proxy endpoint for OAuth authorization server metadata to support non-compliant MCP clients. ### What changed? Added a new endpoint `/.well-known/oauth-authorization-server` to the MCP server that proxies requests to the main API. This endpoint fetches the authorization server metadata from the API and returns it to clients. ### How to test? 1. Make a GET request to `/.well-known/oauth-authorization-server` on the MCP server 2. Verify that it returns the same metadata as the main API's `/.well-known/oauth-authorization-server` endpoint 3. Test with a client that expects to find the authorization server metadata on the MCP domain ### Why make this change? Some MCP clients don't correctly follow the OAuth specification. Instead of using the `authorization_servers` array provided in the protected resource metadata, they look for the authorization server metadata directly on the MCP server domain. This proxy endpoint ensures compatibility with these non-compliant clients without requiring them to be updated.
This commit is contained in:
parent
aa308f3e91
commit
e94134cd26
1 changed files with 27 additions and 0 deletions
|
|
@ -63,6 +63,33 @@ app.get("/.well-known/oauth-protected-resource", (c) => {
|
|||
})
|
||||
})
|
||||
|
||||
// Proxy endpoint for MCP clients that don't follow the spec correctly
|
||||
// Some clients look for oauth-authorization-server on the MCP server domain
|
||||
// instead of following the authorization_servers array
|
||||
app.get("/.well-known/oauth-authorization-server", async (c) => {
|
||||
const apiUrl = c.env.API_URL || DEFAULT_API_URL
|
||||
|
||||
try {
|
||||
// Fetch the authorization server metadata from the main API
|
||||
const response = await fetch(
|
||||
`${apiUrl}/.well-known/oauth-authorization-server`,
|
||||
)
|
||||
|
||||
if (!response.ok) {
|
||||
return c.json(
|
||||
{ error: "Failed to fetch authorization server metadata" },
|
||||
response.status,
|
||||
)
|
||||
}
|
||||
|
||||
const metadata = await response.json()
|
||||
return c.json(metadata)
|
||||
} catch (error) {
|
||||
console.error("Error fetching OAuth authorization server metadata:", error)
|
||||
return c.json({ error: "Internal server error" }, 500)
|
||||
}
|
||||
})
|
||||
|
||||
const mcpHandler = SupermemoryMCP.mount("/mcp", {
|
||||
binding: "MCP_SERVER",
|
||||
corsOptions: {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue