@@ -20,6 +20,35 @@ const requestHandler = createRequestHandler(
20
20
import . meta. env . MODE ,
21
21
) ;
22
22
23
+ // Helper function to add CORS headers to a response
24
+ const addCorsHeaders = ( response : Response ) : Response => {
25
+ const headers = new Headers ( response . headers ) ;
26
+ headers . set ( "Access-Control-Allow-Origin" , "http://localhost:5173" ) ;
27
+ headers . set ( "Access-Control-Allow-Methods" , "GET, POST, OPTIONS" ) ;
28
+ headers . set ( "Access-Control-Allow-Headers" , "Content-Type, Authorization" ) ;
29
+ headers . set ( "Access-Control-Allow-Credentials" , "true" ) ;
30
+
31
+ return new Response ( response . body , {
32
+ status : response . status ,
33
+ statusText : response . statusText ,
34
+ headers,
35
+ } ) ;
36
+ } ;
37
+
38
+ // Create CORS preflight response
39
+ const handleCorsPreflightRequest = ( ) : Response => {
40
+ return new Response ( null , {
41
+ status : 204 , // No content
42
+ headers : {
43
+ "Access-Control-Allow-Origin" : "*" ,
44
+ "Access-Control-Allow-Methods" : "GET, POST, OPTIONS" ,
45
+ "Access-Control-Allow-Headers" : "Content-Type" ,
46
+ "Access-Control-Allow-Credentials" : "true" ,
47
+ "Access-Control-Max-Age" : "86400" , // 24 hours
48
+ } ,
49
+ } ) ;
50
+ } ;
51
+
23
52
export class MyMCP extends McpAgent {
24
53
server = new McpServer ( {
25
54
name : "GitMCP" ,
@@ -67,6 +96,11 @@ const mcpHandler = MyMCP.mount("/*");
67
96
// Export a request handler that checks the transport header
68
97
export default {
69
98
async fetch ( request : Request , env : any , ctx : any ) {
99
+ // Handle CORS preflight requests
100
+ if ( request . method === "OPTIONS" ) {
101
+ return handleCorsPreflightRequest ( ) ;
102
+ }
103
+
70
104
const url = new URL ( request . url ) ;
71
105
const isSse =
72
106
request . headers . get ( "accept" ) ?. includes ( "text/event-stream" ) &&
0 commit comments