Releases: HarimxChoi/google-surf-mcp
Release list
v0.8.0
Highlights
- Added
scholar_searchfor Google Scholar paper metadata, citations, related versions, and available full text. - Added SearchApi as an optional primary or fallback provider for
search,search_parallel, andscholar_search. - Browser search remains the default and requires no API key.
- Added
SEARCH_API,SURF_SEARCH_PROVIDER, andSURF_SCHOLAR_PROVIDERconfiguration. - Added provider and API key status to
healthwithout exposing the key.
SearchApi support is sponsored by SearchApi.
Fixes
- Detect dead pooled browser contexts through the context
closeevent instead of the unreliablectx.pages()probe in #11.
Contributors
- Thanks to @KoscheiiB for their first contribution in #11.
Full Changelog: v0.7.0...v0.8.0
v0.7.0
- parse/score: reorder strategies by measured win rate, capture real SERP fixtures, anchor CJK ad markers, adopt SERP language for ad filtering
- triage: partial-degradation votes (peer strategy + persisted baseline) replacing the h3-only rule
- browser/pool: reap orphan per-PID worker profiles, dead-ctx detection on the sequential path
- cascade: persist stealth mode across restarts (24h TTL); consent no longer counts as a captcha
- humanlike: on by default (background), human-speed typing
- repair: blocked probe fails the run and writes repair-report.json
- fix: search_extract respects SURF_EXTRACT_MAX_CHARS"
v0.6.8
fix: per-PID worker profile dirs so concurrent instances do not colli…
v0.6.7
search nav-timeout fix: SURF_NAV_TIMEOUT_MS (default 12s) + always await results selector
v0.6.6
Changed
PDF extraction uses @llamaindex/liteparse (PDFium spatial parsing) instead of unpdf: ~2x faster, correct multi-column reading order, optional OCR.
Added
SURF_EXTRACT_OCR (default false) — Tesseract OCR for scanned/image PDFs.
SURF_EXTRACT_MAX_CHARS (default 8000) — configurable extract truncation (#9).
Fixed
EU consent overlay dismissed before the search box, with focus instead of click — fixes 100% search failure on fresh EU profiles (#10).
Block detection broadened beyond /sorry/ (consent URL + in-page reCAPTCHA via DOM).
v0.6.5
Changed
- CAPTCHA recovery seeds the original query instead of
hello world. - Recovery forces humanlike inline mode: random per-char typing, Tab+Enter variability, then 1-3 result visits with dwell, scroll, goBack.
- Removed
SURF_CAPTCHA_GRACE_MS.SURF_CAPTCHA_TIMEOUT_MSdefault 240s to 180s.
v0.6.4
- CAPTCHA recovery now keeps the headed Chrome window open for a grace period (default 120s, SURF_CAPTCHA_GRACE_MS) after landing on /search?, so a late CAPTCHA on the auto-search is solvable by the user. If a CAPTCHA appears during the grace window, the timer resets. Outer timeout raised to 240s (SURF_CAPTCHA_TIMEOUT_MS).
- CAPTCHA recovery launches Chrome with image/media/font requests un-blocked so reCAPTCHA image grids actually render in the visible window.
- Windows: zombie chrome.exe from a crashed prior session held the user-data-dir lock, causing launchPersistentContext to fail with "Target page, context or browser has been closed". launch() now calls killZombieChromium() (PowerShell scan by --user-data-dir match + SIGKILL) before clearProfileLocks on retry. waitForLockReleased covers the still-flushing case; this covers the fully-crashed case.
v0.6.3
extract redirect SSRF guard + repair-pipeline cleanup+PR#8
v0.6.1
pool cookie fix + search waitForURL (#7)
v0.6.0
Self-healing strategy ordering + LLM tool_use selector repair + repair-pipeline workflow fix. See CHANGELOG.md.