ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Scout

โดย klarlabs-studioรุ่น 1.15.3i★ –iรันบนเครื่อง
ชื่อใน registryio.github.klarlabs-studio/scout

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

Browser automation MCP server with 84 tools. Pure CDP, DOM diffing, vision hybrid.

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: เว็บและเบราว์เซอร์

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

ต้องเตรียมก่อน

  • Dockerติดตั้ง Docker ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "scout": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/klarlabs-studio/scout:1.15.3",
        "mcp",
        "serve"
      ]
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add scout -- docker run -i --rm ghcr.io/klarlabs-studio/scout:1.15.3 mcp serve

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "scout": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/klarlabs-studio/scout:1.15.3",
        "mcp",
        "serve"
      ]
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "scout": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/klarlabs-studio/scout:1.15.3",
        "mcp",
        "serve"
      ]
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub klarlabs-studio ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด เว็บและเบราว์เซอร์i

  • ดาวมากกว่า 0% ของอีก 879 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 24% ของอีก 879 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 879 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Scout ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.15.3) เข้า registry 3 เดือนที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Docker ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี Browser Use, Chrome DevTools MCP, MCP Server Browser

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

Browser Use

โดย browser-use

ให้ AI ทำงานบนเว็บแทนคุณ เช่น กรอกฟอร์ม ค้นหา และดึงข้อมูล ใช้เบราว์เซอร์บนคลาวด์ของผู้ทำหรือรันในเครื่องก็ได้

บนเครื่องหรือคลาวด์★ 120,087MITอัปเดต 17 วันที่ผ่านมา
ติดตั้ง

Chrome DevTools MCP

โดย ChromeDevTools

ให้ AI ใช้เครื่องมือนักพัฒนาของ Chrome ตรวจหน้าเว็บ ดูว่าโหลดช้าตรงไหน และหาข้อผิดพลาด ทำโดยทีม Chrome DevTools

รันบนเครื่อง★ 54,821Apache-2.0อัปเดต 15 วันที่ผ่านมา
ติดตั้ง

MCP Server Browser

โดย bytedance

MCP server for browser use access

รันบนเครื่อง★ 39,550Apache-2.0อัปเดต 14 เดือนที่ผ่านมา
ติดตั้ง

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

Scout

Browser automation, one binary. The simpler alternative to Playwright — no Node, no Python, no runtime. Drive a real browser from Go, any shell, any AI agent (built-in MCP server), or a chat UI.

A single statically-linked scout binary gives you a CLI, an 87-tool MCP server (so any MCP-aware agent — Claude Desktop, Cursor, Cline, custom — has a browser), a conversational chat UI, and a Go library with Gin-like middleware composition. Same engine, four access points.

brew install --cask klarlabs-studio/tap/scout-mcp

vs. Playwright

ScoutPlaywright
Installone ~15 MB binarynpm + ~600 MB browser cache
Runtime depnone (static)Node.js always; Python/Java/.NET as wrappers
Drive fromGo, any shell, MCP, chat UITS/JS first-class; others lag
AI-agent nativebuilt-in scout mcp serveseparate playwright-mcp project
Token-aware extractionDOM diff, distillation, observation budgets (50–80% fewer tokens)not provided
Action playbooksrecord & replay deterministic JSONcodegen produces a script you maintain
Container deploydrop into scratch or distrolesscarry Node + browser binaries
CDP accessdirect WebSocket, zero abstractioninternal protocol over CDP

Quick Start

# CLI — visible browser, one-shot commands

scout observe https://example.com # structured page snapshot scout markdown https://news.ycombinator.com # page as compact markdown scout screenshot https://github.com # save screenshot scout extract https://example.com h1 # extract element text scout frameworks https://react.dev # detect React, Vue, etc.

MCP Server — give AI agents browser superpowers

claude mcp add scout -- scout mcp serve

Browser UI — conversational browser automation

scout ui serve --provider=ollama --model=mistral cd ui && npm install && npm run dev # open http://localhost:3000

Install

# Homebrew

brew install --cask klarlabs-studio/tap/scout-mcp

Direct binary

curl -fsSL https://raw.githubusercontent.com/klarlabs-studio/scout/main/install.sh | bash

Go

go install go.klarlabs.de/scout/cmd/scout@latest

As a library

go get go.klarlabs.de/scout

MCP Server — 77 Tools

Run scout mcp serve and any MCP-aware agent has a browser. No second project to install, no Node runtime, no Python interpreter — the binary is the server. Configure in any MCP client:

claude mcp add scout -- scout mcp serve           # Claude Code
{"mcpServers": {"scout": {"command": "scout", "args": ["mcp", "serve"]}}}
Tool Categories
CategoryTools
Navigationnavigate, observe, observe_diff, observe_with_budget
Interactionclick, click_label, click_text, type, hover, double_click, right_click, select_option, scroll_to, scroll_by, focus, drag_drop, dispatch_event
Formsfill_form, fill_form_semantic (checkbox/radio + state echo), discover_form
Extractionextract, extract_all, extract_table, auto_extract, scroll_and_collect, markdown, readable_text, accessibility_tree
Capturescreenshot, annotated_screenshot, pdf
Networkenable_network_capture, network_requests
Tabsopen_tab, switch_tab, close_tab, list_tabs
Frameworkswait_spa, detect_frameworks, component_state, app_state
Playbackstart_recording, stop_recording, save_playbook, replay_playbook
Videostart_screen_recording, stop_screen_recording
Smart Helperscheck_readiness, suggest_selectors, session_history
Visionhybrid_observe, find_by_coordinates
Batchexecute_batch
Iframeswitch_to_frame, switch_to_main_frame
Tracestart_trace, stop_trace
Cookiescookies_list, cookies_clear, cookies_set, dismiss_cookies
Diagnosticsdetect_dialog, detect_auth_wall, console_errors (incl. network 4xx/5xx), failed_requests, compare_tabs, upload_file
Utilityhas_element, wait_for, configure, set_viewport, web_vitals, select_by_prompt

All tools have MCP annotations (ReadOnly, OpenWorld, ClosedWorld, Idempotent) for smart auto-approval. Read-only tools like observe, extract, and screenshot run without permission prompts.

Runtime Configuration

Switch between headless and visible browser without restarting, and opt into local-dev workflows (loopback, private IPs):

Agent: configure(headless: false)                        → browser window appears

Agent: navigate("https://...") → watch it work Agent: configure(headless: true) → back to headless Agent: configure(allow_private_ips: true) → unlock localhost / 192.168.* / 10.* Agent: navigate("http://127.0.0.1:4173/") → drive your local dev server

The MCP server also reads SCOUT_ALLOW_PRIVATE_IPS=1 at startup as a one-shot toggle for trusted environments.

Screen Recording (video)

Record the active page as a video. Pure CDP — works in headless, no Playwright needed. Recording survives navigate, open_tab, and switch_tab calls in between, so a multi-page demo lands as one continuous clip:

Agent: start_screen_recording({ width: 1280, height: 800, fps: 15, format: "webm" })

Agent: navigate("https://example.com") Agent: click("#cta") Agent: navigate("https://example.com/dashboard") # recording continues across pages Agent: stop_screen_recording() → { path: "/tmp/scout-rec-XXX.webm", format: "webm", encoder: "ffmpeg", frame_count: N, duration_ms: N }

If ffmpeg is on PATH, the result is encoded to WebM (libvpx-vp9) or MP4 (libx264). If not, scout returns the raw JPEG frames directory plus an ffmpeg concat list so you can encode offline. The result is always a file path, never base64 — never enters your LLM token budget.

Realistic FPS: ~10–15 on typical pages, capped at 30. Implementation polls Page.captureScreenshot (CDP Page.startScreencast events are silently dropped under --headless=new Chrome).

Browser UI

A conversational browser automation interface. Type natural language, watch the browser respond in real-time.

# Start the AG-UI server (Go backend)

scout ui serve --provider=ollama --model=mistral # local, no API key scout ui serve --provider=claude # needs ANTHROPIC_API_KEY scout ui serve --provider=openai --model=gpt-4o # needs OPENAI_API_KEY scout ui serve --provider=groq --base-url=https://api.groq.com/openai --model=llama-3.3-70b-versatile

Start the Vue frontend

cd ui && npm install && npm run dev # http://localhost:3000

The UI streams AG-UI protocol events over SSE:

  • Chat panel with markdown rendering and quick-action pills
  • Live browser viewport with screenshot streaming and URL bar
  • Activity timeline showing tool calls in real-time
  • Stop button to cancel mid-stream

The Go server handles the agentic loop: LLM decides which scout tools to call, executes them, streams browser state deltas back to the frontend. Supports any OpenAI-compatible endpoint via --base-url.

Agent Package (Go)

High-level Go API for callers that want to embed scout in a program. Structured output, auto-wait, goroutine-safe. Most users reach scout through the CLI or MCP server above — this section is for the Go-library path.

session, _ := agent.NewSession(agent.SessionConfig{Headless: true})

defer session.Close()

// Navigate and observe session.Navigate("https://example.com") obs, _ := session.Observe() // links, inputs, buttons, text + action costs

// DOM diff — only what changed (saves 50-80% tokens) session.Click("#submit") _, diff, _ := session.ObserveDiff() // diff.Classification: "modal_appeared" // diff.Summary: "Modal/dialog appeared: Login required"

// Semantic form filling — no CSS selectors session.FillFormSemantic(map[string]string{ "Email": "user-example", "Password": "secret", })

// Visual grounding — click by number, not selector result, _ := session.AnnotatedScreenshot() // numbered labels on elements session.ClickLabel(7) // click element [7]

// Multi-tab coordination session.OpenTab("pricing", "https://example.com/pricing") session.SwitchTab("default")

// Framework detection (19 frameworks) frameworks, _ := session.DetectedFrameworks() // ["react", "nextjs"] state, _ := session.ComponentState("#app") // read React/Vue state

// Network capture — read API responses directly session.EnableNetworkCapture("/api/") captured := session.CapturedRequests("/api/users")

// Action replay — record once, replay without LLM session.StartRecordingPlaybook("login-flow") // ... do stuff ... pb, _ := session.StopRecordingPlaybook() agent.SavePlaybook(pb, "login.json") // Later: session.ReplayPlaybook(pb) // 100x cheaper

// Persistent profiles session.SaveProfile("session.json") // cookies + localStorage session.LoadProfile("session.json")

// Content distillation (5 levels) session.Markdown() // ~2-8KB compact markdown session.ReadableText() // ~1-4KB main content only session.AccessibilityTree() // ~1-4KB semantic tree session.ObserveWithBudget(500) // fit in ~500 tokens

Core Library (Go)

Gin-like Engine/Context/Group/HandlerFunc with middleware composition. The lowest-level Go API — use it when you want full control of task lifecycle, named groups, and middleware chains:

engine := browse.Default(browse.WithHeadless(true))

engine.MustLaunch() defer engine.Close()

engine.Use(middleware.Stealth()) engine.Use(middleware.Retry(middleware.RetryConfig{MaxAttempts: 3})) engine.Use(middleware.Timeout(30 * time.Second))

admin := engine.Group("admin", middleware.BasicAuth("admin", "secret")) admin.Task("export", func(c *browse.Context) { c.MustNavigate("https://app.example.com/admin") table, _ := c.ExtractTable("#users") c.Set("data", table) })

engine.RunGroup("admin")

Middleware
CategoryMiddleware
ResilienceRetry, Timeout, CircuitBreaker, RateLimit, Bulkhead
AuthBearerAuth, BasicAuth, CookieAuth, HeaderAuth
Anti-detectionStealth (10 patches: webdriver, plugins, WebGL, etc.)
NetworkBlockResources, WaitNetworkIdle
UtilitiesScreenshotOnError, SlowMotion, Viewport

CLI

The CLI is a deliberate one-shot tier: each command launches a browser, navigates, runs one read/diagnostic action, prints the result, and exits. Stateful interactive flows (click→type→submit, mul

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx