GitHub - shaun0927/openchrome: Open-source browser automation MCP server. Control your real Chrome from any AI agent.
핵심 포인트
- 1OpenChrome은 CDP를 통해 실제 Chrome을 제어하는 harness-engineered MCP 서버로, 기존 브라우저 자동화 방식 대비 현저히 적은 메모리로 병렬 작업을 수행하며 봇 감지를 우회합니다.
- 2Hint engine, circuit breaker, 자동 복구 런타임 및 토큰 효율적인 페이지 직렬화를 통해 LLM의 실수를 줄이고, 더 적은 토큰으로 안정적인 작업을 보장하며 110개 이상의 도구를 제공합니다.
- 3이 시스템은 병렬 연구, 인증된 스크래핑, 폼/플로우 자동화, UI 디버깅 등 다양한 활용 사례를 지원하며, 기존 자동화 도구에 비해 훨씬 빠르고 비용 효율적인 성능을 제공합니다.
OpenChrome은 실제 로그인된 Chrome을 CDP(Chrome DevTools Protocol)를 통해 제어하는 MCP(Master Control Program) 서버로, AI 에이전트가 브라우저를 자동화하는 데 사용됩니다. 이는 미들웨어, 별도의 브라우저, 재인증 과정 없이 단일 Chrome 프로세스를 사용하여 여러 개의 격리된 탭을 동시에 구동할 수 있어, 기존의 브라우저 자동화 도구(예: Playwright) 대비 압도적인 효율성과 안정성을 제공합니다.
OpenChrome의 핵심 방법론은 'Harness-Engineered' 아키텍처에 있습니다. 이는 단순한 브라우저 API 노출을 넘어, 에이전트의 실수를 줄이고, 자율적으로 복구하며, 토큰 사용량을 최적화하기 위한 여러 고급 기능을 통합합니다. 주요 구성 요소는 다음과 같습니다.
- Hint Engine: 30개 이상의 규칙을 통해 에이전트가 오류 패턴을 인식하고 오류가 전파되기 전에 수정할 수 있도록 돕습니다. 반복되는 패턴은 영구적인 규칙으로 승격됩니다.
- Recovery Runtime: 서버 내부에서 도구 호출에 대한 결정론적(deterministic)이고 제한된(bounded) 복구를 수행하여, LLM(Large Language Model)과의 불필요한 왕복 통신 없이 문제를 해결합니다.
- Ralph Engine: 요소 상호작용을 위한 7가지 전략의 폭포식(waterfall) 접근 방식을 제공합니다. 이는 AX(Accessibility) 클릭, CSS 셀렉터, CDP 좌표, JavaScript 실행, 키보드 입력, 원시(raw) 마우스 조작, 그리고 최종적으로 인간 개입(human escalation) 순으로 시도하여 상호작용의 성공률을 극대화합니다.
- Circuit Breaker: 엘리먼트, 페이지, 전역 세 가지 레벨에서 동작하며, 영구적으로 손상된 엘리먼트에 에이전트가 계속해서 토큰을 소모하는 것을 방지합니다.
- Outcome Classifier: 클릭과 같은 상호작용 후에 실제로 발생한 결과를 정확히 보고합니다(SUCCESS, SILENT_CLICK, WRONG_ELEMENT 등).
- 신뢰성 메커니즘: 프로세스 라이프사이클부터 MCP 게이트웨이에 이르기까지 8개의 방어 레이어와 49개의 신뢰성 메커니즘을 포함하여, 단일 장애가 서버 전체를 멈추게 하는 것을 방지합니다.
이러한 설계 덕분에 OpenChrome은 5개 사이트 태스크에서 LLM 호출 횟수를 약 80% 줄이고, 실행 시간을 80배 빠르게 하며, 비용을 5배 절감하는 결과를 보여줍니다.
주요 기능 및 활용 사례:
- 토큰 효율적인 페이지 읽기: 을 통해 페이지 DOM(Document Object Model)을 압축된 텍스트 형식으로 직렬화하여 원시 DOM 대비 5~15배 적은 토큰으로 정보를 전달합니다. 각 엘리먼트에는
#(텍스트 입력),$(버튼/제어),@(링크),%(시각적 타겟)와 같은 affordance marker가 포함되어 에이전트가 엘리먼트 유형을 쉽게 파악할 수 있습니다.[backendNodeId]같은 식별자는 엘리먼트의 수명 주기 동안 안정적으로 유지됩니다.oc_observe는read_page,query_dom,inspect,interact단계를 한 번의 호출로 통합하여 즉시 상호작용 가능한 번호 매겨진 목록을 반환합니다. - 병렬 세션: 단일 Chrome 인스턴스 내에서 여러 탭/레인을 통해 병렬 작업을 수행할 수 있으며,
workerId와profileDirectory를 통해 클라이언트별 격리를 제공합니다. - Anti-bot 및 Turnstile 우회: 헤드리스(headless) 모드에서 스텔스(stealth) 모드를 거쳐 실제 헤드(headed) Chrome으로 전환하는 3단계 자동 폴백(fallback) 메커니즘을 통해 CDN/WAF(Web Application Firewall) 차단을 우회합니다.
- 대화형 로그인 및 세션 지속성: 기본적으로 보이는(headed) 모드로 실행되어 2FA(Two-Factor Authentication)나 CAPTCHA를 한 번만 완료하면 지속적인 프로필을 재사용할 수 있습니다.
--persist-storage옵션은 쿠키와localStorage를 원자적으로 저장하여 헤드리스 모드에서 재사용 가능하게 합니다. - Shadow DOM 처리: CDP(Chrome DevTools Protocol)를 통해
__pierce()또는__openchrome.querySelectorAllDeep()헬퍼를 사용하여 open 및 closed Shadow DOM 루트를 읽을 수 있습니다. - 엘리먼트 지능: 자연어를 사용하여 엘리먼트를 찾을 수 있으며 (AX-first, CSS fallback), 한국어 역할 키워드도 내장되어 있습니다("버튼" → button).
- CLI 및 HTTP 데몬 모드:
oc run명령어를 통해 직접 MCP 서피스를 호출하거나,--http옵션으로 장기 실행 HTTP 데몬 모드를 사용하여 여러 클라이언트가 하나의 Chrome 프로세스를 공유할 수 있습니다. - 선언적 시나리오:
oc playbook을 사용하여 YAML 형식으로 각 단계가 도구 호출과 인라인 Outcome Contract를 포함하는 시나리오를 작성하여 결정론적인 실행을 가능하게 합니다. - CI/CD 및 컨테이너 배포:
openchrome serve --server-mode옵션을 통해 로그인 없이 헤드리스 모드에서 자동 실행되며, CI/CD 환경 및 컨테이너에서 내비게이션, 스크래핑, 스크린샷, 폼 작성 및 병렬 워크플로우를 실행할 수 있습니다.
OpenChrome은 AI 에이전트의 브라우저 상호작용에서 발생하는 비효율성과 불안정성을 근본적으로 해결하기 위해 설계된 강력하고 지능적인 자동화 솔루션입니다.