browser_flowLABSCO SUMMARY
Snapshots the page as an accessibility tree, which is the difference between usable and unreadable.
Feeding raw HTML to a model burns context and confuses it; browser_flow returns a structured snapshot with offscreen elements filtered out, and falls back to sliced HTML when you genuinely need markup. The browser profile persists, so a site you signed into once stays signed in for later calls.
What it is
A server built on Puppeteer that exposes a deliberately small set of browser, search, API and file tools, with a persistent browser profile so logins survive between calls.
What you get
- browser_flow — one call that navigates, performs a sequence of actions and returns a single result
- browser_configure — set the proxy, user agent and viewport for the session
- browser_close — close the browser and its tabs when you are done
- multi_search — run several Google searches at once instead of one at a time
- fetch_api — a REST request with response truncation, returning JSON, text, or base64 for binary responses
- download_file — stream a file from a URL into a folder you name, created if it does not exist
- parse_document — extract text from PDF and DOCX files straight from a URL
- Accessibility-tree snapshots instead of raw HTML, with offscreen elements filtered out
- An HTML slice mode with start and end offsets, for chunking a large page safely when you do need the markup
- Readability extraction that returns the main article without headers, footers and sidebars
- Persistent browser profiles, idle auto-close and tab rotation, so a long session does not accumulate resources
Requirements
Node, and a Google Custom Search key and search-engine id if you want the search tool — the browser, API, download and document tools work without them. Chromium arrives with Puppeteer; a Linux server also needs the usual font and rendering libraries for headless use.
Setup effort
Build from source — git clone https://github.com/rayss868/MCP-Web-Curl.git
USE CASES
Reading a page that only exists behind a login
Sign in once in the persistent profile, then let the browser flow navigate and read on later runs.
Researching several questions at once
Run the searches in parallel rather than serialising them one call at a time.
Working with a very large page
Take the structured snapshot first, and slice the HTML by offsets only if you need the raw markup.
Getting the text out of a PDF or Word file on the web
Point the document parser at the URL and get the text back directly.
Calling an API and saving what it returns
Make the REST request with truncation, then download the file it points at.
7 tools
Listed in project docs. Your client may show a different list.
browser_configurebrowser_closemulti_searchfetch_apidownload_fileparse_documentBEFORE YOU INSTALL
What to know first
Tools you get
7 tools named in the project's documentation.
Requires
node on PATH
Optional
- APIKEY_GOOGLE_SEARCH in your environment
- CX_GOOGLE_SEARCH in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone and build this one yourself.
Server setup
git clone https://github.com/rayss868/MCP-Web-Curl.git
cd MCP-Web-Curl
npm install
npm run buildMCP Clients
Any MCP client
{
"mcpServers": {
"web-curl": {
"command": "node",
"args": [
"<YOUR_PATH_TO_MCP_WEB_CURL>/build/index.js"
],
"disabled": false,
"alwaysAllow": [
"browser_flow",
"browser_configure",
"browser_close",
"multi_search",
"fetch_api",
"download_file",
"parse_document"
],
"env": {
"APIKEY_GOOGLE_SEARCH": "<YOUR_APIKEY_GOOGLE_SEARCH>",
"CX_GOOGLE_SEARCH": "<YOUR_CX_GOOGLE_SEARCH>"
}
}
}
}