MCP Webscan Server
The MCP Webscan Server is a tool for scanning and analyzing web content with the following capabilities:
Fetch web pages: Retrieve page content and convert it to Markdown format, with optional CSS selector targeting.
Extract and analyze hyperlinks: Organize links with URLs, anchor text, and contextual details, distinguishing between internal and external links.
Crawl websites: Recursively discover all URLs on a site up to a specified depth.
Check for broken links: Identify and report non-functional links on a given page.
Find links matching patterns: Use regex to locate URLs that match particular patterns.
Generate XML sitemaps: Create sitemaps by crawling a website, useful for SEO and site structure overview.
Click on "Deploy 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., "@MCP Webscan Server fetch the content from https://example.com and convert it to 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.
MCP Webscan Server
A Model Context Protocol (MCP) server for web content scanning and analysis. This server provides tools for fetching, analyzing, and extracting information from web pages.
Features
Page Fetching: Convert web pages to Markdown for easy analysis
Link Extraction: Extract and analyze links from web pages
Site Crawling: Recursively crawl websites to discover content
Link Checking: Identify broken links on web pages
Pattern Matching: Find URLs matching specific patterns
Sitemap Generation: Generate XML sitemaps for websites
Related MCP server: Open Crawler MCP Server
Installation
Installing via Smithery
To install Webscan for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install mcp-server-webscan --client claudeManual Installation
# Clone the repository
git clone <repository-url>
cd mcp-server-webscan
# Install dependencies
npm install
# Build the project
npm run buildUsage
Starting the Server
npm startThe server runs on stdio transport, making it compatible with MCP clients like Claude Desktop.
Available Tools
fetch-pageFetches a web page and converts it to Markdown.
Parameters:
url(required): URL of the page to fetch.selector(optional): CSS selector to target specific content.
extract-linksExtracts all links from a web page with their text.
Parameters:
url(required): URL of the page to analyze.baseUrl(optional): Base URL to filter links.limit(optional, default: 100): Maximum number of links to return.
crawl-siteRecursively crawls a website up to a specified depth.
Parameters:
url(required): Starting URL to crawl.maxDepth(optional, default: 2): Maximum crawl depth (0-5).
check-linksChecks for broken links on a page.
Parameters:
url(required): URL to check links for.
find-patternsFinds URLs matching a specific pattern.
Parameters:
url(required): URL to search in.pattern(required): JavaScript-compatible regex pattern to match URLs against.
generate-site-mapGenerates a simple XML sitemap by crawling.
Parameters:
url(required): Root URL for sitemap crawl.maxDepth(optional, default: 2): Maximum crawl depth for discovering URLs (0-5).limit(optional, default: 1000): Maximum number of URLs to include in the sitemap.
Example Usage with Claude Desktop
Configure the server in your Claude Desktop settings:
{
"mcpServers": {
"webscan": {
"command": "node",
"args": ["path/to/mcp-server-webscan/build/index.js"], // Corrected path
"env": {
"NODE_ENV": "development",
"LOG_LEVEL": "info" // Example: Set log level via env var
}
}
}
}Use the tools in your conversations:
Could you fetch the content from https://example.com and convert it to Markdown?Development
Prerequisites
Node.js >= 18
npm
Project Structure (Post-Refactor)
mcp-server-webscan/
├── src/
│ ├── config/
│ │ └── ConfigurationManager.ts
│ ├── services/
│ │ ├── CheckLinksService.ts
│ │ ├── CrawlSiteService.ts
│ │ ├── ExtractLinksService.ts
│ │ ├── FetchPageService.ts
│ │ ├── FindPatternsService.ts
│ │ ├── GenerateSitemapService.ts
│ │ └── index.ts
│ ├── tools/
│ │ ├── checkLinksTool.ts
│ │ ├── checkLinksToolParams.ts
│ │ ├── crawlSiteTool.ts
│ │ ├── crawlSiteToolParams.ts
│ │ ├── extractLinksTool.ts
│ │ ├── extractLinksToolParams.ts
│ │ ├── fetchPageTool.ts
│ │ ├── fetchPageToolParams.ts
│ │ ├── findPatterns.ts
│ │ ├── findPatternsToolParams.ts
│ │ ├── generateSitemapTool.ts
│ │ ├── generateSitemapToolParams.ts
│ │ └── index.ts
│ ├── types/
│ │ ├── checkLinksTypes.ts
│ │ ├── crawlSiteTypes.ts
│ │ ├── extractLinksTypes.ts
│ │ ├── fetchPageTypes.ts
│ │ ├── findPatternsTypes.ts
│ │ ├── generateSitemapTypes.ts
│ │ └── index.ts
│ ├── utils/
│ │ ├── errors.ts
│ │ ├── index.ts
│ │ ├── logger.ts
│ │ ├── markdownConverter.ts
│ │ └── webUtils.ts
│ ├── initialize.ts
│ └── index.ts # Main server entry point
├── build/ # Compiled JavaScript (Corrected)
├── node_modules/
├── .clinerules
├── .gitignore
├── Dockerfile
├── LICENSE
├── mcp-consistant-servers-guide.md
├── package.json
├── package-lock.json
├── README.md
├── RFC-2025-001-Refactor.md
├── smithery.yaml
└── tsconfig.jsonBuilding
npm run buildDevelopment Mode
npm run devRunning evals
The evals package loads an mcp client that then runs the index.ts file, so there is no need to rebuild between tests. You can load environment variables by prefixing the npx command. Full documentation can be found here.
OPENAI_API_KEY=your-key npx mcp-eval src/evals/evals.ts src/tools/extractLinksTool.tsError Handling
The server implements comprehensive error handling:
Invalid parameters
Network errors
Content parsing errors
URL validation
All errors are properly formatted according to the MCP specification.
Contributing
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add some amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
License
MIT License - see the LICENSE file for details
Available Tools
6 toolscheck-linksA
Fetches a given URL, extracts all anchor ('a') links, and checks each linked URL for validity (reachability via HEAD request). Returns a list of checked links with their status ('valid', 'broken', or 'invalid_url' if the href attribute couldn't be resolved to a full URL).
Inputs: url (required).
crawl-siteA
Recursively crawls a website starting from a given URL up to a specified maximum depth. It follows links within the same origin and returns a list of all unique URLs found during the crawl.
Inputs: url (required), maxDepth.
extract-linksA
Extract and analyze all hyperlinks from a web page, organizing them into a structured format with URLs, anchor text, and contextual information. Performance-optimized with stream processing and worker threads for efficient handling of large pages. Works with either a direct URL or raw HTML content. Handles relative and absolute URLs properly by supporting an optional base URL parameter. Results can be limited to prevent overwhelming output for link-dense pages. Returns a comprehensive link inventory that includes destination URLs, link text, titles (if available), and whether links are internal or external to the source domain. Useful for site mapping, content analysis, broken link checking, SEO analysis, and as a preparatory step for targeted crawling operations.
Inputs: url (required), baseUrl, limit.
fetch-pageA
Fetches the HTML content of a given URL. Optionally, it can select a specific part of the HTML using a CSS selector and convert only that part (or the whole body if no selector is provided) to Markdown format. Returns the resulting Markdown text.
Inputs: url (required), selector.
find-patternsA
Fetches a web page, extracts all anchor ('a') links, resolves their absolute URLs, and returns a list of links whose URLs match a given JavaScript-compatible regular expression pattern. Includes the URL and anchor text for each match.
Inputs: pattern (required), url (required).
generate-site-mapA
Crawls a website starting from a given URL up to a specified depth and generates an XML sitemap containing the discovered URLs (up to a specified limit).
Inputs: url (required), limit, maxDepth.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
There is significant overlap between tools, particularly check-links, extract-links, and find-patterns, which all involve extracting and analyzing links from web pages, leading to potential confusion. However, crawl-site and generate-site-map have more distinct purposes for recursive crawling and sitemap generation, respectively, and fetch-page stands out for content retrieval and conversion.
All tool names follow a consistent kebab-case pattern with clear verb-noun structures (e.g., check-links, crawl-site, extract-links). This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming style.
With 6 tools, the count is well-scoped for a web scanning server, covering key operations like link checking, crawling, content fetching, and sitemap generation. Each tool has a clear role, avoiding bloat while providing comprehensive coverage for the domain.
The tool set covers core web scanning tasks such as link extraction, validation, crawling, and sitemap generation, with fetch-page adding content retrieval and conversion. A minor gap exists in lacking tools for security scanning (e.g., vulnerability checks) or performance analysis, but the provided tools support most common workflows effectively.
Related MCP Connectors
Web data for agents. Extract web pages, crawl websites, discover URLs, and search the web.
On-page crawl, tech-stack detection, DNS, SSL and WHOIS as agent tools.
Web extraction MCP: page content, metadata, articles, contacts, email checks, URL probes.
Fetch web/social data, screenshots, scrape/extract content, generate images, audit SEO & links.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables querying and retrieving content from webpages by parsing sitemap.xml files and fetching HTML content from specified URLs. Includes rate limiting for abuse protection.-
- AlicenseNot gradedqualityCmaintenanceEnables web crawling and content extraction from web pages, supporting multiple output formats like text, markdown, XML, and JSON, with robots.txt compliance and rate limiting.14 npm1MIT
- AlicenseAqualityDmaintenanceEnables web scraping of URLs, including extracting text, links, images, metadata, taking screenshots, and using CSS selectors for structured data extraction.610 npmMIT
- FlicenseAqualityCmaintenanceEnables fetching, crawling, and analyzing web pages with 29 tools for SEO audits, content extraction, and more.29-