MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / modernHandlerFor

Function modernHandlerFor

apps/local/src/mcp.ts:185–236  ·  view source on GitHub ↗
(resource: McpResource)

Source from the content-addressed store, hash-verified

183 };
184
185 const modernHandlerFor = (resource: McpResource): McpHttpHandler => {
186 const key = mcpResourceKey(resource);
187 const cached = modernHandlers.get(key);
188 if (cached) return cached;
189
190 const handler = createMcpHandler(
191 (context) => {
192 const request = context.requestInfo;
193 if (!request) {
194 // oxlint-disable-next-line executor/no-effect-escape-hatch -- boundary: the third-party McpServerFactory Promise contract has no typed failure channel; missing documented request context is an SDK defect
195 return Effect.runPromise(Effect.die("Modern MCP request context has no request"));
196 }
197 const parsedBody = modernRequestBodies.get(request);
198 return Effect.runPromise(
199 Effect.gen(function* () {
200 const resourceConfig = yield* Effect.promise(() => configForResource(resource));
201 const clientCapabilities = yield* clientCapabilitiesFromRequest(request);
202 const requestStateBinding = yield* Effect.promise(() =>
203 mcpRequestStateBindingFromBody({
204 body: parsedBody,
205 principal: "local",
206 resource,
207 }),
208 );
209 const server = yield* buildMcpServer({
210 ...resourceConfig.config,
211 artifactsEnabled: readArtifactsEnabled(request),
212 appsEnabled: appsEnabledForClientCapabilities(clientCapabilities),
213 requestStateSigningKey: signingKey(),
214 requestStatePrincipal: "local",
215 ...(requestStateBinding === null ? {} : { requestStateBinding }),
216 });
217 if (resourceConfig.close) {
218 const closeServer = server.close.bind(server);
219 const closeConfig = resourceConfig.close;
220 let closed = false;
221 server.close = async () => {
222 if (closed) return;
223 closed = true;
224 await ignoreClose(closeServer);
225 await ignoreClose(closeConfig);
226 };
227 }
228 return server;
229 }),
230 );
231 },
232 { legacy: "reject" },
233 );
234 modernHandlers.set(key, handler);
235 return handler;
236 };
237
238 return {
239 handleRequest: async (request) => {

Callers 1

createMcpRequestHandlerFunction · 0.85

Calls 11

buildMcpServerFunction · 0.90
readArtifactsEnabledFunction · 0.90
mcpResourceKeyFunction · 0.85
configForResourceFunction · 0.85
signingKeyFunction · 0.85
setMethod · 0.80
ignoreCloseFunction · 0.70
getMethod · 0.65

Tested by

no test coverage detected