google-surf-mcp

Google 검색을 MCP 도구로 노출하는 로컬 우선 서버. API 키 없이 동작하고, Playwright + persistent Chrome profile로 Google 검색 결과와 본문 추출을 제공한다.

개요

google-surf-mcp는 Google 검색을 MCP 서버로 감싸서 Claude Code 같은 MCP 클라이언트에 붙일 수 있게 만든 도구다. 핵심 포인트는 다음이다.

  • API key 없음
  • Playwright + persistent Chrome profile 사용
  • 검색, 병렬 검색, 본문 추출, search+extract를 하나의 MCP로 제공
  • CAPTCHA가 뜨면 사람이 직접 풀도록 Chrome 창을 열어 복구하는 방식
  • 로컬 사용 전용으로 설계되어 stateless/serverless에는 적합하지 않음

왜 눈여겨볼 만한가

이 프로젝트는 단순한 SERP 스크래퍼보다 한 단계 더 나간다.

  • search(query)로 빠른 단일 검색
  • search_parallel(queries[])로 병렬 검색
  • extract(url)로 기사 본문 추출
  • search_extract(query)로 검색 + 다중 추출을 한 번에 처리

즉, 검색 결과만 받는 게 아니라 실제 페이지 본문까지 같은 MCP 레이어에서 연결하는 점이 좋다. 검색 후 요약/리서치/클리핑 흐름에 잘 맞는다.

사용 방식

Claude Code 설정 예시

{
  "mcpServers": {
    "google-surf": {
      "command": "npx",
      "args": ["-y", "google-surf-mcp"]
    }
  }
}

로컬 설치

npx google-surf-mcp

또는:

git clone https://github.com/HarimxChoi/google-surf-mcp
cd google-surf-mcp
npm install
npm run bootstrap

bootstrap은 Chrome 창을 열어 프로필을 warm-up한다. 이후 검색 요청의 CAPTCHA 복구에 그 프로필을 재사용한다.

환경 변수

  • CHROME_PATH: Chrome/Chromium 경로
  • SURF_PROFILE_ROOT: 기본 ~/.google-surf-mcp
  • SURF_LOCALE: 기본 en-US
  • SURF_TZ: 시스템 timezone 또는 지정값
  • SURF_HEADLESS: 기본 true, false로 바꾸면 Chrome을 보이게 실행
  • SURF_IDLE_CLOSE_MS: 유휴 후 종료까지의 대기 시간

프로젝트 정보

  • Language: TypeScript
  • License: MIT
  • Stars: 12
  • Open issues: 0
  • Contributors: 1
  • Created: 2026-04-30
  • Last push: 2026-05-01
  • Topics: anti-bot, google-search, mcp, playwright, no-api-key

사용 판단

관점에서는 검색/리서치 MCP로 쓸 만하다.

  • Google 검색을 외부 API 없이 붙일 수 있음
  • MCP 클라이언트에서 바로 호출 가능
  • 검색 + 본문 추출까지 일괄 처리 가능

다만 주의할 점도 분명하다.

  • Google/Chrome/profile 상태에 의존하므로 서버리스나 완전 무상태 환경에는 부적합
  • CAPTCHA가 뜨면 사람이 개입해야 함
  • 검색 품질과 안정성은 Google UI/selector 변화에 영향을 받음

결론:

  • 로컬 MCP 리서치 도구로는 사용 가능
  • 이 Google 검색/본문 추출을 Claude Code 워크플로우에 붙일 때 특히 유용
  • 장기 운영은 프로필/캡차/브라우저 환경 변화에 대한 관찰이 필요

관련 노트

Source