yet-another-web-scraper-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| open_browserB | Launch the Chromium browser. Call this once before navigating anywhere. |
| close_browserA | Close the Chromium browser instance. |
| navigateA | Go to a URL and return the page content, cleaned of / tags. The response is prefixed with the HTTP status line (e.g. "HTTP 200") so a
404/500 that renders a normal-looking page doesn't get mistaken for success.
If the site fetches its real content (prices, listings) client-side after
the initial paint, pass If the response looks like a Cloudflare/Akamai/CAPTCHA challenge page rather than real content, a "bot-challenge page" warning is prepended. This can happen even on a 200/403 that looks superficially normal. |
| clickA | Click an element by CSS selector (e.g. a pagination button) and return the resulting page's cleaned content. On stateful pages (large SPA/ASP.NET markup) re-returning the whole page
every click is wasteful. Pass If the click triggers a client-side fetch (e.g. a filter or "load more"
button) rather than a full reload, pass |
| wait_forA | Wait for |
| get_page_contentA | Return the current page's HTML with // tags stripped out. If If the page looks like a Cloudflare/Akamai/CAPTCHA challenge page rather than real content, a "bot-challenge page" warning is prepended (only on the first chunk, offset=0). |
| find_repeating_elementsA | Scan the current page for groups of repeated sibling elements (product cards, list items, search results, ...) and return candidate CSS selectors for each group, with a count and a text sample. Use this on an unfamiliar site instead of eyeballing raw HTML for class
names: pick a promising selector from the results and feed it to get_list
(as |
| get_listA | Extract one record per element matching
Because each field is looked up independently within its own container, results never get misaligned the way separate get_page_content calls + manual zipping do when some cards are missing a field (e.g. a strikethrough "was" price only some products have). Not sure of the right selectors? Call find_repeating_elements first. |
| get_page_linksA | List the current page's links as {text, href}, to help decide what to visit next. |
| get_json_ldA | Return schema.org structured data (JSON-LD) embedded in the current page, e.g. Recipe/Product/Article objects. Many sites (WordPress recipe plugins, e-commerce) embed clean structured data this way. Check here before falling back to get_page_content. |
| get_tableA | Parse an HTML table on the current page into rows of {column_header: cell_text}, using the first matching element's first as headers.
|
| add_recordA | Add one row of scraped data (column name -> value) to the in-memory dataset. |
| get_recordsA | Return every row collected so far, for review before exporting. |
| clear_recordsA | Discard all rows collected so far. Use this when starting over, e.g. you've been exploring one source and want to switch to another without mixing rows. |
| export_csvA | Write all collected rows to a CSV file (via pandas) and return its path. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Each tool maps to a distinct action: browser lifecycle (open/close), navigation/clicking/waiting, content retrieval (navigate/get_page_content/click), extraction (get_table/get_list/get_json_ld/get_page_links/find_repeating_elements), and data management (add/get/clear/export). While navigate, click, and get_page_content all return cleaned content, their triggering actions are distinct and clearly described, so an agent can pick the right one.
All tool names are snake_case and follow a verb-first pattern: open_browser, close_browser, navigate, click, wait_for, get_*, add_record, clear_records, export_csv, find_repeating_elements. No mixing of camelCase or inconsistent verb styles. The single-word verbs (navigate, click) are minor deviations but remain clear and consistent.
15 tools is within the typical 3-15 well-scoped range. Each tool addresses a distinct need in the scraping workflow, from browser control to extraction to data export, so none feels redundant or missing.
The surface covers the full scraping lifecycle: launch, navigate, interact (click/wait), extract (content/table/list/JSON-LD/links), and manage/export data. A few advanced scenarios like infinite-scroll (no scroll tool) or form filling are not covered, but these are minor gaps for a generic scraper and workarounds exist (e.g., click for load-more buttons).