Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scrapeless + Claude Code

Give Claude Code live web access — search, scrape, screenshot, and drive a real cloud browser — by adding the Scrapeless MCP server. 21 tools, one config file, no wrapper code.

Clone this repo, add your key, and Claude Code picks the server up from .mcp.json automatically.

Use case

Claude Code is strong at reasoning over code and weak at seeing the live web: it cannot open a page behind bot protection, cannot check what a competitor's pricing page says today, and cannot screenshot a rendered site. This server closes that gap, which unlocks:

  • Research with real sources — "search for X, open the top 5 results, and summarize what they actually say."
  • Scraper development with a live target — iterate on selectors against the real page inside the same session where you write the code.
  • Competitive and SEO checks — pull a SERP, or a rival's page as Markdown, and diff it against last week.
  • Visual verification — screenshot a deployed page and have Claude describe what rendered.
  • Multi-step browser flows — search, click, type, scroll, and wait through a real Chromium session.

Requirements

Setup

git clone https://github.com/<owner>/scrapeless-claude-code.git
cd scrapeless-claude-code
cp .env.example .env
export SCRAPELESS_API_KEY=your_key_here    # .mcp.json expands this
claude

Claude Code prompts you to approve the project's MCP server on first launch. Confirm it loaded:

/mcp

You should see scrapeless connected with 21 tools.

The one thing that will bite you

The server reads SCRAPELESS_KEY, not SCRAPELESS_API_KEY. Verified behavior:

Environment Result
SCRAPELESS_KEY set Works — tools respond
Only SCRAPELESS_API_KEY set Server starts, then never responds — no error, just a hang
Neither set Server starts, then never responds

There is no "missing credentials" message; a tool call simply hangs. .mcp.json in this repo maps one to the other ("SCRAPELESS_KEY": "${SCRAPELESS_API_KEY}") so either name works for you, but if you write your own config, set SCRAPELESS_KEY.

Alternative: add it with the CLI

claude mcp add scrapeless --env SCRAPELESS_KEY=your_key_here -- npx -y scrapeless-mcp-server

Use --scope user to make it available in every project instead of just this one.

Verify before you trust it

verify_mcp.py speaks MCP over stdio directly — the same protocol Claude Code uses — so you can confirm the server works independently of the agent:

export SCRAPELESS_API_KEY=your_key_here
python3 verify_mcp.py           # list the tools
python3 verify_mcp.py --call    # also scrape example.com

Real output:

server: scrapeless-mcp-server 0.2.0
tools : 21

  google_search          Universal Information Search Engine...
  scrape_markdown        Scrape a URL and return its content as Markdown.
  ...

calling scrape_markdown on https://example.com ...
returned 184 characters of markdown

Full tool list with input schemas: results/tools.json.

Note: serverInfo reports 0.2.0 while the npm package publishes as 0.4.9 — the server's self-reported version lags its release version. Don't use serverInfo.version to gate anything.

The 21 tools

Search and one-shot fetch — no session needed, each call is independent:

Tool What it does
google_search Search engine query; returns result data
google_trends Google Trends interest data
scrape_html Fetch a URL, return full HTML
scrape_markdown Fetch a URL, return content as Markdown (best default for LLM reading)
scrape_screenshot Capture a screenshot of any page

Cloud browser session — stateful; browser_create first, browser_close when done:

Tool What it does
browser_create Create or reuse a cloud browser session
browser_goto Navigate to a URL
browser_get_html / browser_get_text Read the current page
browser_snapshot Capture DOM + resources for inspection
browser_screenshot Screenshot the current page
browser_click / browser_type / browser_press_key Interact with elements
browser_scroll / browser_scroll_to Scroll by position or to an element
browser_wait / browser_wait_for Fixed pause, or wait for an element
browser_go_back / browser_go_forward History navigation
browser_close Terminate the session

Prefer scrape_markdown for reading a page — it is one call and returns the least noise. Reach for the browser_* family only when the task needs interaction (login, pagination clicks, filters) or the page needs to settle before reading.

Worked prompts

See examples/PROMPTS.md for prompts covering research, SERP collection, competitive monitoring, scraper development, and multi-step browser flows.

Troubleshooting

Symptom Cause and fix
Tool call hangs with no error SCRAPELESS_KEY is not set in the server's environment. See the table above.
/mcp shows no scrapeless server You did not approve the project server, or you launched claude outside this directory. Re-run claude from the repo root.
npx fails or downloads every launch Pre-install once: npm install -g scrapeless-mcp-server, then set "command": "scrapeless-mcp-server" with no args.
Browser tools error about no session Call browser_create before other browser_* tools.
A page comes back nearly empty It was read before the challenge cleared. Use browser_wait_for on a content selector, then browser_get_html.
${SCRAPELESS_API_KEY} appears literally Your shell did not export the variable before claude started. Export it, then restart Claude Code.

Project structure

scrapeless-claude-code/
├── .mcp.json              # project MCP config — Claude Code reads this
├── verify_mcp.py          # stdio MCP self-check, no agent required
├── examples/PROMPTS.md    # worked prompts
├── results/tools.json     # live tool list with input schemas
└── LICENSE

Related

License

MIT — see LICENSE.

About

Give Claude Code live web access with the Scrapeless MCP server — 21 tools for search, scraping, screenshots, and cloud browser automation from one config file.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages