ScrAPI MCP Server
The ScrAPI MCP Server is a web scraping tool that extracts data from websites while overcoming common restrictions like bot detection, captchas, and geolocation blocks. It offers two main scraping modes: HTML format for advanced parsing when structural information is needed, and Markdown format for text-focused extraction. The server supports API key customization for enhanced usage limits, can be deployed locally (via Docker or NPX) or in the cloud (via SSE or HTTP), and integrates seamlessly with Claude Desktop.
Enables running the ScrAPI MCP server in a containerized environment with a pre-built Docker image for easy deployment
Converts scraped web content into Markdown format, ideal when text content of a webpage is important rather than structural information
Provides package distribution through npm registry, allowing the server to be installed and run via npx
Displays status badges for license, npm downloads, and Docker pulls to indicate the project's activity and adoption
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ScrAPI MCP Serverscrape the product page from that e-commerce site with bot protection as markdown"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
![]()
ScrAPI MCP Server
ScrAPI MCP Server lets MCP-compatible clients scrape web pages through ScrAPI.
ScrAPI is useful when a page needs a real browser session, CAPTCHA solving, residential proxy access, cookie banner handling, JavaScript rendering, geolocation-aware fetching, or pre-scrape browser actions such as clicking and scrolling.
Contents
Related MCP server: Scraper MCP
Features
Scrape any valid
https://orhttp://URL through ScrAPI.Return either raw HTML or readable Markdown.
Run browser commands before scraping.
Use stdio transport for desktop MCP clients.
Use Streamable HTTP transport for remote MCP clients and local testing.
Run with
npx, Docker, Smithery, or from source.
Available Tools
scrape_url_html
Scrapes a URL and returns the result as HTML.
Use this when you need the page structure, links, tables, embedded metadata, or custom downstream parsing.
Inputs:
Name | Type | Required | Description |
| string | Yes | The absolute URL to scrape. Must be a valid URL. |
| string | No | JSON array string of browser commands to execute before scraping. |
Returns:
text/htmlcontent from the requested page.isError: truewith the ScrAPI error body when the upstream request fails.
scrape_url_markdown
Scrapes a URL and returns the result as Markdown.
Use this when the text content matters more than the HTML structure, for example article extraction, product copy, search result summaries, or LLM-friendly page analysis.
Inputs:
Name | Type | Required | Description |
| string | Yes | The absolute URL to scrape. Must be a valid URL. |
| string | No | JSON array string of browser commands to execute before scraping. |
Returns:
text/markdowncontent from the requested page.isError: truewith the ScrAPI error body when the upstream request fails.
Prerequisites
Choose one of the following runtime options:
Node.js 18 or newer for
npxor local development.Docker for container-based usage.
An MCP-compatible client such as Claude Desktop, MCP Inspector, or another client that supports stdio or Streamable HTTP MCP servers.
API Key
Set SCRAPI_API_KEY to use your ScrAPI account:
export SCRAPI_API_KEY="your-scrapi-api-key"PowerShell:
$env:SCRAPI_API_KEY = "your-scrapi-api-key"An API key is required. Without one, ScrAPI currently allows limited free usage on certain domain with lower concurrency and queueing priority.
Quick Start
Run with NPX
The default transport is stdio, which is the transport most desktop MCP clients use when they launch a local server process.
npx -y @deventerprisesoftware/scrapi-mcpWith an API key:
SCRAPI_API_KEY="your-scrapi-api-key" npx -y @deventerprisesoftware/scrapi-mcpPowerShell:
$env:SCRAPI_API_KEY = "your-scrapi-api-key"
npx -y @deventerprisesoftware/scrapi-mcpRun with Docker
The published Docker image starts in HTTP mode by default and listens on port 5000.
docker run --rm -p 5000:5000 -e SCRAPI_API_KEY="your-scrapi-api-key" deventerprisesoftware/scrapi-mcpMCP endpoint:
http://localhost:5000/mcpTo run the container as a stdio server for a local MCP client:
docker run -i --rm -e TRANSPORT=stdio -e SCRAPI_API_KEY="your-scrapi-api-key" deventerprisesoftware/scrapi-mcpMCP Client Setup
Most local coding assistants use one of these two configuration shapes:
Stdio: the client starts this package with
npxor Docker and communicates over stdin/stdout.Streamable HTTP: you start this server yourself with
TRANSPORT=http, then point the client athttp://localhost:5000/mcpor your deployed URL.
When a client has a tool timeout setting, use a value close to 300000 milliseconds or 300 seconds. ScrAPI can take several minutes for pages that require CAPTCHA solving, browser rendering, or multiple browser commands.
Claude Desktop with NPX
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"ScrAPI": {
"command": "npx",
"args": ["-y", "@deventerprisesoftware/scrapi-mcp"],
"env": {
"SCRAPI_API_KEY": "your-scrapi-api-key"
}
}
}
}Claude Desktop with Docker
{
"mcpServers": {
"ScrAPI": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SCRAPI_API_KEY",
"deventerprisesoftware/scrapi-mcp"
],
"env": {
"SCRAPI_API_KEY": "your-scrapi-api-key"
}
}
}
}After changing the config, restart Claude Desktop. You should see the two ScrAPI tools available in the MCP tools list.

Cursor
Cursor supports project configuration at .cursor/mcp.json and global configuration at ~/.cursor/mcp.json. See the Cursor MCP documentation.
Stdio configuration:
{
"mcpServers": {
"scrapi": {
"command": "npx",
"args": ["-y", "@deventerprisesoftware/scrapi-mcp"],
"env": {
"SCRAPI_API_KEY": "${env:SCRAPI_API_KEY}"
}
}
}
}HTTP configuration:
{
"mcpServers": {
"scrapi": {
"url": "http://localhost:5000/mcp"
}
}
}For HTTP, start the server first:
TRANSPORT=http PORT=5000 SCRAPI_API_KEY="your-scrapi-api-key" npx -y @deventerprisesoftware/scrapi-mcpWindsurf
Windsurf Cascade stores MCP servers in ~/.codeium/windsurf/mcp_config.json. You can also add servers from Windsurf Settings > Cascade > MCP Servers. See the Windsurf MCP documentation.
Stdio configuration:
{
"mcpServers": {
"scrapi": {
"command": "npx",
"args": ["-y", "@deventerprisesoftware/scrapi-mcp"],
"env": {
"SCRAPI_API_KEY": "${env:SCRAPI_API_KEY}"
}
}
}
}HTTP configuration:
{
"mcpServers": {
"scrapi": {
"serverUrl": "http://localhost:5000/mcp"
}
}
}Windsurf supports serverUrl or url for remote HTTP MCP servers. If your team uses enterprise MCP controls, the server ID in the admin whitelist must match the key name, for example scrapi.
Kilo Code
Kilo Code stores MCP configuration in the main Kilo config file. Use ~/.config/kilo/kilo.jsonc for global configuration, kilo.jsonc in the project root, or .kilo/kilo.jsonc for project-specific configuration. See the Kilo Code MCP documentation.
Local stdio configuration:
{
"mcp": {
"scrapi": {
"type": "local",
"command": ["npx", "-y", "@deventerprisesoftware/scrapi-mcp"],
"environment": {
"SCRAPI_API_KEY": "your-scrapi-api-key"
},
"enabled": true,
"timeout": 300000
}
}
}Remote HTTP configuration:
{
"mcp": {
"scrapi": {
"type": "remote",
"url": "http://localhost:5000/mcp",
"enabled": true,
"timeout": 300000
}
}
}On Windows, if npx is not found from the Kilo Code UI, use cmd as the command and pass /c, npx, -y, and @deventerprisesoftware/scrapi-mcp as arguments.
Codex
Codex supports MCP servers in the CLI and IDE extension. Both use the same MCP configuration. By default, Codex stores it in ~/.codex/config.toml; trusted projects can also use .codex/config.toml. See the Codex MCP documentation.
Add a stdio server with the Codex CLI:
codex mcp add scrapi --env SCRAPI_API_KEY="your-scrapi-api-key" -- npx -y @deventerprisesoftware/scrapi-mcp
codex mcp listEquivalent config.toml stdio configuration:
[mcp_servers.scrapi]
command = "npx"
args = ["-y", "@deventerprisesoftware/scrapi-mcp"]
startup_timeout_sec = 20
tool_timeout_sec = 300
[mcp_servers.scrapi.env]
SCRAPI_API_KEY = "your-scrapi-api-key"HTTP configuration:
[mcp_servers.scrapi]
url = "http://localhost:5000/mcp"
tool_timeout_sec = 300In the Codex terminal UI, run /mcp to confirm the server is connected.
VS Code
VS Code stores MCP configuration in .vscode/mcp.json for a workspace or in your user profile. The top-level key is servers, not mcpServers. See the VS Code MCP configuration reference.
Stdio configuration:
{
"inputs": [
{
"type": "promptString",
"id": "scrapi-api-key",
"description": "ScrAPI API key",
"password": true
}
],
"servers": {
"scrapi": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@deventerprisesoftware/scrapi-mcp"],
"env": {
"SCRAPI_API_KEY": "${input:scrapi-api-key}"
}
}
}
}HTTP configuration:
{
"servers": {
"scrapi": {
"type": "http",
"url": "http://localhost:5000/mcp"
}
}
}Use the Command Palette commands MCP: Add Server, MCP: List Servers, and MCP: Reset Cached Tools to add, inspect, and refresh MCP servers.
Claude Code
Claude Code supports MCP servers through the claude mcp CLI and the /mcp command inside Claude Code. See the Claude Code MCP documentation.
Add a stdio server:
claude mcp add --transport stdio --env SCRAPI_API_KEY="your-scrapi-api-key" scrapi -- npx -y @deventerprisesoftware/scrapi-mcp
claude mcp listAdd an HTTP server:
claude mcp add --transport http scrapi http://localhost:5000/mcp
claude mcp listTo make the server available across all Claude Code projects, add --scope user before the server name:
claude mcp add --transport stdio --scope user --env SCRAPI_API_KEY="your-scrapi-api-key" scrapi -- npx -y @deventerprisesoftware/scrapi-mcpInside Claude Code, run /mcp to confirm the server is connected.
Generic Stdio MCP Client
Use this shape for clients that accept a command, arguments, and environment variables:
{
"name": "ScrAPI",
"command": "npx",
"args": ["-y", "@deventerprisesoftware/scrapi-mcp"],
"env": {
"SCRAPI_API_KEY": "your-scrapi-api-key"
}
}HTTP Transport
Set TRANSPORT=http to run the server over Streamable HTTP.
TRANSPORT=http PORT=5000 SCRAPI_API_KEY="your-scrapi-api-key" npx -y @deventerprisesoftware/scrapi-mcpPowerShell:
$env:TRANSPORT = "http"
$env:PORT = "5000"
$env:SCRAPI_API_KEY = "your-scrapi-api-key"
npx -y @deventerprisesoftware/scrapi-mcpThe MCP endpoint is:
http://localhost:5000/mcpEnvironment variables:
Name | Default | Description |
| Limited default key | ScrAPI API key used when calling the ScrAPI scrape API. |
|
| Use |
|
| Port used when |
Test with MCP Inspector
Stdio mode:
npx @modelcontextprotocol/inspector npx -y @deventerprisesoftware/scrapi-mcpHTTP mode:
TRANSPORT=http PORT=5000 npx -y @deventerprisesoftware/scrapi-mcpThen open MCP Inspector and connect to:
http://localhost:5000/mcp
Cloud-Hosted Server
ScrAPI also provides hosted MCP endpoints:
Streamable HTTP: https://api.scrapi.tech/mcpCloud MCP servers are not yet supported by every MCP client. They are most useful for custom clients, MCP Inspector, or platforms that support remote MCP servers.
To authenticate with your ScrAPI API key, pass it as a query parameter or request header:
Query parameter:
https://api.scrapi.tech/mcp?apiKey=<YOUR_API_KEY>Request header:
X-API-KEY: <YOUR_API_KEY>
Usage Examples
The exact interaction depends on your MCP client. In most clients, you can either ask the model to use the ScrAPI tool or call the tool directly from a tool inspector.
Scrape a Page as Markdown
Tool:
scrape_url_markdownArguments:
{
"url": "https://example.com"
}Example prompt:
Use ScrAPI to scrape https://example.com as Markdown and summarize the page.Scrape a Page as HTML
Tool:
scrape_url_htmlArguments:
{
"url": "https://example.com"
}Example prompt:
Use ScrAPI to scrape https://example.com as HTML and extract every link.Accept Cookies Before Scraping
The browserCommands value must be a string containing a JSON array.
{
"url": "https://example.com",
"browserCommands": "[{\"click\":\"#accept-cookies\"},{\"wait\":1000}]"
}Search a Site Before Scraping Results
{
"url": "https://example.com/search",
"browserCommands": "[{\"input\":{\"input[name='q']\":\"web scraping\"}},{\"click\":\"button[type='submit']\"},{\"waitfor\":\"#results\"}]"
}Load More Content
{
"url": "https://example.com/products",
"browserCommands": "[{\"scroll\":1200},{\"wait\":1000},{\"click\":\"button.load-more\"},{\"waitfor\":\".product-card:nth-child(25)\"}]"
}Browser Commands
Both tools support optional browser commands that interact with the page before ScrAPI captures the final result.
Commands are provided as a JSON array string. They are executed with human-like behavior such as random mouse movement and variable typing speed.
Command | Format | Description |
Click |
| Click an element by CSS selector. |
Input |
| Fill an input field. |
Select |
| Select an option by value or visible text. |
Scroll |
| Scroll down by pixels. Use a negative value to scroll up. |
Wait |
| Wait for milliseconds. Maximum: |
WaitFor |
| Wait for an element to appear in the DOM. |
JavaScript |
| Execute custom JavaScript. |
Readable command array:
[
{ "click": "#accept-cookies" },
{ "wait": 2000 },
{ "input": { "input[name='search']": "web scraping" } },
{ "click": "button[type='submit']" },
{ "waitfor": "#results" },
{ "scroll": 500 }
]Escaped as an MCP tool argument:
{
"url": "https://example.com",
"browserCommands": "[{\"click\":\"#accept-cookies\"},{\"wait\":2000},{\"input\":{\"input[name='search']\":\"web scraping\"}},{\"click\":\"button[type='submit']\"},{\"waitfor\":\"#results\"},{\"scroll\":500}]"
}Need help finding CSS selectors? Try the Rayrun browser extension to select elements and generate selectors.
For more details, see the Browser Commands documentation.
Troubleshooting
The MCP client cannot find the server
Confirm Node.js 18 or newer is installed if using
npx.Confirm Docker Desktop is running if using Docker.
Restart the MCP client after editing its config file.
Check that the configured command works in a terminal.
The tools appear, but scraping fails
Confirm
SCRAPI_API_KEYis set correctly.Try the same URL without
browserCommands.Make sure
browserCommandsis a JSON array string, not a raw JSON array.Use
scrape_url_htmlif Markdown extraction omits structure you need.Long-running pages, CAPTCHA flows, and heavy JavaScript pages can take several minutes.
Browser commands are ignored
The server only sends browser commands when browserCommands parses as a JSON array. This is valid:
{
"browserCommands": "[{\"click\":\"#accept-cookies\"}]"
}This is not valid for this MCP tool schema because it is an object array, not a string:
{
"browserCommands": [{ "click": "#accept-cookies" }]
}HTTP endpoint does not respond
Confirm the server was started with
TRANSPORT=http.Confirm the client connects to
/mcp, not/.Confirm the port matches
PORT.
Development
Install dependencies:
npm installRun tests:
npm testBuild:
npm run buildRun from source in stdio mode:
npm run build
node dist/index.jsRun from source in HTTP mode:
TRANSPORT=http PORT=5000 node dist/index.jsBuild the Docker image:
docker build -t deventerprisesoftware/scrapi-mcp -f Dockerfile .Or use the package script:
npm run docker:buildLicense
This MCP server is licensed under the MIT License. You are free to use, modify, and distribute the software subject to the terms of the MIT License. See LICENSE for details.
Available Tools
2 toolsscrape_url_htmlScrape URL and respond with HTMLA
Use a URL to scrape a website using the ScrAPI service and retrieve the result as HTML. Use this for scraping website content that is difficult to access because of bot detection, captchas or even geolocation restrictions. The result will be in HTML which is preferable if advanced parsing is required.
BROWSER COMMANDS: You can optionally provide browser commands to interact with the page before scraping (e.g., clicking buttons, filling forms, scrolling). Provide commands as a JSON array string. Available commands:
Click: {"click": "#buttonId"} - Click an element using CSS selector
Input: {"input": {"input[name='email']": "value"}} - Fill an input field
Select: {"select": {"select[name='country']": "USA"}} - Select from dropdown
Scroll: {"scroll": 1000} - Scroll down (negative values scroll up)
Wait: {"wait": 5000} - Wait milliseconds (max 15000)
WaitFor: {"waitfor": "#elementId"} - Wait for element to appear
JavaScript: {"javascript": "console.log('test')"} - Execute custom JS Example: [{"click": "#accept-cookies"}, {"wait": 2000}, {"input": {"input[name='search']": "query"}}]
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to scrape | |
| browserCommands | No | Optional JSON array of browser commands to execute before scraping. See tool description for available commands and format. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description details the ScrAPI service, browser commands with constraints (e.g., max wait time), and interaction capabilities. Does not mention failure modes or rate limits but covers key behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear separation of overview and command details. Slightly lengthy due to command examples, but each part adds value and is front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks details on output structure (e.g., response format, error handling) and authentication requirements. For a scraping tool without an output schema, more on return values would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds extensive semantics for browserCommands (list of commands, parameters, examples), which goes well beyond the schema's brief description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scrapes a URL and retrieves the result as HTML, explicitly distinguishing it from the sibling tool by mentioning 'advanced parsing' for HTML output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases (scraping content with bot detection, captchas, geolocation) and implies when to prefer HTML over markdown. Lacks explicit 'when not to use' but sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_url_markdownScrape URL and respond with MarkdownA
Use a URL to scrape a website using the ScrAPI service and retrieve the result as Markdown. Use this for scraping website content that is difficult to access because of bot detection, captchas or even geolocation restrictions. The result will be in Markdown which is preferable if the text content of the webpage is important and not the structural information of the page.
BROWSER COMMANDS: You can optionally provide browser commands to interact with the page before scraping (e.g., clicking buttons, filling forms, scrolling). Provide commands as a JSON array string. Available commands:
Click: {"click": "#buttonId"} - Click an element using CSS selector
Input: {"input": {"input[name='email']": "value"}} - Fill an input field
Select: {"select": {"select[name='country']": "USA"}} - Select from dropdown
Scroll: {"scroll": 1000} - Scroll down (negative values scroll up)
Wait: {"wait": 5000} - Wait milliseconds (max 15000)
WaitFor: {"waitfor": "#elementId"} - Wait for element to appear
JavaScript: {"javascript": "console.log('test')"} - Execute custom JS Example: [{"click": "#accept-cookies"}, {"wait": 2000}, {"input": {"input[name='search']": "query"}}]
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to scrape | |
| browserCommands | No | Optional JSON array of browser commands to execute before scraping. See tool description for available commands and format. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses using ScrAPI service, handling bot detection, and details browser command behavior. However, it does not mention failure modes or rate limits, which are relevant for scraping tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat lengthy due to the browser commands section, but it is clearly structured with a heading and bullet-like list. It could be more concise by trimming redundant phrases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description states result is Markdown but lacks specifics on structure. It covers main usage and browser interaction well. For a scraping tool, this is mostly sufficient, though more detail on output format would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant value by explaining the browserCommands parameter format with a list of available commands and an example, which is not fully captured in the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it scrapes a URL using ScrAPI and returns Markdown. It distinguishes from sibling tool 'scrape_url_html' by specifying Markdown output and use cases like bot detection, captchas, and geolocation restrictions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises when to use: when text content is important and not structural information. It implies when not to use (if structural info is needed, use HTML version) but does not explicitly state alternatives. The context includes a sibling tool, which helps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v0.4.0- Changed
scrape_url_html2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / browserCommandsAdded value: +{ + "description": "Optional JSON array of browser commands to execute before scraping. See tool description for available commands and format.", + "type": "string" +}
- Changed
scrape_url_markdown2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / browserCommandsAdded value: +{ + "description": "Optional JSON array of browser commands to execute before scraping. See tool description for available commands and format.", + "type": "string" +}
2 tool updates
v1.0.0- Changed
scrape_url_html1 field changed- added
Input schema / properties / url / descriptionAdded value: +"The URL to scrape"
- Changed
scrape_url_markdown1 field changed- added
Input schema / properties / url / descriptionAdded value: +"The URL to scrape"
2 tool updates
- First observed
scrape_url_html - First observed
scrape_url_markdown
TDQS
The two tools are clearly distinguished by their output format (HTML vs Markdown), leaving no ambiguity about which to use based on desired result type.
Both tools follow a consistent 'scrape_url_{format}' pattern with identical prefix and clear format suffix, making naming predictable.
With exactly 2 tools covering the two primary output formats (HTML and Markdown), the count is minimal but complete for the server's core purpose.
The tools cover the essential use cases of scraping with browser interaction and returning structured output. Minor gaps like raw text or JSON output exist but are not critical.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Web scraping for AI agents. Converts URLs to clean, LLM-ready Markdown with anti-bot bypass.
Cloud scraping & crawling API for AI agents. Turn any URL into clean, LLM-ready markdown.
Crawl, scrape, search the web, and automate browsers at scale with anti-bot bypass.
Web scraping to clean Markdown with JS rendering, multi-page crawl, structured extract, sitemaps.
Related MCP Servers
- AlicenseAqualityAmaintenanceThis server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.190,042MIT
- AlicenseNot gradedqualityDmaintenanceA context-optimized web scraping server that converts HTML to markdown/text and applies CSS selectors server-side, reducing token usage by 70-90% while providing AI tools with clean, filtered web content.7MIT
- AlicenseNot gradedqualityCmaintenanceA headless web scraping server that extracts main content from web pages into Markdown, text, or HTML for AI and automation integration. It features per-domain rate limiting and robust error handling using Playwright and BeautifulSoup.MIT
- AlicenseAqualityDmaintenanceMCP server for fetching web content with browser fingerprint camouflage, converting HTML to clean Markdown to bypass bot detection.11MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DevEnterpriseSoftware/scrapi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server