github analyzed 3aeb2c4

RobithYusuf/mcp-stealth-chrome

github

Stealth Chrome MCP server — 100++ tools for AI agents. One-liner Cloudflare Turnstile bypass (proven), dual-mode HTTP with TLS fingerprint, AI Vision reCAPTCHA solver. Python + nodriver + curl_cffi + FastMCP.

maintainer
RobithYusuf
license
MIT
first seen
2026-06-08
last seen
2026-06-09
releases · 30d
0
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution in RobithYusuf/mcp-stealth-chrome
capabilities 36 tools
transport stdio counts 36 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • auth_capture

    Intercept the next N requests matching a URL pattern and return their headers (Authorization, Cookie, X-CSRF-*) — for SPAs that hold bearer tokens in JS memory

  • click_and_wait

    Click + observe one of navigation / url / text / selector / request / network_idle. Distinguishes real submit from silent invalid-form click

  • click_at_corner

    Click top-left/right/bottom-left/right of element

  • click_at_image

    Find image + click its center

  • click_element_offset

    Click at % position inside element (not center)

  • click_turnstile

    CF Turnstile bypass for embed widgets + template-match fallback

  • console_clear

    Reset captured console buffer

  • describe_page

    Compact JSON summary (title/url/headings/fields/actions/errors/navigation) — ~10× fewer tokens than accessibility_snapshot. wait_stable=True waits for SPA hydration via MutationObserver

  • detect_and_bypass

    One-shot: detect anti-bot wall (CF / DataDome / PX / Akamai / Imperva / Kasada) and apply best bypass we have

  • detect_anti_bot

    Identify CF/DataDome/PerimeterX/Kasada/Imperva on current page

  • dialog_auto_handle

    Persistent native-dialog handler with type filter (alert / confirm / prompt / beforeunload). Update action without re-arming. Idempotent per tab

  • emulate_cpu

    1–6× CPU throttle (4× = DevTools default, 6× = low-end mobile)

  • emulate_device

    Device presets: iphone-15, iphone-se, pixel-8, galaxy-s23, ipad, desktop

  • emulate_network

    Preset throttles (offline / slow-3g / 3g / slow-4g / 4g / wifi) + custom

  • find_by_image

    OpenCV template match → coordinates

  • fingerprint_rotate

    UA/lang/platform/timezone via CDP

  • form_introspect

    Per-field detail (label, framework binding react/vue/solid/lit, validation state, pattern/length constraints, aria-invalid)

  • http_request

    TLS-perfect HTTP via curl_cffi (chrome/firefox/safari impersonation)

  • http_request_with_session

    Authenticated curl_cffi request that piggybacks on browser cookies + auto-extracts most recent same-host bearer from network_index

  • http_session_cookies

    Inspect which browser cookies match a URL

  • memory_heap_snapshot

    V8 .heapsnapshot — drag into DevTools Memory panel

  • mouse_drift

    Random Bezier wandering (pass behavioral ML)

  • paste_text

    Full paste-event sequence (ClipboardEvent + DataTransfer + beforeinput inputType:'insertFromPaste') for SolidJS/Svelte 5/Qwik forms that ignore plain dispatchEvent('input')

  • performance_metrics

    Runtime Performance.getMetrics (Nodes, JSHeap, TaskDuration, FPS…)

  • performance_timeline

    TTFB / FCP / DOMContentLoaded / load + slowest 5 resources (instant, no trace capture)

  • session_warmup

    Natural browsing pattern (homepage/referer/scroll) before target

  • smart_fill

    Fill form by label text (fuzzy match: exact > prefix > substring > token); native value setter for React/Vue. Returns did_you_mean candidates on miss

  • solve_captcha

    CapSolver API — Turnstile/reCAPTCHA/hCaptcha

  • solve_recaptcha_ai

    Vision LLM picks matching tiles — solve image challenges (auto-clicks anchor checkbox in v0.2.10+)

  • spawn_browser

    New named instance (parallel profiles)

  • verify_cf

    Cloudflare checkbox via OpenCV template match

  • vision_locate

    NL → element coordinates: "the red Create button at bottom right" (optional click=True)

  • wait_for_network_idle

    SPA-safe load detection — waits for N ms of no fetch/XHR activity

  • wait_for_request

    Block until a request matching url_pattern is observed (+ optional method filter, + optional response wait) — replaces setTimeout polling

  • web_vitals

    Core Web Vitals via web-vitals v4 — LCP/CLS/INP/FCP/TTFB with pass/fail ratings

  • workflow_run

    Sequential tool runner with resumable start_at index and stop_on_error. Failure response includes failure_context and resume_with hint

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

filesystem 3

  • fs RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :17 from pathlib import Path
  • fs RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/state.py :16 from pathlib import Path
  • fs RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/vision.py :29 from pathlib import Path

shell / exec 2

  • shell RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :5991 import subprocess
  • shell RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/state.py :152 import subprocess

network 4

  • net RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/captcha.py :13 import httpx
  • net RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :20 import httpx
  • net RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/network_http.py :32 from urllib.parse import urlparse
  • net RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/vision.py :32 import httpx

secrets 2

  • secrets RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/captcha.py :35 api_key = api_key or os.environ.get("CAPSOLVER_KEY")
  • secrets RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/vision.py :209 legacy_key = os.environ.get("AI_VISION_API_KEY")

tool registrations 138

  • browser_launch RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :378
  • browser_close RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :722
  • browser_recover RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :763
  • navigate RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :909
  • tab_focus RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :956
  • go_back RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1010
  • go_forward RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1021
  • reload RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1032
  • browser_snapshot RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1048
  • screenshot RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1095
  • get_text RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1269
  • get_html RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1292
  • get_url RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1309
  • save_pdf RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1319
  • click RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1342
  • click_text RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1375
  • click_role RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1389
  • hover RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1408
  • fill RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1425
  • type_text RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1447
  • press_key RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1487
  • select_option RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1500
  • check RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1518
  • uncheck RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1524
  • upload_file RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1549
  • mouse_click_xy RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1571
  • mouse_move RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1582
  • drag_and_drop RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1597
  • wait_for RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1631
  • wait_for_navigation RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1651
  • wait_for_url RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1662
  • wait_for_response RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1679
  • tab_list RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1726
  • tab_new RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1753
  • tab_select RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1767
  • tab_close RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1781
  • cookie_list RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1803
  • cookie_set RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1933
  • cookie_delete RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1951
  • cookie_import RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :1968
  • cookie_export RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2125
  • localstorage_get RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2159
  • localstorage_set RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2179
  • localstorage_clear RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2193
  • sessionstorage_get RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2204
  • sessionstorage_set RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2228
  • sessionstorage_clear RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2242
  • cache_clear RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2253
  • indexeddb_list RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2270
  • indexeddb_delete RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2299
  • evaluate RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2324
  • inject_init_script RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2342
  • inspect_element RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2361
  • get_attribute RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2384
  • query_selector_all RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2415
  • get_links RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2434
  • list_frames RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2457
  • frame_evaluate RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2480
  • batch_actions RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2514
  • fill_form RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2559
  • navigate_and_snapshot RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2578
  • get_viewport_size RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2592
  • set_viewport_size RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2607
  • scroll RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2618
  • scroll_to RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2658
  • dialog_handle RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2712
  • dialog_auto_handle RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2760
  • accessibility_snapshot RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2839
  • console_start RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2869
  • console_get RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2906
  • network_start RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2913
  • network_get RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :2996
  • server_status RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3068
  • get_page_errors RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3086
  • export_har RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3092
  • detect_content_pattern RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3116
  • extract_structured RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3155
  • extract_table RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3213
  • scrape_page RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3242
  • storage_state_save RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3314
  • storage_state_load RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3352
  • solve_captcha RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3367
  • verify_cf RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3416
  • fingerprint_rotate RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3435
  • humanize_click RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3466
  • humanize_type RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3473
  • click_turnstile RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3490
  • click_element_offset RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3611
  • click_at_corner RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3645
  • find_by_image RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3679
  • click_at_image RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3742
  • mouse_drift RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3770
  • mouse_record RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3803
  • mouse_replay RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :3860
  • spawn_browser RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :4113
  • list_instances RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :4165
  • switch_instance RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :4199
  • close_instance RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :4215
  • close_all_instances RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :4249
  • list_chrome_profiles RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :4293
  • clone_chrome_profile RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :4345
  • describe_page RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :4643
  • smart_fill RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :4783
  • assert_text_present RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :4875
  • assert_url_matches RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :4903
  • assert_element_visible RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :4926
  • storage_snapshot RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :5038
  • storage_diff RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :5055
  • workflow_run RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :5146
  • detect_and_bypass RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :5246
  • paste_text RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :5333
  • auth_capture RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :5443
  • http_request_with_session RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :5579
  • wait_for_request RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :5630
  • click_and_wait RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :5730
  • form_introspect RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :5941
  • list_external_chrome RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :5984
  • attach_to_chrome RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :6098
  • detach RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/server.py :6169
  • performance_trace_start RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/devtools.py :89
  • performance_trace_stop RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/devtools.py :154
  • performance_metrics RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/devtools.py :216
  • performance_timeline RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/devtools.py :239
  • web_vitals RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/devtools.py :295
  • emulate_network RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/devtools.py :362
  • emulate_cpu RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/devtools.py :400
  • emulate_device RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/devtools.py :416
  • coverage_start RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/devtools.py :455
  • coverage_stop RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/devtools.py :484
  • memory_heap_snapshot RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/devtools.py :561
  • wait_for_network_idle RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/devtools.py :629
  • console_clear RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/devtools.py :696
  • http_request RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/network_http.py :51
  • http_session_cookies RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/network_http.py :158
  • session_warmup RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/network_http.py :174
  • detect_anti_bot RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/network_http.py :297
  • solve_recaptcha_ai RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/vision.py :282
  • vision_locate RobithYusuf-mcp-stealth-chrome-3aeb2c4/src/mcp_stealth_chrome/tools/vision.py :546

declared dependencies 6

  • mcp@>=1.2.0
  • nodriver@>=0.40
  • pydantic@>=2.5
  • httpx@>=0.27
  • opencv-python@>=4.8
  • curl-cffi@>=0.7