About pageport
pageport is a URL-fetching utility for people and agents that need readable page content. It converts HTML to markdown-style text, preserves non-HTML responses, and supports retrieving long results in character-based chunks.
Key features
- 01Fetch URLs and follow redirects
- 02Convert HTML into readable markdown-style text
- 03Return raw HTML or unchanged non-HTML bodies
- 04Read long results in offset-based chunks
- 05Report fetch failures with reasons
Use cases
- 01Extracting readable text from a web page
- 02Reading lengthy pages in successive chunks
- 03Retrieving raw HTML for inspection
- 04Passing fetched page content to an agent
MCP support
pageport runs as an stdio MCP server with a `fetch` tool that retrieves a URL and optionally converts its contents to markdown-style text.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
1Saved tool list · updated 1d ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| raw | boolean | No | Return raw HTML instead of markdown conversion |
| url | string | Yes | URL to fetch |
| max_length | integer | No | Maximum number of characters to return |
| start_index | integer | No | Start index for content |
Details
From the project READMEpageport
Fetch a web page and read it as text. pageport retrieves a URL over HTTP, turns HTML pages into clean markdown-style text you can scan or quote, and hands non-HTML responses back exactly as they arrive. Long pages are not a problem: ask for a window of characters, then page forward through the rest with an offset.
What it does
- Sends a normal browser-style request and follows redirects.
- Converts HTML to readable markdown-style output: headings keep their levels, links keep their targets, lists stay lists, and script or style content is dropped instead of polluting the text.
- Returns the untouched document when you ask for raw output, and returns plain-text or other non-HTML bodies unchanged.
- Slices long results: choose where reading starts and how many characters come back. When a result is cut short, the output says so and tells you the offset to use for the next chunk.
- Reports failures plainly: an unreachable host or an error status comes back as an error result with the reason, never as empty success.
CLI
npx @reneturcios/pageport fetch https://example.com
npx @reneturcios/pageport fetch https://example.com --max-length 2000
npx @reneturcios/pageport fetch https://example.com --start-index 2000 --max-length 2000
npx @reneturcios/pageport fetch https://example.com --raw
npx @reneturcios/pageport --version
Exit codes: 0 on success, 1 on a fetch error, 2 on a usage error.
MCP server
The same binary runs as a stdio MCP server:
npx -y @reneturcios/pageport mcp
MCP client configuration:
{
"mcpServers": {
"pageport": {
"command": "npx",
"args": ["-y", "@reneturcios/pageport", "mcp"]
}
}
}
Tool: fetch
Fetches a URL from the internet and optionally extracts its contents as markdown.
| Parameter | Type | Required | Default | Meaning |
|---|---|---|---|---|
url | string | yes | — | URL to fetch |
max_length | integer | no | 5000 | Maximum number of characters to return |
start_index | integer | no | 0 | Start index for content |
raw | boolean | no | false | Return raw HTML instead of markdown conversion |
Docker
docker run -i ghcr.io/cloudcorprecords/pageport
docker run --rm ghcr.io/cloudcorprecords/pageport fetch https://example.com
The container defaults to the mcp subcommand, so a plain docker run -i
is a working stdio MCP server.
Development
npm install
npm run build
npm test
npm run dev
Tests cover the HTML conversion, the slicing and truncation behaviour, and the fetch flow against injected responses — no network is needed.
License
MIT — see LICENSE.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.