1010"""
1111
1212# Standard library imports
13- import os
1413import asyncio
1514import json
1615import logging
16+ import os
17+ import sys
18+
19+ # Set up SSE transport
20+ import threading
21+ import time
1722import traceback
1823import uuid
1924from datetime import datetime
2025from typing import Any , Dict , Optional , Tuple , Union
21- import time
22- import sys
2326
2427# Third-party imports
2528import click
26- from dotenv import load_dotenv
27- from pythonjsonlogger import jsonlogger
29+ import mcp . types as types
30+ import uvicorn
2831
2932# Browser-use library imports
3033from browser_use import Agent
3134from browser_use .browser .browser import Browser , BrowserConfig
3235from browser_use .browser .context import BrowserContext , BrowserContextConfig
33-
34- # MCP server components
35- from mcp .server import Server
36- import mcp .types as types
36+ from dotenv import load_dotenv
37+ from langchain_core .language_models import BaseLanguageModel
3738
3839# LLM provider
3940from langchain_openai import ChatOpenAI
40- from langchain_core .language_models import BaseLanguageModel
41+
42+ # MCP server components
43+ from mcp .server import Server
44+ from mcp .server .sse import SseServerTransport
45+ from pythonjsonlogger import jsonlogger
46+ from starlette .applications import Starlette
47+ from starlette .routing import Mount , Route
4148
4249# Configure logging
4350logger = logging .getLogger ()
@@ -805,14 +812,6 @@ def main(
805812 locale = locale ,
806813 )
807814
808- # Set up SSE transport
809- from mcp .server .sse import SseServerTransport
810- from starlette .applications import Starlette
811- from starlette .routing import Mount , Route
812- import uvicorn
813- import asyncio
814- import threading
815-
816815 sse = SseServerTransport ("/messages/" )
817816
818817 # Create the Starlette app for SSE
@@ -891,15 +890,15 @@ def run_uvicorn():
891890
892891 uvicorn .run (
893892 starlette_app ,
894- host = "0.0.0.0" ,
893+ host = "0.0.0.0" , # nosec
895894 port = port ,
896895 log_config = log_config ,
897896 log_level = "info" ,
898897 )
899898
900899 # If proxy mode is enabled, run both the SSE server and mcp-proxy
901900 if stdio :
902- import subprocess
901+ import subprocess # nosec
903902
904903 # Start the SSE server in a separate thread
905904 sse_thread = threading .Thread (target = run_uvicorn )
@@ -924,7 +923,8 @@ def run_uvicorn():
924923 )
925924
926925 try :
927- with subprocess .Popen (proxy_cmd ) as proxy_process :
926+ # Using trusted command arguments from CLI parameters
927+ with subprocess .Popen (proxy_cmd ) as proxy_process : # nosec
928928 proxy_process .wait ()
929929 except Exception as e :
930930 logger .error (f"Error starting mcp-proxy: { str (e )} " )
0 commit comments