Skip to main content
Glama
mcp-server-requests

mcp-server-requests

by coucya

中文


mcp-server-requests

An MCP server that provides HTTP request capabilities, enabling LLMs to fetch and process web content.

Features

  • fetch: Web content fetching tool

    • Supports converting web content to Markdown format

    • Supports filtering web content (non-visual elements like script, style, meta)

    • Feeds into LLM context, reducing token consumption through Markdown conversion or filtering non-visual elements

  • fetch_to_file: Web content saving tool

    • Web content is not fed into LLM context, avoiding excessive token consumption

  • http_request: Generic HTTP request tool

    • Full HTTP method support (GET, POST, PUT, PATCH, DELETE)

    • Supports custom request headers

    • Supports text and JSON request bodies

    • Returns complete HTTP response information (status, headers, body) for LLMs

  • Supports custom User-Agent

  • Supports random User-Agent generation

  • Supports using MCP Root capability, controlled by --use-root, usable with MCP Clients that have root capability

Related MCP server: cURL MCP Server

Installation

git clone https://github.com/coucya/mcp-server-requests.git
cd mcp-server-requests
pip install .

Usage

MCP Server Configuration

{
    "mcpServers": {
        "mcp-server-requests": {
            "command": "python",
            "args": [
                "-m",
                "mcp_server_requests"
            ]
        }
    }
}

Command Line

0. Start MCP Server

Start the MCP server directly:

python -m mcp_server_requests

Options

  • --user-agent TEXT: Specify custom User-Agent string

  • --random-user-agent [browser=xxx;os=xxx]: Use randomly generated User-Agent

  • --force-user-agent: Force using command line specified User-Agent, ignoring LLM provided UA

  • --list-os-and-browser: List available browsers and OS for random User-Agent generation

  • --use-root: Enable workspace root support for file operations (requires MCP Client with root capability support)

  • --allow-external-file-access: Allow file operations outside workspace (only with --use-root)

Option Details

  • --user-agent and --random-user-agent are mutually exclusive and cannot be used together

  • User-Agent setup methods:

    • Custom string: --user-agent "Mozilla/5.0 (...)"

    • Fully random: --random-user-agent

    • Conditional random generation:

      • Specify browser type: --random-user-agent browser=chrome

      • Specify OS: --random-user-agent os=windows

      • Both browser and OS: --random-user-agent browser=chrome;os=windows

      • Note: Browser and OS parameters are case insensitive

  • Use --list-os-and-browser to view available browsers and OS for --random-user-agent.

  • --force-user-agent option controls User-Agent priority:

    • When --force-user-agent is enabled: Force using command-line specified User-Agent (via --user-agent or --random-user-agent)

    • When --force-user-agent is disabled:

      • If LLM provides User-Agent in headers, use the LLM-provided one

      • Otherwise use command-line specified User-Agent

    • If none specified, use default User-Agent: Mozilla/5.0 (compatible; mcp-server-requests/{version})

  • --use-root enables file operations relative to workspace root:

    • Prerequisite: Requires MCP Client with root capability support

    • When enabled: fetch_to_file allows absolute paths or relative paths, relative paths are relative to workspace root

    • When disabled: fetch_to_file must use absolute paths, files are saved to specified absolute path locations

  • --allow-external-file-access: Controls whether file operations outside workspace are allowed (only usable with --use-root)

    • Prerequisite: Requires --use-root to be enabled, this option has no effect if --use-root is not enabled

    • When enabled: fetch_to_file can operate on files outside the workspace directory

    • When disabled: fetch_to_file can only operate on files within the workspace directory, even if absolute paths are provided, files outside the workspace cannot be operated on


1. fetch - Fetch Web Content

The fetch subcommand is equivalent to the MCP fetch tool functionality, used to demonstrate fetch capabilities.

python -m mcp_server_requests fetch <URL> [--return-content {raw,basic_clean,strict_clean,markdown}]

Options:

  • --return-content: Return content type (default: markdown)

    • raw: Return raw unprocessed HTML content (includes response headers)

    • basic_clean: Basic cleanup, removing non-display tags (script, style, meta, etc.) while preserving structure

    • strict_clean: Strict cleanup, removing non-display tags and most HTML attributes, keeping only essential structure

    • markdown: Convert HTML to clean Markdown format


Functionality

MCP Tool Details

1. fetch - Fetch Web Content

Fetch content from the specified URL and return it in the specified format.

Parameters:

  • url (required, string): Target URL, supports HTTP/HTTPS protocols

  • return_content (optional, enum): Content processing format, defaults to "markdown"

    • "raw": Return raw HTML content with complete HTTP response headers

    • "basic_clean": Basic cleanup, removing non-display tags (script, style, meta, etc.) while preserving HTML structure

    • "strict_clean": Strict cleanup, removing non-display tags and most HTML attributes, keeping only essential structure

    • "markdown": Convert HTML content to clean Markdown format

Returns: Content processed according to the specified format


2. fetch_to_file - Fetch Web Content and Save to File

Fetch content from the specified URL and save it to a file.

Parameters:

  • url (required, string): Target URL

  • file_path (required, string): File save path

    • When --use-root is enabled: Must be a relative path (relative to workspace root)

    • When --use-root is disabled: Must be an absolute path

  • return_content (optional, enum): Content processing format, defaults to "markdown", same options as fetch tool

Features:

  • Automatically creates parent directories for nested paths

  • All files saved with UTF-8 encoding

  • When --use-root is enabled, can work with --allow-external-file-access to control file access scope

Returns: Operation result or error message


3. http_request - Generic HTTP Request Tool

Send HTTP requests using any method and get complete responses.

Parameters:

  • url (required, string): Target URL

  • method (optional, enum): HTTP method, defaults to "GET"

    • "GET", "POST", "PUT", "PATCH", "DELETE"

  • query (optional, object): URL query parameters as key-value pairs, automatically URL-encoded

  • headers (optional, object): Custom HTTP request headers

  • data (optional, string): Text format request body data, mutually exclusive with json parameter

  • json (optional, any type): JSON format request body data, mutually exclusive with data parameter

Parameter Constraints:

  • data and json parameters cannot be used together

  • When using json parameter, Content-Type: application/json is automatically set

  • When using data parameter, it's recommended to manually set appropriate Content-Type

Returns: Complete HTTP response (status line, response headers, and response body)


Note: Individual HTTP method tools (http_get, http_post, http_put, http_patch, http_delete) have been removed and replaced by the unified http_request tool.

License

MIT

Available Tools

3 tools
fetchA

Fetch web page content

Function/Features:

  • Retrieves web page content from any HTTP/HTTPS URL

Args: url (str): The URL to fetch content from. return_content ('raw' | 'basic_clean' | 'strict_clean' | 'markdown', optional): Processing format for HTML content. Defaults to "markdown". - "raw": Returns unmodified HTML content with full response headers - "basic_clean": Removes non-displaying tags (script, style, meta, etc.) while preserving structure - "strict_clean": Removes non-displaying tags and most HTML attributes, keeping only essential structure - "markdown": Converts HTML content to clean, readable Markdown format

Examples: // Returns content as markdown fetch({url: "https://example.com"})

// Returns raw HTML content
fetch({url: "https://api.example.com/data", return_content: "raw"})  

Inputs: url (required), return_content. Returns: result

fetch_to_fileA

Fetch web content and save it to a file in the workspace

Function/Features:

  • Retrieves web content from any HTTP/HTTPS URL and saves it to a file

  • Automatic directory creation for nested file paths

Notes:

  • Automatically creates parent directories if they don't exist

  • Uses UTF-8 encoding for all saved files

  • parameter file_path must be a absolute path

Args: url (str): The URL to fetch content from. file_path (str): File path where the content will be saved. return_content ('raw' | 'basic_clean' | 'strict_clean' | 'markdown'], optional): Processing format for HTML content. Defaults to "markdown". - "raw": Saves unmodified HTML content - "basic_clean": Saves HTML with non-displaying tags removed (script, style, etc.) while preserving structure - "strict_clean": Saves HTML with non-displaying tags and most HTML attributes removed, keeping only essential structure - "markdown": Converts HTML content to clean, readable Markdown format before saving

Examples: // Save web page as markdown fetch_to_file({url: "https://example.com", file_path: "/home/user/content/example.md"})

// Save raw HTML content
fetch_to_file({url: "https://api.example.com/data", file_path: "C:\data\response.html", return_content: "raw"})

// Save cleaned content
fetch_to_file({url: "https://example.com/docs", file_path: "/tmp/docs/cleaned.html", return_content: "strict_clean"})

Inputs: url (required), file_path (required), return_content. Returns: result

http_requestA

Execute an HTTP request with the specified method

Function/Features:

  • Sends HTTP requests using any standard method (GET, POST, PUT, PATCH, DELETE)

  • Allows custom HTTP headers

  • Returns complete HTTP response including status, headers, and body

Notes:

  • 'data' and 'json' parameters are mutually exclusive - use only one

  • When using 'json', the Content-Type header is automatically set to 'application/json'

  • When using 'data', you may need to set appropriate Content-Type header manually

  • Query parameters are URL-encoded automatically and appended to the URL

  • The response includes the full HTTP response with status line, all headers, and body

Args: url (str): Target URL for the HTTP request. method ('GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'], optional): HTTP method to use. Defaults to "GET". query ({ [string]: string | number }, optional): Query parameters to append to the URL. Values are automatically converted to strings. Example: {'key1': 'value1', 'key2': 2}, becomes "key1=value1&key2=2" appended to the URL. headers ({ [string]: string }, optional): Custom HTTP request headers. data (str, optional): Text data to send in the request body. Cannot be used with 'json'. json (Any JSON, optional): Data to serialize as JSON and send in the request body. Cannot be used with 'data'.

Examples: // GET request (default method) http_request({url: "https://api.example.com/data"})

// GET request with query parameters
http_request({url: "https://api.example.com/search", query: {"q": "test", "limit": 10}})

// POST request with JSON data
http_request({url: "https://api.example.com/users", method: "POST", json: {"name": "John", "age": 30}})

// POST request with raw text data
http_request({url: "https://api.example.com/log", method: "POST", data: "This is a log message"})

// PUT request
http_request({url: "https://api.example.com/users/123", method: "PUT", json: {"name": "John Updated", "age": 31}})

// PATCH request
http_request({url: "https://api.example.com/users/123", method: "PATCH", json: {"age": 31, "email": "new@example.com"}})

// DELETE request
http_request({url: "https://api.example.com/users/123", method: "DELETE"})

// Request with custom headers
http_request({url: "https://api.example.com/secure", method: "POST", headers: {"Authorization": "Bearer token"}, json: {"key": "value"}})

Inputs: url (required), method (required), query (required), headers (required), +2 more. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 3 tools

    Disambiguation5/5

    The three tools have clearly distinct purposes with no overlap. 'fetch' retrieves web content for immediate use, 'fetch_to_file' saves web content to a file, and 'http_request' handles general HTTP requests with full control over methods and parameters. Each tool serves a unique function in the web request workflow.

    Naming Consistency5/5

    All tools follow a consistent snake_case naming pattern with clear verb-action structure. 'fetch', 'fetch_to_file', and 'http_request' all use descriptive verbs that accurately reflect their functionality, maintaining excellent naming consistency throughout the toolset.

    Tool Count4/5

    Three tools is reasonable for a web requests server, though slightly minimal. The tools cover the core use cases well, but the count feels slightly lean for a server that could potentially benefit from additional specialized tools like websocket handling or streaming responses.

    Completeness5/5

    The toolset provides comprehensive coverage for web request operations. It includes content fetching with processing options, file-based fetching, and a full-featured HTTP client supporting all major methods, headers, and data formats. No obvious gaps exist for a general-purpose web requests server.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      C
      quality
      F
      maintenance
      Enables LLMs to retrieve and process web content by fetching URLs and converting HTML to markdown, with support for chunked reading and customizable user-agents.
      1
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables LLMs to make HTTP requests using structured cURL commands with support for multiple authentication methods, custom headers, and comprehensive request/response control.
      2
      8 npm
      4
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables LLMs to fetch and extract web content using browser automation, OCR, and multiple extraction methods, handling JavaScript rendering and anti-scraping techniques.
      17
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables LLMs to make HTTP requests with OAuth2, session cookies, retry logic, and cURL command generation, while providing security features like SSRF protection and TLS enforcement.
      1
      MIT