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
message: "Unauthorized: Figma API key required. You must provide your own Figma API key via Authorization header (Bearer token), X-Figma-Api-Key header, or figmaApiKey query parameter. Get your API key from: https://help.figma.com/hc/en-us/articles/8085703771159-Manage-personal-access-tokens",
101
+
},
102
+
id: null,
103
+
});
104
+
return;
105
+
}
106
+
52
107
lettransport: StreamableHTTPServerTransport;
108
+
letmcpServer: McpServer;
53
109
54
110
if(sessionId&&transports.streamable[sessionId]){
55
-
// Reuse existing transport
111
+
// Reuse existing transport and server
56
112
Logger.log("Reusing existing StreamableHTTP transport for sessionId",sessionId);
57
113
transport=transports.streamable[sessionId];
114
+
mcpServer=sessionServers[sessionId];
58
115
}elseif(isInitializeRequest(req.body)){
59
-
Logger.log("New initialization request for StreamableHTTP sessionId",sessionId);
116
+
Logger.log("New initialization request for StreamableHTTP");
117
+
118
+
// Create new server instance for this user's API key
119
+
mcpServer=createServerForUser(userFigmaApiKey);
120
+
60
121
transport=newStreamableHTTPServerTransport({
61
122
sessionIdGenerator: ()=>randomUUID(),
62
-
onsessioninitialized: (sessionId)=>{
63
-
// Store the transport by session ID
64
-
transports.streamable[sessionId]=transport;
123
+
enableJsonResponse: true,// Enable JSON response mode for better remote compatibility
124
+
onsessioninitialized: (newSessionId)=>{
125
+
// Store the transport and server by session ID
126
+
transports.streamable[newSessionId]=transport;
127
+
sessionServers[newSessionId]=mcpServer;
128
+
Logger.log("Session initialized with ID:",newSessionId);
65
129
},
66
130
});
67
131
transport.onclose=()=>{
68
132
if(transport.sessionId){
69
133
deletetransports.streamable[transport.sessionId];
134
+
deletesessionServers[transport.sessionId];
70
135
}
71
136
};
72
137
awaitmcpServer.connect(transport);
73
138
}elseif(sessionId){
74
139
// Session ID provided but transport not found - create new one
75
140
Logger.log("Creating new transport for existing sessionId",sessionId);
141
+
142
+
// Create new server instance for this user's API key
143
+
mcpServer=createServerForUser(userFigmaApiKey);
144
+
76
145
transport=newStreamableHTTPServerTransport({
77
146
sessionIdGenerator: ()=>sessionId,
147
+
enableJsonResponse: true,// Enable JSON response mode for better remote compatibility
error: "Unauthorized: Figma API key required. You must provide your own Figma API key via Authorization header (Bearer token), X-Figma-Api-Key header, or figmaApiKey query parameter. Get your API key from: https://help.figma.com/hc/en-us/articles/8085703771159-Manage-personal-access-tokens",
0 commit comments