UNPKG

levisnkyyy-browser-use-mcp

Version:

MCP server for Browser-Use API

80 lines (66 loc) 2.01 kB
import { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'; import { spawn } from 'child_process'; async function main() { // Start the MCP server const serverProcess = spawn('node', ['dist/index.js'], { env: { ...process.env, BROWSER_USE_API_URL: 'http://localhost:8000', }, }); // Create MCP client const transport = new StdioClientTransport({ command: 'node', args: ['dist/index.js'], env: { BROWSER_USE_API_URL: 'http://localhost:8000', }, }); const client = new Client( { name: 'browser-use-example-client', version: '1.0.0', }, { capabilities: {}, } ); await client.connect(transport); // List available tools const tools = await client.listTools(); console.log('Available tools:', tools.tools.map((t) => t.name)); // Create a browser automation task const createResult = await client.callTool('browser_use_create_task', { task: 'Navigate to https://example.com and get the page title', browser_config: { headless: true, }, }); console.log('Task created:', createResult); // Get task status if (createResult.content?.[0]?.type === 'text') { const taskData = JSON.parse(createResult.content[0].text); const taskId = taskData.task_id; // Poll for task completion let taskComplete = false; while (!taskComplete) { await new Promise((resolve) => setTimeout(resolve, 2000)); // Wait 2 seconds const statusResult = await client.callTool('browser_use_get_task', { task_id: taskId, }); if (statusResult.content?.[0]?.type === 'text') { const status = JSON.parse(statusResult.content[0].text); console.log('Task status:', status.status); if (status.status === 'completed' || status.status === 'failed') { taskComplete = true; console.log('Task result:', status.result || status.error); } } } } // Clean up await client.close(); serverProcess.kill(); } main().catch(console.error);