Skip to main content
Glama
JoaoPedroLanca

MCP Web Tools Server

README.md
## MCP Web Tools Server (Node.js)

⭐ If you find this useful, please consider giving it a star!

MCP (Model Context Protocol) server for LM Studio that provides tools for internet connectivity:

- search_web: searches the web and returns titles and URLs
- fetch_url: performs HTTP GET and returns content-type and body (limited)
- extract_readable: extracts the main readable content from a page

### Requirements

- Node.js 18+

### Installation

```bash
npm install
```

### Execution (stdio mode)

```bash
npm start
```

The server uses stdio (required for integration with LM Studio via MCP).

### Environment variables (optional)

- `SERPAPI_KEY`: if provided, the `search_web` tool will use SerpAPI (Google). Otherwise, leave the field empty to use DuckDuckGo (HTML) without a key.

### LM Studio Configuration

Add a custom MCP server pointing to this project's command. In LM Studio, go to Program → Install → Edit mcp.json, and paste the json below:


```json
{
  "mcpServers": {
    "mcp-web-tools-server": {
      "command": "npm",
      "args": [
        "run",
        "start",
        "--silent"
      ],
      "cwd": "C:/mcp-web-tools",
      "env": {
        "SERPAPI_KEY": ""
      }
    }
  }
}
```

In "cwd" put the project Path

### Available tools

- `search_web`:
  - input: `{ "query": string, "limit?": number (1..10) }`
  - output: text with numbered list (title and URL)

- `fetch_url`:
  - input: `{ "url": string, "maxBytes?": number (up to 8MB) }`
  - output: two text blocks: metadata (contentType/bytes) and truncated body

- `extract_readable`:
  - input: `{ "url": string }`
  - output: text with title, byline, summary and main content

### Getting Started

Clone the repository:

```bash
git clone https://github.com/JoaoPedroLanca/mcp-web-tools.git
cd mcp-web-tools
npm install
npm start
```

[![Download ZIP](https://img.shields.io/badge/Download-ZIP-blue)](https://github.com/JoaoPedroLanca/mcp-web-tools/archive/refs/heads/main.zip)

### Notes

- Very large responses are truncated (16MB by default) to avoid exceeding client limits.
- `search_web` without a key uses DuckDuckGo HTML; results may vary and are subject to site changes.

TDQS

D1.6/5.0

Scored across 3 tools

Disambiguation3/5

The tools have distinct primary actions (extract, fetch, search), but without descriptions, their exact scopes and potential overlaps are unclear. An agent might confuse when to use fetch_url versus search_web if both involve web retrieval, but the verb differences provide some guidance.

Naming Consistency4/5

All tool names follow a consistent verb_noun pattern with snake_case (extract_readable, fetch_url, search_web), making them predictable and readable. There are no deviations in naming style across the set.

Tool Count3/5

With only 3 tools, the set feels thin for a 'Web Tools Server', suggesting it might lack coverage for common web operations like parsing or interacting with content. However, the count is not extreme and could be appropriate if these are core utilities.

Completeness2/5

Inferred domain is web-related utilities, but the surface is severely incomplete: missing obvious tools for actions like parsing HTML, handling cookies, or managing sessions. The three tools provide basic fetch, extract, and search functions, but leave significant gaps for comprehensive web tooling.

Maintenance

ActivityInactive
ResponsivenessNo issues