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

Function create

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

Source from the content-addressed store, hash-verified

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