1+ #!/usr/bin/env node
2+ import { Server } from "@modelcontextprotocol/sdk/server/index.js" ;
3+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js" ;
4+ import { registerTools } from "./tools.js" ;
5+ import { setupHandlers } from "./handlers.js" ;
6+ import fs from 'node:fs' ;
7+ import path from 'node:path' ;
8+ import os from 'node:os' ;
9+
10+ const parseArgs = ( ) => {
11+ const args = process . argv . slice ( 2 ) ;
12+ let browserType = null ;
13+
14+ for ( let i = 0 ; i < args . length ; i ++ ) {
15+ if ( args [ i ] === '--browser' && i + 1 < args . length ) {
16+ browserType = args [ i + 1 ] . toLowerCase ( ) ;
17+ break ;
18+ }
19+ }
20+
21+ if ( browserType ) {
22+ process . env . MCP_BROWSER_TYPE = browserType ;
23+
24+ try {
25+ const configPath = path . join ( os . homedir ( ) , '.mcp_browser_agent_config.json' ) ;
26+ const config = fs . existsSync ( configPath )
27+ ? JSON . parse ( fs . readFileSync ( configPath , 'utf8' ) )
28+ : { } ;
29+ config . browserType = browserType ;
30+ fs . writeFileSync ( configPath , JSON . stringify ( config , null , 2 ) ) ;
31+ } catch ( error ) {
32+ console . error ( 'Error saving browser type to config:' , error ) ;
33+ }
34+ }
35+ } ;
36+
37+ async function startServer ( ) {
38+ parseArgs ( ) ;
39+ const server = new Server (
40+ {
41+ name : "mcp-browser-agent" ,
42+ version : "0.1.0" ,
43+ } ,
44+ {
45+ capabilities : {
46+ resources : { } ,
47+ tools : { } ,
48+ } ,
49+ }
50+ ) ;
51+
52+ const tools = registerTools ( ) ;
53+ setupHandlers ( server , tools ) ;
54+ const transport = new StdioServerTransport ( ) ;
55+ await server . connect ( transport ) ;
56+ }
57+
58+ startServer ( ) . catch ( error => {
59+ console . error ( "Server error:" , error ) ;
60+ process . exit ( 1 ) ;
61+ } ) ;
0 commit comments