Skip to main content
Glama
README.md7.55 kB
[中文](README-zh.md) ----- # 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 ## Installation ```bash git clone https://github.com/coucya/mcp-server-requests.git cd mcp-server-requests pip install . ``` ## Usage ### MCP Server Configuration ```json { "mcpServers": { "mcp-server-requests": { "command": "python", "args": [ "-m", "mcp_server_requests" ] } } } ``` ### Command Line ### 0. **Start MCP Server** Start the MCP server directly: ```bash 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. ```bash 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

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/coucya/mcp-server-requests'

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