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

searchts

โดย capad-xyzรุ่น 0.27.1i★ –iรันบนเครื่อง
ชื่อใน registryio.github.capad-xyz/searchts

ติดตั้ง

ภาพรวม

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

Keyless web access for AI agents: read bot-walled pages as Markdown, search, grab assets

สามเสาของ PopNx MCP

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

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

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

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

ติดตั้ง

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

ก่อนติดตั้ง

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

  • PyPIติดตั้ง uv ของ Python (มีคำสั่ง uvx) ในเครื่อง

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

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

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

{
  "mcpServers": {
    "searchts": {
      "command": "uvx",
      "args": [
        "searchts",
        "mcp",
        "serve"
      ]
    }
  }
}

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

claude mcp add searchts -- uvx searchts mcp serve

เปิดใน Cursor

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

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

{
  "mcpServers": {
    "searchts": {
      "command": "uvx",
      "args": [
        "searchts",
        "mcp",
        "serve"
      ]
    }
  }
}

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

เปิดใน VS Code

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

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

{
  "servers": {
    "searchts": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "searchts",
        "mcp",
        "serve"
      ]
    }
  }
}

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

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

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

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

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

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

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

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

  • ✓ ผ่าน

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

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

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

    ยังมีคนดูแล

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

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

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

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

  • – ไม่เกี่ยว

    endpoint ตอบ

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

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

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

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

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

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

เทียบกับตัวอื่นในหมวด เอกสาร ตาราง และงานออฟฟิศi

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

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

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

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

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

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

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

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

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

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

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.27.1) เข้า registry 4 วันที่ผ่านมา

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

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

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

ในหมวดเดียวกันมี Agent-Native Calendar, Excel MCP Server, MCP Server for Excel

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

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

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

Agent-Native Calendar

โดย BuilderIO

Agent-Native Google Calendar - manage events, sync, and public booking

รันบนคลาวด์★ 7,620MITอัปเดต 2 เดือนที่ผ่านมา
ติดตั้ง

Excel MCP Server

โดย haris-musa

ให้ AI สร้างและแก้ไฟล์ Excel ได้เอง ทั้งสูตร กราฟ และ PivotTable โดยไม่ต้องมีโปรแกรม Excel ในเครื่อง

รันบนเครื่อง★ 4,276MITอัปเดต 7 วันที่ผ่านมา
ติดตั้ง

MCP Server for Excel

โดย sbroenne

Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.

รันบนเครื่อง★ 847MITอัปเดต 4 วันที่ผ่านมา
ติดตั้ง

README จากผู้ทำ

เปิดอ่าน README

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

searchts

A keyless web unlocker and reader for AI agents. *(Off the record: "search this shit".)*

It reads the page, or it tells your agent plainly that it can't.

When Claude, Cursor, Codex or another agent fetches a URL, it regularly comes back with junk: a 403 bot wall, an empty JavaScript shell, a truncated AI-chat share link, or a login screen that the model happily summarizes as if it were the article. searchts is the reader your agent calls instead. It is open source (MIT), free, needs no API key, refuses paid residential proxies by default, and runs as an MCP server, a CLI or a Python library.

▶ Watch the full 1-minute demo

One-line agent install

Add searchts to Claude Code, Cursor or any MCP client in one command. No API key:

claude mcp add searchts -- uvx --from "searchts[mcp]" searchts mcp serve

Keep it globally and add the stealth browser, which the hardest rungs use:

pipx install "searchts[mcp]" && searchts install --browser

claude mcp add searchts -- searchts mcp serve

Install covers uvx, pipx, venv and the browser extra. The CLI, the MCP server and the Python library all call the same read path.

Three things your agent's built-in fetch can't do

1. Decode full ChatGPT, Claude, Gemini, Grok, Poe, DeepSeek, Perplexity and Copilot share links

A shared conversation never sits in the initial page HTML as plain text. A raw fetch gets a JavaScript shell; a renderer can still cut the chat off mid-thread. searchts read recognizes share URLs and decodes each provider's own data channel into complete, role-labeled Markdown, keyless and without logging in:

searchts read https://chatgpt.com/share/...        # turbo-stream payload in the page (no browser)

searchts read https://claude.ai/share/... # keyless snapshot API behind Cloudflare (no browser) searchts read https://gemini.google.com/share/... # keyless batchexecute RPC (no browser) searchts read https://chat.deepseek.com/share/... # stealth render, auto-scrolls past list virtualization

Eight providers: ChatGPT (both /share/ and the newer /s/ _ short links), Claude, Gemini, Grok, Poe, DeepSeek, Perplexity and Copilot. The first five need no browser. The last three reuse the stealth tier, scroll until the page height stops changing, open the folds, then read.

2. Escalate past bot walls, or fail loudly instead of hallucinating on a login screen

Every searchts read walks a three-tier open-source unlocker and remembers which rung worked per domain:

  • `curl_cffi` impersonates a real Chrome TLS/JA3 and HTTP/2 fingerprint. Fast, local, private.
  • Jina Reader (r.jina.ai) renders JavaScript when the page only fills in after it runs. Default on; SEARCHTS_NO_JINA=1 keeps the URL off Jina's servers.
  • `patchright` is a lazy stealth Chromium, started only when the cheaper tiers fail.
  • `--human` opens a real browser when only a person can clear the page.
searchts read https://some-js-heavy-or-fingerprinted-site.com --scrub

Tier 1 (curl_cffi) -> 403 | Tier 2 (Jina) -> clean Markdown returned, injection scrubbed

searchts read https://www.linkedin.com/in/someone/

Signed out: fails loudly with the exact tier and login-wall reason, stdout empty.

With a kept login: the profile, and its Experience and Education, as one page.

searchts read https://www.linkedin.com/company/acme/posts/

Company pages and their posts read natively; a rate limit says so instead of "expired".

--scrub strips invisible and bidi characters and flags prompt-injection indicators before untrusted text reaches your model.

A login you hand over is different from a login searchts guesses. In 0.15.0, local reuse is opt-in and fenced to the one host in the command: --cookies-from-browser --yes, --cookies , or --cdp-port . Without one of those, a wall is an error, not an article.

3. Transcribe videos and grab fingerprint-gated design assets
searchts transcribe https://youtu.be/...                     # YouTube, TikTok, Instagram Reels, Reddit

searchts transcribe https://www.instagram.com/reel/... --cookies-from-browser chrome searchts grab https://stripe.com --kinds images,fonts,svg --read --out ./stripe-kit

Transcription is subtitles-first, then yt-dlp audio plus Whisper when there are no captions. grab extracts a page's images, icons, CSS, fonts, SVGs and color palette through the same unlocker, so it works on fingerprint-gated CDNs, not just open ones.

Native web search

A built-in fetch does not search. searchts search is keyless DuckDuckGo by default, with reciprocal rank fusion across SearXNG, Exa, Brave, and Tavily. A snippet is not the page. Read each URL.

searchts search "open source vector db"

Why it exists

I built searchts because Claude kept running into walls when I asked it to read the web for me. The trigger was a Devpost hackathon page and its terms: the page wasn't even walled, and Claude still couldn't read it.

The first versions, which I built with Claude, failed the other way. When they couldn't get a page, they handed back whatever they got, and the agent summarised a loading screen as if it were the article. So searchts has one rule above the rest: return the real page, or fail loudly and say why. It never hands your agent a fake read.

How searchts compares

searchts grew out of Agent-Reach's channel/doctor scaffolding, then replaced the read/search core with an escalating unlocker, share-link decoders and an MCP server.

CapabilityBuilt-in WebFetch / curlAgent-ReachHosted scrapers (Firecrawl, Jina Pro)searchts
ArchitectureNaive HTTP fetchInstaller and per-platform routers for third-party CLIs (yt-dlp, OpenCLI, Jina)Hosted fetch + scraper fleetLocal escalating unlocker + MCP server + CLI
Bot / JS escalationNoneOne Jina Reader hop for the webHosted proxies and rendering`curl_cffi` (TLS/JA3) → Jina → `patchright` stealth + `--human`
Login or blockHands 200 OK login HTML to the model, or errorsDepends on the upstream CLI and its sessionCredits, limits, or partial HTMLFails loudly with the tier and reason; local login reuse is opt-in
AI-chat share linksEmpty JS shell or truncatedNo share-link decoder; depends on JinaRenderer can cut long chatsNative decoders + auto-scroll stealth render (8 providers)
Web searchNoneExa via mcporterPaid search endpointKeyless DuckDuckGo + RRF across SearXNG / Exa / Brave / Tavily. A snippet is not the page
Prompt-injection scrubbingNone——Built-in (`--scrub`)
BenchmarkNoneNoneMarketing pass ratesReproducible two-suite scorecard (`Smoke` vs `Walled`)
Default costFreeFree, plus the CLIs it installsAPI key and per-page creditsFree, MIT, keyless (no paid residential proxy by default)

What it does

  • Reads pages your agent's own fetch can't: browser-fingerprint checks, JavaScript-only pages and some bot walls
  • Fails loudly when the read is not the real page (a login the user did not hand over, a puzzle that needs a person, a block that is the address) and says which tier failed and why
  • Reads complete ChatGPT / Claude / Gemini / Grok / Poe / DeepSeek / Perplexity / Copilot shared conversations
  • Works with Claude, Codex, and MCP agents
  • Extracts clean Markdown, ready to feed a model
  • Says when a page has more than it returned (a next page, a feed, folded text) and rebuilds search results and feeds the extractor mangles
  • Searches the web without API keys (DuckDuckGo, plus SearXNG, Exa, Brave, and Tavily). A snippet is not the page
  • Downloads a page's assets (images, fonts, palette)
  • Transcribes videos, subtitles-first
  • Names images, video, and embeds in the page. searchts get fetches one of those URLs through the same ladder
  • On a player page, returns the captions, or fails and names searchts transcribe for the audio

When a read names a next step

search prints a list of URLs and a line that says the snippet is not the page. Read each URL.

A player page (a YouTube watch URL, a TikTok video, an Instagram reel, a v.redd.it file, or an X post that has a video) comes back as the captions, or fails with empty stdout and names searchts transcribe for the audio. An X post with no video is still a read of the page. Captions need no key. Audio is the transcribe command, not a second reader.

searchts transcribe https://youtu.be/...                     # audio, when read found no captions

searchts transcribe https://www.instagram.com/reel/... --cookies-from-browser chrome searchts get https://example.com/logo.svg -o logo.svg # one file a read named searchts grab https://stripe.com --kinds images,fonts,svg --read --out ./stripe-kit

Local transcription ships with whisper.cpp. The default quantized small model is about 190 MB and downloads only when a transcription reaches audio and you approve it: a terminal asks once, while an agent gets a structured consent result with the model size, source, cache path and exact --yes retry. Cached models work offline. Select small, turbo or base with --model, the whisper_model config key, or SEARCHTS_WHISPER_MODEL; --hint supplies names or other words to the decoder, and --translate opts into English output (not supported by turbo). Use searchts transcribe --list-models to inspect the cache and searchts transcribe --remove-model small --yes to remove a cached model after approval. faster-whisper remains an explicit migration fallback with --provider local-fw while it is installed. The published pywhispercpp wheels are CPU builds on Linux and Windows: CPython 3.10-3.14 wheels cover Linux x64/arm64, Windows x64 and macOS arm64; Windows arm64 and macOS x64 have no wheel. The macOS arm64 wheel ships whisper.cpp's Metal backend with an embedded metallib, so an Apple Silicon install can run on the GPU; the Linux and Windows wheels ship no GPU backend, so Vulkan and CUDA wheels are still a follow-up.

grab saves the set of files when the files are the deliverable. It uses the same unlocker, so a fingerprint-gated CDN is the same ladder as a read.

Why the package is free

The package you install is free and keyless. The fetch and the browser run on your machine, from your connection. It does not bundle a residential proxy. Jina Reader, the one hosted rung, is free and can be turned off. That is not a promise that every hard page is free forever. A read that needs an exit we operate is a different product, not a default of this package. The scorecard is what this build actually read, not a list of walls that can never be passed.

The unlocker

searchts reads any URL through an escalating ladder and stops at the first tier that returns re

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

ถาม PopNx