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

Function withClient

packages/hosts/mcp/src/tool-server.test.ts:74–94  ·  view source on GitHub ↗
(
  engine: ExecutionEngine<E>,
  capabilities: ClientCapabilities,
  fn: (client: Client) => Promise<void>,
  config?: TestServerConfig<E> & { readonly tracer?: Tracer.Tracer },
)

Source from the content-addressed store, hash-verified

72
73/** Connect a real MCP Client to our executor MCP server over in-memory transports. */
74const withClient = async <E extends Cause.YieldableError>(
75 engine: ExecutionEngine<E>,
76 capabilities: ClientCapabilities,
77 fn: (client: Client) => Promise<void>,
78 config?: TestServerConfig<E> & { readonly tracer?: Tracer.Tracer },
79) => {
80 const { tracer, ...serverConfig } = config ?? {};
81 const create = createExecutorMcpServer({ engine, ...serverConfig });
82 const mcpServer = await Effect.runPromise(tracer ? Effect.withTracer(create, tracer) : create);
83 const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
84 const client = new Client({ name: "test-client", version: "1.0.0" }, { capabilities });
85 await mcpServer.connect(serverTransport);
86 await client.connect(clientTransport);
87 // oxlint-disable-next-line executor/no-try-catch-or-throw -- boundary: test helper must close MCP transports after async client assertions
88 try {
89 await fn(client);
90 } finally {
91 await clientTransport.close();
92 await serverTransport.close();
93 }
94};
95
96const withNativeClient = async <E extends Cause.YieldableError>(
97 engine: ExecutionEngine<E>,

Callers 3

withNativeClientFunction · 0.70
withTracedClientFunction · 0.70

Calls 3

createExecutorMcpServerFunction · 0.90
connectMethod · 0.65
closeMethod · 0.65

Tested by

no test coverage detected