Skip to main content
Glama

Spider MCP - Web Search Crawler Service

A web search MCP service based on pure crawler technology, built with Node.js.

Features

  • No Official API Required: Completely based on crawler technology, no dependency on third-party official APIs

  • 🔍 Intelligent Search: Supports Bing web and news search

  • 📰 News Search: Built-in news search with time filtering

  • 🕷️ Pure Crawler: No official API dependency, uses Puppeteer for web scraping

  • 🚀 High Performance: Supports batch web scraping

  • 📊 Health Monitoring: Complete health check and metrics monitoring

  • 📝 Structured Logging: Uses Winston for structured logs

  • 🔒 Anti-Detection: Supports User-Agent rotation and other anti-bot measures

  • 🔗 Smart URL Cleaning: Automatically cleans promotional parameters while preserving essential information

Related MCP server: AnyCrawl MCP Server

Tech Stack

  • Node.js (>= 18.0.0)

  • Express.js - Web framework

  • Puppeteer - Browser automation

  • Cheerio - HTML parsing

  • Axios - HTTP client

  • Winston - Logging

  • @modelcontextprotocol/sdk - MCP protocol support

Quick Start

1. Install dependencies

npm install

or use pnpm

pnpm install

2. Download Puppeteer browser

npx puppeteer browsers install chrome

3. Environment configuration

Copy and configure the environment variables file:

cp .env.example .env

Edit the .env file according to your needs.

4. Start the service

Development mode:

npm run dev

Production mode:

npm start

The service will start at http://localhost:3000.

MCP Tools

Unified search tool supporting both web and news search:

  • Web Search: searchType: "web"

  • News Search: searchType: "news" with time filtering

  • Note: searchType is a required parameter and must be explicitly specified

Usage Examples:

# Web search
Use web_search tool to search "Node.js tutorial" with searchType set to web, return 10 results

# News search
Use web_search tool to search "tech news" with searchType set to news, return 5 results from past 24 hours

Other Tools

  • get_webpage_content: Get webpage content and convert to specified format

  • get_webpage_source: Get raw HTML source code of webpage

  • batch_webpage_scrape: Batch scrape multiple webpages

MCP Configuration

Chatbox Configuration

Create mcp-config.json file in Chatbox:

{
  "mcpServers": {
    "spider-mcp": {
      "command": "node",
      "args": ["src/mcp/server.js"],
      "env": {
        "NODE_ENV": "production"
      },
      "description": "Spider MCP - Web search and webpage scraping tools",
      "capabilities": {
        "tools": {}
      }
    }
  }
}

Other MCP Clients

{
  "mcpServers": {
    "spider-mcp": {
      "command": "node",
      "args": ["path/to/spider-mcp/src/mcp/server.js"]
    }
  }
}

Important Notes

  1. Anti-bot Measures: This service uses various techniques to avoid detection, but still needs to comply with robots.txt and terms of use

  2. Rate Limiting: It's recommended to control request frequency reasonably to avoid putting pressure on target websites

  3. Legal Compliance: Please ensure compliance with local laws and website terms of use when using this service

  4. Resource Consumption: Puppeteer will start Chrome browser, please pay attention to memory and CPU usage

  5. URL Cleaning: Automatically cleans promotional parameters but may affect some special link functionality

Development

Project Structure

spider-mcp/
├── src/
│   ├── index.js          # Main entry file
│   ├── mcp/
│   │   └── server.js     # MCP server
│   ├── routes/           # Route definitions
│   │   ├── search.js     # Search routes
│   │   └── health.js     # Health check routes
│   ├── services/         # Business logic
│   │   └── searchService.js # Search service
│   └── utils/            # Utility functions
│       └── logger.js     # Logging utility
├── logs/                 # Log files directory
├── tests/                # Test files
├── package.json          # Project configuration
├── .env.example          # Environment variables example
├── mcp-config.json       # MCP configuration example
└── README.md             # Project documentation

License

MIT License

Contributing

Issues and Pull Requests are welcome!

Available Tools

4 tools
batch_webpage_scrapeC

Batch scrape multiple webpages with concurrent processing support.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesList of webpage URLs to scrape, up to 20.
maxConcurrentNoMaximum concurrency

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'concurrent processing support' but fails to detail critical aspects like rate limits, error handling, authentication needs, or what the tool returns (e.g., content, metadata). This leaves significant gaps in understanding how the tool behaves in practice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose and key feature (concurrent processing) without unnecessary words. It is front-loaded and wastes no space, making it highly concise and well-structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a batch scraping tool with no annotations and no output schema, the description is insufficient. It lacks details on output format, error behavior, performance constraints, and how it differs from siblings. For a tool that likely involves network operations and concurrency, more context is needed to ensure safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents both parameters (urls and maxConcurrent). The description adds no additional semantic details beyond what the schema provides, such as URL format requirements or concurrency implications. Baseline score of 3 is appropriate as the schema handles parameter documentation adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('batch scrape') and resource ('multiple webpages'), specifying concurrent processing support, which distinguishes it from single-page scraping tools. However, it does not explicitly differentiate from sibling tools like get_webpage_content or get_webpage_source, which may also involve webpage retrieval, leaving some ambiguity in sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as get_webpage_content for single pages or web_search for search-based retrieval. It mentions concurrent processing but does not specify scenarios where batch processing is preferred over individual calls, offering minimal usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_webpage_contentC

Fetch webpage content and convert to specified format. Supports Markdown, HTML, and plain text.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the webpage to scrape. Must be a valid HTTP/HTTPS link.
formatNoOutput format: markdown (default), html, textmarkdown

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions fetching and converting content but lacks critical details such as authentication requirements, rate limits, error handling, or whether it performs web scraping with potential restrictions. This leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences that directly state the tool's function and supported formats, with no wasted words. It's front-loaded and efficiently communicates the core purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete for a web scraping tool. It doesn't address behavioral aspects like permissions, limitations, or response structure, which are crucial for proper usage. The high schema coverage doesn't compensate for these missing contextual elements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds minimal value by listing the supported formats but doesn't provide additional semantic context beyond what's in the schema, such as examples or edge cases for the URL parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('fetch', 'convert') and resources ('webpage content'), and identifies the supported output formats. However, it doesn't explicitly differentiate from sibling tools like 'get_webpage_source' or 'web_search', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'batch_webpage_scrape' or 'get_webpage_source'. It mentions supported formats but doesn't explain scenarios where one format might be preferred over another or when to choose this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_webpage_sourceB

Fetch the raw HTML source code and page information of a webpage.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the webpage to get source from. Must be a valid HTTP/HTTPS link.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't mention error handling, timeouts, authentication needs, rate limits, or what 'page information' includes. The description is minimal beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the core purpose, zero wasted words. Every part of the description earns its place by specifying what's fetched and from where.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter tool with no annotations and no output schema, the description is minimally adequate. It covers the basic purpose but lacks details about return format, error conditions, or behavioral traits that would help an agent use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the single 'url' parameter thoroughly. The description adds no additional parameter context beyond what's in the schema, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Fetch'), resource ('raw HTML source code and page information'), and target ('webpage'). It distinguishes from potential siblings by specifying 'raw HTML source code' rather than processed content or search results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'get_webpage_content' or 'batch_webpage_scrape'. The description implies it's for raw source code, but doesn't clarify use cases or exclusions compared to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.4/5.0
Disambiguation4/5

The tools are mostly distinct with clear purposes: batch scraping, content fetching, source fetching, and web searching. However, get_webpage_content and get_webpage_source could be confused as both fetch webpage data, though their descriptions clarify content vs. source distinctions.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with clear verb_noun structure (e.g., batch_webpage_scrape, get_webpage_content). The naming is uniform and predictable across all four tools.

Tool Count5/5

With 4 tools, this server is well-scoped for web-related tasks. Each tool serves a distinct function in scraping, fetching, and searching, making the count appropriate without being too sparse or bloated.

Completeness4/5

The toolset covers core web operations: scraping, content retrieval, and searching. A minor gap exists in lacking tools for advanced processing (e.g., parsing or data extraction), but the provided tools support basic to intermediate workflows effectively.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    Enables web searching and content scraping through Google Custom Search API. Provides tools to search the internet, extract webpage content, and automatically scrape search results for comprehensive information gathering.
    3
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables web scraping and crawling capabilities for LLM clients, supporting single-page scraping, multi-page website crawling, and web search with multiple engines (Playwright, Cheerio, Puppeteer) and flexible output formats including markdown, HTML, text, and screenshots.
    14
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables web searching through Google, DuckDuckGo, and Bing using a headless Chrome browser, returning structured results with titles, URLs, and snippets. Also supports fetching and extracting text content from any webpage.
    13
    MIT

Latest Blog Posts

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/yc9yc/spider-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server