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

Function withClient

packages/hosts/mcp/src/tool-server.test.ts:72–92  ·  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

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