move entrypoint to host.ts

This commit is contained in:
Simon Knott
2025-08-21 11:17:53 +02:00
parent d12b5aab18
commit 74e3ab5267
2 changed files with 18 additions and 9 deletions

View File

@@ -25,7 +25,7 @@ import { ProxyBackend } from './mcp/proxyBackend.js';
import { BrowserServerBackend } from './browserServerBackend.js'; import { BrowserServerBackend } from './browserServerBackend.js';
import { ExtensionContextFactory } from './extension/extensionContextFactory.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'; import type { MCPProvider } from './mcp/proxyBackend.js';
program program
@@ -86,13 +86,7 @@ program
} }
if (options.vscode) { if (options.vscode) {
const serverBackendFactory: mcpServer.ServerBackendFactory = { await runVSCodeTools(config);
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);
return; return;
} }

View File

@@ -17,13 +17,17 @@
import { z } from 'zod'; import { z } from 'zod';
import { zodToJsonSchema } from 'zod-to-json-schema'; import { zodToJsonSchema } from 'zod-to-json-schema';
import { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { ListRootsRequestSchema, PingRequestSchema } from '@modelcontextprotocol/sdk/types.js'; import { ListRootsRequestSchema, PingRequestSchema } from '@modelcontextprotocol/sdk/types.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'; import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
import * as mcpServer from '../mcp/server.js';
import { logUnhandledError } from '../utils/log.js'; import { logUnhandledError } from '../utils/log.js';
import { packageJSON } from '../utils/package.js'; import { packageJSON } from '../utils/package.js';
import { FullConfig } from '../config.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 { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
import type { ClientVersion, ServerBackend } from '../mcp/server.js'; import type { ClientVersion, ServerBackend } from '../mcp/server.js';
import type { Root, Tool, CallToolResult, CallToolRequest } from '@modelcontextprotocol/sdk/types.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'), 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'; name = 'Playwright MCP Client Switcher';
version = packageJSON.version; version = packageJSON.version;
@@ -130,3 +134,14 @@ export class VSCodeProxyBackend implements ServerBackend {
this._currentClient = client; 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;
}