Skip to content

Commit 42020c3

Browse files
authored
fix(mcp): use getBaseUrl for OAuth discovery metadata URLs (#3283)
* fix(mcp): use getBaseUrl for OAuth discovery metadata URLs * fix(mcp): remove unused request params from discovery route handlers
1 parent a98463a commit 42020c3

File tree

9 files changed

+32
-29
lines changed

9 files changed

+32
-29
lines changed
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { NextRequest, NextResponse } from 'next/server'
1+
import type { NextResponse } from 'next/server'
22
import { createMcpAuthorizationServerMetadataResponse } from '@/lib/mcp/oauth-discovery'
33

4-
export async function GET(request: NextRequest): Promise<NextResponse> {
5-
return createMcpAuthorizationServerMetadataResponse(request)
4+
export async function GET(): Promise<NextResponse> {
5+
return createMcpAuthorizationServerMetadataResponse()
66
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { NextRequest, NextResponse } from 'next/server'
1+
import type { NextResponse } from 'next/server'
22
import { createMcpAuthorizationServerMetadataResponse } from '@/lib/mcp/oauth-discovery'
33

4-
export async function GET(request: NextRequest): Promise<NextResponse> {
5-
return createMcpAuthorizationServerMetadataResponse(request)
4+
export async function GET(): Promise<NextResponse> {
5+
return createMcpAuthorizationServerMetadataResponse()
66
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { NextRequest, NextResponse } from 'next/server'
1+
import type { NextResponse } from 'next/server'
22
import { createMcpAuthorizationServerMetadataResponse } from '@/lib/mcp/oauth-discovery'
33

4-
export async function GET(request: NextRequest): Promise<NextResponse> {
5-
return createMcpAuthorizationServerMetadataResponse(request)
4+
export async function GET(): Promise<NextResponse> {
5+
return createMcpAuthorizationServerMetadataResponse()
66
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { NextRequest, NextResponse } from 'next/server'
1+
import type { NextResponse } from 'next/server'
22
import { createMcpProtectedResourceMetadataResponse } from '@/lib/mcp/oauth-discovery'
33

4-
export async function GET(request: NextRequest): Promise<NextResponse> {
5-
return createMcpProtectedResourceMetadataResponse(request)
4+
export async function GET(): Promise<NextResponse> {
5+
return createMcpProtectedResourceMetadataResponse()
66
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { NextRequest, NextResponse } from 'next/server'
1+
import type { NextResponse } from 'next/server'
22
import { createMcpProtectedResourceMetadataResponse } from '@/lib/mcp/oauth-discovery'
33

4-
export async function GET(request: NextRequest): Promise<NextResponse> {
5-
return createMcpProtectedResourceMetadataResponse(request)
4+
export async function GET(): Promise<NextResponse> {
5+
return createMcpProtectedResourceMetadataResponse()
66
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { NextRequest, NextResponse } from 'next/server'
1+
import type { NextResponse } from 'next/server'
22
import { createMcpAuthorizationServerMetadataResponse } from '@/lib/mcp/oauth-discovery'
33

4-
export async function GET(request: NextRequest): Promise<NextResponse> {
5-
return createMcpAuthorizationServerMetadataResponse(request)
4+
export async function GET(): Promise<NextResponse> {
5+
return createMcpAuthorizationServerMetadataResponse()
66
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { NextRequest, NextResponse } from 'next/server'
1+
import type { NextResponse } from 'next/server'
22
import { createMcpProtectedResourceMetadataResponse } from '@/lib/mcp/oauth-discovery'
33

4-
export async function GET(request: NextRequest): Promise<NextResponse> {
5-
return createMcpProtectedResourceMetadataResponse(request)
4+
export async function GET(): Promise<NextResponse> {
5+
return createMcpProtectedResourceMetadataResponse()
66
}

apps/sim/app/api/mcp/copilot/route.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import {
3232
import { DIRECT_TOOL_DEFS, SUBAGENT_TOOL_DEFS } from '@/lib/copilot/tools/mcp/definitions'
3333
import { env } from '@/lib/core/config/env'
3434
import { RateLimiter } from '@/lib/core/rate-limiter'
35+
import { getBaseUrl } from '@/lib/core/utils/urls'
3536
import {
3637
authorizeWorkflowByWorkspacePermission,
3738
resolveWorkflowIdForUser,
@@ -542,7 +543,8 @@ export async function POST(request: NextRequest) {
542543
const hasAuth = request.headers.has('authorization') || request.headers.has('x-api-key')
543544

544545
if (!hasAuth) {
545-
const resourceMetadataUrl = `${request.nextUrl.origin}/.well-known/oauth-protected-resource/api/mcp/copilot`
546+
const origin = getBaseUrl().replace(/\/$/, '')
547+
const resourceMetadataUrl = `${origin}/.well-known/oauth-protected-resource/api/mcp/copilot`
546548
return new NextResponse(JSON.stringify({ error: 'unauthorized' }), {
547549
status: 401,
548550
headers: {

apps/sim/lib/mcp/oauth-discovery.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import { type NextRequest, NextResponse } from 'next/server'
1+
import { NextResponse } from 'next/server'
2+
import { getBaseUrl } from '@/lib/core/utils/urls'
23

3-
function getOrigin(request: NextRequest): string {
4-
return request.nextUrl.origin
4+
function getOrigin(): string {
5+
return getBaseUrl().replace(/\/$/, '')
56
}
67

7-
export function createMcpAuthorizationServerMetadataResponse(request: NextRequest): NextResponse {
8-
const origin = getOrigin(request)
8+
export function createMcpAuthorizationServerMetadataResponse(): NextResponse {
9+
const origin = getOrigin()
910
const resource = `${origin}/api/mcp/copilot`
1011

1112
return NextResponse.json(
@@ -34,8 +35,8 @@ export function createMcpAuthorizationServerMetadataResponse(request: NextReques
3435
)
3536
}
3637

37-
export function createMcpProtectedResourceMetadataResponse(request: NextRequest): NextResponse {
38-
const origin = getOrigin(request)
38+
export function createMcpProtectedResourceMetadataResponse(): NextResponse {
39+
const origin = getOrigin()
3940
const resource = `${origin}/api/mcp/copilot`
4041
const authorizationServerIssuer = origin
4142

0 commit comments

Comments
 (0)