@aiwerk/mcp-bridge 2.8.32 → 2.8.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -594,6 +594,44 @@ async function cmdInstall(serverName, args, logger) {
594
594
  else {
595
595
  process.stdout.write(`All required environment variables are set. Ready to use.\n`);
596
596
  }
597
+ // Pre-discover tools and cache them (so direct mode has tools on first start)
598
+ // Try even with missing env vars — many servers respond to tools/list without auth
599
+ process.stdout.write(`\nDiscovering tools...\n`);
600
+ {
601
+ try {
602
+ const { StdioTransport } = await import("../src/transport-stdio.js");
603
+ const { SseTransport } = await import("../src/transport-sse.js");
604
+ const { StreamableHttpTransport } = await import("../src/transport-streamable-http.js");
605
+ const { fetchToolsList, initializeProtocol, PACKAGE_VERSION } = await import("../src/protocol.js");
606
+ let transport;
607
+ if (serverConfig.transport === "stdio") {
608
+ transport = new StdioTransport(serverConfig, { servers: {} }, logger, async () => { });
609
+ }
610
+ else if (serverConfig.transport === "sse") {
611
+ transport = new SseTransport(serverConfig, { servers: {} }, logger, async () => { });
612
+ }
613
+ else if (serverConfig.transport === "streamable-http") {
614
+ transport = new StreamableHttpTransport(serverConfig, { servers: {} }, logger, async () => { });
615
+ }
616
+ if (transport) {
617
+ await transport.connect();
618
+ await initializeProtocol(transport, PACKAGE_VERSION);
619
+ const tools = await fetchToolsList(transport);
620
+ // Save to cache
621
+ const cacheToolDir = join(configDir, "cache");
622
+ mkdirSync(cacheToolDir, { recursive: true });
623
+ writeFileSync(join(cacheToolDir, `${serverName}-tools.json`), JSON.stringify(tools, null, 2), "utf-8");
624
+ process.stdout.write(`✓ Cached ${tools.length} tools from "${serverName}"\n`);
625
+ // Disconnect
626
+ await transport.disconnect().catch(() => { });
627
+ }
628
+ }
629
+ catch (discErr) {
630
+ // Non-fatal: tool discovery is a nice-to-have, server still installed
631
+ logger.info(`Tool discovery skipped: ${discErr instanceof Error ? discErr.message : String(discErr)}`);
632
+ process.stdout.write(`Tool discovery skipped (server will discover tools on first use).\n`);
633
+ }
634
+ }
597
635
  }
598
636
  async function cmdUpdate(logger, checkOnly) {
599
637
  if (checkOnly) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiwerk/mcp-bridge",
3
- "version": "2.8.32",
3
+ "version": "2.8.34",
4
4
  "description": "Standalone MCP server that multiplexes multiple MCP servers into one interface",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",