diff --git a/.changeset/olive-dodos-dress.md b/.changeset/olive-dodos-dress.md new file mode 100644 index 0000000000..bab8e342ae --- /dev/null +++ b/.changeset/olive-dodos-dress.md @@ -0,0 +1,5 @@ +--- +"@lynx-js/devtool-mcp-server": patch +--- + +Export `registerTool` and `defineTool`. diff --git a/.changeset/quiet-poems-turn.md b/.changeset/quiet-poems-turn.md new file mode 100644 index 0000000000..0551d0db71 --- /dev/null +++ b/.changeset/quiet-poems-turn.md @@ -0,0 +1,5 @@ +--- +"@lynx-js/devtool-mcp-server": patch +--- + +Fix failed to connect to client. diff --git a/packages/mcp-servers/devtool-mcp-server/rslib.config.ts b/packages/mcp-servers/devtool-mcp-server/rslib.config.ts index 5e55b64db5..5fa8797a52 100644 --- a/packages/mcp-servers/devtool-mcp-server/rslib.config.ts +++ b/packages/mcp-servers/devtool-mcp-server/rslib.config.ts @@ -9,7 +9,16 @@ export default defineConfig({ pluginPublint({ throwOn: 'suggestion' }), ], lib: [ - { format: 'esm', syntax: 'es2022', dts: { bundle: true } }, + { + format: 'esm', + syntax: 'es2022', + dts: { + bundle: { + // Avoid bundling `zod` types. + bundledPackages: [], + }, + }, + }, { format: 'esm', syntax: 'es2022', diff --git a/packages/mcp-servers/devtool-mcp-server/src/connector.ts b/packages/mcp-servers/devtool-mcp-server/src/connector.ts index 8e340149de..71c5b3cd00 100644 --- a/packages/mcp-servers/devtool-mcp-server/src/connector.ts +++ b/packages/mcp-servers/devtool-mcp-server/src/connector.ts @@ -496,13 +496,6 @@ export async function ensureLynxConnected(): Promise { if (devices.length === 0) { throw new Error('Failed to connect to Lynx: no device found.'); } - devices.forEach((device) => { - device.startWatchClient(); - }); - } else { - for (const device of connector.devices.values()) { - device.startWatchClient(); - } } return connector; diff --git a/packages/mcp-servers/devtool-mcp-server/src/index.ts b/packages/mcp-servers/devtool-mcp-server/src/index.ts index 594bf581d7..bc2e8ce946 100644 --- a/packages/mcp-servers/devtool-mcp-server/src/index.ts +++ b/packages/mcp-servers/devtool-mcp-server/src/index.ts @@ -85,7 +85,7 @@ const TOOLS = [ ListConsole, ] as unknown as ToolDefinition[]; -function registerTool(mcpServer: McpServer, tool: ToolDefinition): void { +export function registerTool(mcpServer: McpServer, tool: ToolDefinition): void { mcpServer.registerTool( tool.name, { @@ -125,3 +125,6 @@ export function setupServer(mcpServer: McpServer): void { return; } + +export { defineTool, type ToolDefinition } from './tools/defineTool.ts'; +export * as Schema from './schema/index.ts'; diff --git a/packages/mcp-servers/devtool-mcp-server/src/tools/Device/ListClients.ts b/packages/mcp-servers/devtool-mcp-server/src/tools/Device/ListClients.ts index 57be483c21..7f4f868665 100644 --- a/packages/mcp-servers/devtool-mcp-server/src/tools/Device/ListClients.ts +++ b/packages/mcp-servers/devtool-mcp-server/src/tools/Device/ListClients.ts @@ -27,11 +27,16 @@ export const ListClients = /*#__PURE__*/ defineTool({ connector.on('client-connected', onClientConnected); setTimeout(() => { connector.off('client-connected', onClientConnected); - reject( - new Error( - 'List clients timeout. Please open App with Lynx Engine and try again.', - ), - ); + + if (connector.usbClients.size === 0) { + reject( + new Error( + 'List clients timeout. Please open App with Lynx Engine and try again.', + ), + ); + } else { + resolve(); + } }, 1000); function onClientConnected() { connector.off('client-connected', onClientConnected);