From 74e3ab526733840e1525bef2f64979dda86f816d Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Thu, 21 Aug 2025 11:17:53 +0200 Subject: [PATCH] move entrypoint to host.ts --- src/program.ts | 10 ++-------- src/vscode/host.ts | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/program.ts b/src/program.ts index 221672a..4a1cda9 100644 --- a/src/program.ts +++ b/src/program.ts @@ -25,7 +25,7 @@ import { ProxyBackend } from './mcp/proxyBackend.js'; import { BrowserServerBackend } from './browserServerBackend.js'; import { ExtensionContextFactory } from './extension/extensionContextFactory.js'; -import { VSCodeProxyBackend } from './vscode/host.js'; +import { runVSCodeTools } from './vscode/host.js'; import type { MCPProvider } from './mcp/proxyBackend.js'; program @@ -86,13 +86,7 @@ program } if (options.vscode) { - const serverBackendFactory: mcpServer.ServerBackendFactory = { - name: 'Playwright w/ vscode', - nameInConfig: 'playwright-vscode', - version: packageJSON.version, - create: () => new VSCodeProxyBackend(config, () => mcpServer.wrapInProcess(new BrowserServerBackend(config, browserContextFactory))) - }; - await mcpServer.start(serverBackendFactory, config.server); + await runVSCodeTools(config); return; } diff --git a/src/vscode/host.ts b/src/vscode/host.ts index e22d6c7..884f578 100644 --- a/src/vscode/host.ts +++ b/src/vscode/host.ts @@ -17,13 +17,17 @@ import { z } from 'zod'; import { zodToJsonSchema } from 'zod-to-json-schema'; + import { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { ListRootsRequestSchema, PingRequestSchema } from '@modelcontextprotocol/sdk/types.js'; import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'; +import * as mcpServer from '../mcp/server.js'; import { logUnhandledError } from '../utils/log.js'; import { packageJSON } from '../utils/package.js'; import { FullConfig } from '../config.js'; +import { BrowserServerBackend } from '../browserServerBackend.js'; +import { contextFactory } from '../browserContextFactory.js'; import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js'; import type { ClientVersion, ServerBackend } from '../mcp/server.js'; import type { Root, Tool, CallToolResult, CallToolRequest } from '@modelcontextprotocol/sdk/types.js'; @@ -33,7 +37,7 @@ const contextSwitchOptions = z.object({ lib: z.string().optional().describe('The library to use for the connection'), }); -export class VSCodeProxyBackend implements ServerBackend { +class VSCodeProxyBackend implements ServerBackend { name = 'Playwright MCP Client Switcher'; version = packageJSON.version; @@ -130,3 +134,14 @@ export class VSCodeProxyBackend implements ServerBackend { this._currentClient = client; } } + +export async function runVSCodeTools(config: FullConfig) { + const serverBackendFactory: mcpServer.ServerBackendFactory = { + name: 'Playwright w/ vscode', + nameInConfig: 'playwright-vscode', + version: packageJSON.version, + create: () => new VSCodeProxyBackend(config, () => mcpServer.wrapInProcess(new BrowserServerBackend(config, contextFactory(config)))) + }; + await mcpServer.start(serverBackendFactory, config.server); + return; +}