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

Function create

packages/hosts/mcp/src/in-memory-session-store.ts:247–289  ·  view source on GitHub ↗
(
    principal: Principal,
    resource: McpResource,
    request: Request,
  )

Source from the content-addressed store, hash-verified

245
246 /** Open a new session: build the server, connect a transport, drive the request. */
247 const create = (
248 principal: Principal,
249 resource: McpResource,
250 request: Request,
251 ): Effect.Effect<McpDispatchResult> => {
252 let createdSessionId: string | null = null;
253 return buildServer(principal, {
254 ...buildOptionsFor(request, () => createdSessionId),
255 resource,
256 }).pipe(
257 Effect.flatMap(({ mcpServer, engine }) =>
258 Effect.gen(function* () {
259 const transport = new WebStandardStreamableHTTPServerTransport({
260 sessionIdGenerator: () => crypto.randomUUID(),
261 enableJsonResponse: true,
262 onsessioninitialized: (sid) => {
263 createdSessionId = sid;
264 transports.set(sid, transport);
265 servers.set(sid, mcpServer);
266 owners.set(sid, { principal, resource });
267 engines.set(sid, engine);
268 },
269 onsessionclosed: (sid) => void dispose(sid, { server: true }),
270 });
271 transport.onclose = () => {
272 const sid = transport.sessionId;
273 if (sid) void dispose(sid, { server: true });
274 };
275 yield* Effect.promise(() => mcpServer.connect(transport));
276 // The session id is minted on the first (initialize) request, so we
277 // drive `handleRequest` here; if no id results we close eagerly.
278 return yield* runHandleRequest(transport, request, () => {
279 void ignoreClose(() => transport.close());
280 void ignoreClose(() => mcpServer.close());
281 });
282 }),
283 ),
284 // A build failure has nowhere typed to go in the envelope; render a 500.
285 Effect.catchTag("McpEngineBuildError", () =>
286 Effect.succeed(jsonRpcError(500, -32603, "Internal server error")),
287 ),
288 );
289 };
290
291 const store: McpSessionStore["Service"] = {
292 dispatch: ({ request, principal, resource, sessionId }: McpDispatchInput) =>

Callers 1

Calls 8

buildOptionsForFunction · 0.85
runHandleRequestFunction · 0.85
jsonRpcErrorFunction · 0.85
setMethod · 0.80
disposeFunction · 0.70
ignoreCloseFunction · 0.70
connectMethod · 0.65
closeMethod · 0.65

Tested by

no test coverage detected