# Serwer MCP do czytania stron internetowych dla Claude, Cursor i innych klientów MCP

> Serwer MCP do czytania stron dla Claude Desktop i klientów: narzędzie read_url w Pythonie w 40 liniach zwraca czysty Markdown. Bez KYC, płatność kryptowalutą.

- URL: https://webreaderapi.com/pl/docs/mcp/
- Ostatnia aktualizacja: 2026-10-22
- Wydawca: WebReaderAPI (https://webreaderapi.com)

Daj dowolnemu klientowi MCP narzędzie `read_url`, które zamienia link w czysty Markdown. Serwer to jeden krótki plik Pythona, który uruchamiasz na własnej maszynie; Twój klucz API pozostaje w jego środowisku.

**Szybka odpowiedź — Jak dodać czytnik stron internetowych do Claude Desktop lub Cursor przez MCP?**

Uruchom mały serwer MCP, który udostępnia narzędzie `read_url` wywołujące **WebReaderAPI**, a następnie zarejestruj go w ustawieniach MCP swojego klienta, umieszczając klucz w `env`. Model może wtedy czytać dowolną publiczną stronę jako czysty Markdown. Każde odczytanie strony kosztuje 1 kredyt, a 2 z przeglądarką, od 0,07 USD/1K stron według stanu na październik 2026. Bez KYC; płatność kryptowalutą.

## Serwer MCP w skrócie

| Atrybut | Wartość |
| --- | --- |
| Język | Python 3.10+, z pakietami `mcp` i `httpx` |
| Transport | stdio: klient uruchamia serwer jako lokalny proces |
| Narzędzie | `read_url(url, max_chars)` → tytuł, źródłowy URL, a następnie Markdown strony |
| Dlaczego nie web_fetch | Claude Code i OpenClaw mają już wbudowane narzędzie o tej nazwie |
| Klucz | Odczytywany z `WEBREADER_API_KEY` w środowisku serwera |
| Rozliczanie | 1 kredyt = 1 odczytana strona bez przeglądarki; 2 kredyty, gdy strona wymaga przeglądarki do wyrenderowania JavaScript. Zapytanie, które się nie powiedzie lub które zostanie odrzucone przez robots.txt witryny, nie jest obciążane opłatą |

## Dlaczego narzędzie read_url, a nie web_fetch?

Bo dwa narzędzia o tej samej nazwie mylą zarówno klienta, jak i model. Claude Code i OpenClaw zawierają już narzędzie o nazwie `web_fetch`. Odmienna nazwa, `read_url`, i jasny opis pozwalają modelowi wybrać nasze narzędzie, gdy potrzebuje głównej treści strony, w tym stron z JavaScriptem i PDF-ów.

Narzędzie zwraca tekst, nie JSON. Modele lepiej radzą sobie z krótkim nagłówkiem i Markdownem niż z zagnieżdżonymi polami, a nagłówek trzyma źródłowy URL w zasięgu wzroku, dzięki czemu odpowiedź może go zacytować.

*webreader_mcp.py*

```python
import os

import httpx
from mcp.server.fastmcp import FastMCP

API = "https://webreaderapi.com/api/v1/read"
KEY = os.environ["WEBREADER_API_KEY"]
mcp = FastMCP("webreaderapi")


@mcp.tool()
def read_url(url: str, max_chars: int = 20000) -> str:
    """Read a public web page and return its main content as Markdown.

    Use it when the user gives a link or when a page must be read to answer.
    max_chars caps the length of the returned text (1,000 to 500,000).
    """
    params = {"url": url, "max_chars": max(1000, min(int(max_chars), 500000))}
    try:
        resp = httpx.get(API, params=params, headers={"Authorization": "Bearer " + KEY}, timeout=75)
    except httpx.HTTPError as exc:
        return "Network error while reading the page: " + str(exc)
    body = resp.json()
    if resp.status_code != 200:
        err = body.get("error", {})
        return "Could not read the page: " + err.get("code", str(resp.status_code)) + ". " + err.get("message", "")
    title = body.get("title") or url
    return "# " + title + "\nSource: " + body.get("final_url", url) + "\n\n" + body.get("markdown", "")


if __name__ == "__main__":
    mcp.run()

```

## Jak zainstalować i przetestować serwer?

Utwórz środowisko wirtualne, zainstaluj `mcp` i `httpx`, i zapisz plik powyżej. Pakiet `mcp` to oficjalny Python SDK Model Context Protocol; `FastMCP` zamienia otypowaną funkcję Pythona w narzędzie, używając docstringa jako jego opisu.

Zanim podłączysz go do klienta, uruchom plik raz z terminala z ustawionym kluczem. Czeka w ciszy na klienta na stdin, co oznacza, że wystartował poprawnie; zatrzymaj go przez Ctrl+C.

*Instalacja*

```bash
python -m venv .venv
. .venv/bin/activate
pip install "mcp[cli]" httpx
WEBREADER_API_KEY="your-key" python webreader_mcp.py
```

## Jak zarejestrować go w Claude Desktop?

Otwórz ustawienia deweloperskie Claude Desktop, edytuj `claude_desktop_config.json` i dodaj wpis w `mcpServers`. Użyj ścieżek bezwzględnych: Pythona ze swojego środowiska wirtualnego i pliku serwera. Umieść klucz w `env`, aby nigdy nie pojawił się w argumentach narzędzia ani w rozmowie. Uruchom ponownie Claude Desktop, a `read_url` pojawi się na liście narzędzi.

Cursor czyta tę samą strukturę `mcpServers` ze swojego własnego pliku konfiguracji MCP, a Claude Code może zarejestrować to samo polecenie swoim poleceniem `claude mcp add`. W przypadku OpenClaw zobacz [stronę OpenClaw](https://webreaderapi.com/pl/docs/openclaw/).

*claude_desktop_config.json*

```json
{
  "mcpServers": {
    "webreaderapi": {
      "command": "/home/you/webreader/.venv/bin/python",
      "args": ["/home/you/webreader/webreader_mcp.py"],
      "env": { "WEBREADER_API_KEY": "your-key" }
    }
  }
}
```

## Jak utrzymać strony w kontekście modelu?

Zmniejsz `max_chars`. Domyślne 20 000 znaków wystarcza na większość artykułów i nie pozwala długiej stronie zapełnić kontekstu. Model czytający kilka stron w jednej odpowiedzi radzi sobie lepiej z 8 000 do 12 000 znaków na stronę.

Poproś model, aby czytał strony, których potrzebuje, a nie każdy link, który widzi. Krótkie zdanie w instrukcjach projektu, takie jak „czytaj najwyżej trzy strony na pytanie”, kontroluje zarówno koszt, jak i kontekst.

## Co się dzieje, gdy witryna odmówi odczytu?

Narzędzie zwraca krótki komunikat z kodem błędu, takim jak `blocked_by_robots` lub `target_refused`, i nic nie jest naliczane. Respektujemy robots.txt: nasz crawler identyfikuje się jako WebReaderAPI, przestrzega reguł napisanych dla niego lub dla wszystkich robotów i nie czyta strony, której witryna zabrania. Odrzucone strony nie są obciążane opłatą. Jeśli witryna odrzuci nasze zapytanie, zwracamy jej odpowiedź: nigdy nie rozwiązujemy CAPTCHA, nie logujemy się do kont ani nie próbujemy obejść blokady lub paywalla. Model może wtedy powiedzieć, że strona nie jest dostępna dla zautomatyzowanych czytników, i użyć innego źródła.

## Serwer MCP: najczęstsze pytania

### Czy istnieje oficjalny pakiet MCP WebReaderAPI?

Nie. Plik na tej stronie to cała integracja: 40 linii, które możesz przeczytać, zmienić i uruchomić samodzielnie. Niczego nie trzeba instalować od nas, a Twój klucz nie opuszcza Twojej maszyny poza wywołaniami naszego API.

### Czy model może przeszukiwać internet za pomocą tego serwera?

Nie. `read_url` czyta stronę, której adres Ty lub model już macie. Połącz go z dowolnym narzędziem wyszukiwania oferowanym przez klienta; model wyszukuje, a potem czyta strony, które mają znaczenie.

### Ile kosztuje uruchomienie asystenta z tym serwerem?

Jeden kredyt za odczytanie strony, dwa, gdy potrzebna jest przeglądarka. Asystent czytający 50 stron dziennie zużywa około 1500 kredytów miesięcznie, a 10 000 stron (3,75 USD) pokrywa to na około sześć miesięcy.

### Czy serwer działa offline?

Nie. Przy każdej stronie wywołuje `https://webreaderapi.com/api/v1/read`, więc potrzebuje dostępu do internetu i ważnego klucza.

---

WebReaderAPI: WebReaderAPI to API czytnika stron internetowych dla agentów AI, które zamienia każdą publiczną stronę internetową w czysty Markdown, z płatnością kryptowalutą i bez przesyłania dokumentów tożsamości. Przedpłacone kredyty od 0,07 USD/1K stron nigdy nie wygasają, a robots.txt jest respektowany. Bez KYC — bez dowodu, bez selfie, bez dokumentów. Płatność kryptowalutą.
