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

Function create

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

Source from the content-addressed store, hash-verified

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