Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Build a narrow, read-only MCP tool that fetches a page, extracts bounded text, and returns that text with source metadata. The stdio transport carries the MCP conversation between a client and a local server process; it does not provide a durable page cache, conversation state, or a standard citation record. Those are application responsibilities.

What stdio MCP provides—and what you still need to build

In the TypeScript SDK v1 server guide, StdioServerTransport connects an MCP server to a client that starts it as a child process. MCP messages use JSON-RPC over the process’s standard input and output. Keep that channel reserved for protocol traffic: write diagnostics to standard error so log lines cannot corrupt the stream.

The protocol is not a web-fetching service by itself. The reference fetch server demonstrates URL retrieval and conversion of page content to Markdown, including output-length limits and a start_index continuation option. Nor does stdio make requests in one conversation automatically available as state for later requests. The MCP basic specification revision dated 2026-07-28 says request processing must not rely on earlier requests; if your application needs to associate requests, pass an explicit identifier.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Likewise, an MCP connection does not promise a durable cache or a canonical citation format. The Fetch Standard describes HTTP cache behavior, but choosing cache keys, retention, invalidation, and provenance fields for stored extracted text is an application design decision.

#1 Best Overall
Dell PowerEdge R730xd Server 24B SFF 2U, 2X Intel Xeon E5-2690 v4 2.6Ghz (28-cores Total), 128GB DDR4 RAM, 4X 1.2TB 10K SAS 2.5” 12Gb/s HDD, H730P 2GB RAID, NIC 10Gb + I350 1Gb (Renewed)
  • Dell PowerEdge R730xd 24B SFF 2U Server
  • 2x Intel Xeon E5-2690 v4 2.6Ghz 14-Core (28-cores Total)
  • 128GB DDR4 RAM – 4x 1.2TB 10K SAS 2.5” 12Gb/s
  • Dell H730P mini 2GB 12Gb/s RAID
  • 2x 750W PSU - 2x 10Gb SFP+ 2x 1Gb (RJ45) NIC

Design a bounded fetch tool

Start with one read-only operation such as fetch_page(url). A deliberately narrow interface is easier to secure and explain than a general-purpose request proxy. The reference server is useful as an extraction example, not as proof that arbitrary URL retrieval is safe: its README warns that the server can access local and internal IP addresses.

  1. Parse and normalize the input. Accept only the URL forms and schemes your deployment intends to support. Reject malformed URLs and embedded credentials. Normalize consistently before applying policy or constructing a cache key.
  2. Enforce destination policy. If the tool is meant to read public websites, resolve the hostname and reject private, loopback, link-local, and other special-use addresses. Apply the same checks to redirect destinations before following them; do not assume that a safe initial URL makes the final destination safe.
  3. Bound network work. Set connection and total timeouts, a redirect-count limit, and a maximum response size. Stop reading when the byte limit is reached rather than downloading an unbounded response and truncating it afterward.
  4. Check what you received. Handle HTTP status and content type explicitly. Send supported HTML through a bounded extractor; reject or handle other formats only if your tool is designed for them. Limit parsing work as well as response bytes.
  5. Return a clear result or failure. Distinguish blocked destinations, network errors, unsupported media types, extraction failures, and truncation. Include whatever trustworthy response metadata is available, but never fill missing page text with a guess.

These controls are application safeguards, not guarantees supplied by stdio. The MCP specification revision dated 2026-07-28 also cautions against automatic network dereferencing of JSON Schema references and recommends bounding schema-validation work; the broader lesson is to place explicit limits around network and parsing operations.

Rank #2
Dell PowerEdge R440 Server, Intel Xeon Silver 4112 2.60GHz, 16GB DDR4 RAM, 32TB (4X 8TB SAS 7.2K 12 GB/s) Storage, PERC H740P RAID, Dual 550W PSU (Renewed)
  • PROCESSOR & MEMORY: Powered by an Intel Xeon Silver 4112 2.60GHz CPU and 16GB DDR4 RAM for reliable server-grade performance
  • STORAGE CAPACITY: Equipped with 32TB total storage via four 8TB 12Gb/s SAS hard drives for high-throughput data handling
  • RAID CONTROLLER: Features the PERC H740P RAID controller, enabling advanced data protection and flexible storage configuration
  • POWER SUPPLY: Dual 550W redundant power supply units ensure continuous uptime and protection against single power source failure
  • FLEXIBLE DEPLOYMENT: Ships with no OS installed, allowing administrators to install their preferred operating system or hypervisor

Return text with provenance the model can use

Do not return extracted prose as an unattributed blob. Pair it with a compact source record so a caller can distinguish what was requested from what was actually fetched. The following is an application-designed example, not a canonical MCP citation schema:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
{
  "requested_url": "https://example.org/article",
  "final_url": "https://www.example.org/article",
  "fetched_at": "2026-10-11T12:00:00Z",
  "title": "Article title",
  "status": 200,
  "text": "Extracted page text...",
  "truncated": false,
  "next_start_index": null
}

Use an actual fetch timestamp and response status, and include a title only when extraction is reliable. If output is truncated, make that explicit and provide a continuation position when your interface supports one. The reference fetch tool’s start_index option illustrates offset-based continuation; the client must retain and advance the offset correctly.

When splitting a page into chunks, keep each passage attached to its source record and, where feasible, a section identifier or text span. In the model-facing instructions, require citations to refer only to returned source records, and require the model to say when those records do not support a claim. Treat fetched page text as untrusted data, not as instructions that can replace system policy or tool rules.

Choose a cache policy deliberately

A result cache is different from relying on HTTP’s ordinary cache semantics. The Fetch Standard describes cache modes, including use of a matching fresh response by default, but it does not prescribe a persistent cache for your MCP application or decide how long your extracted Markdown remains useful.

Rank #4
Sale
StarTech 1-Port USB 2.0 Network Print Server, 10/100Mbps, TAA (PM1115U2)
  • WIRED NETWORK USB PRINT SERVER: Connect a single USB 2.0 printer to a wired Ethernet LAN (RJ45); 10Base-T, 100Base-TX auto-sensing to ensure a reliable connection, letting you print from any network computer, across the office or over the Internet
  • MANUAL NETWORK SETUP REQUIRED: Configuration via web interface (static IP or DHCP) using LPR queue “LP1"; Not plug-and-play, requires intermediate network knowledge for installation; Access our online FAQs for additional helpful tips and instructions
  • USB PRINTER COMPATIBILITY: Works with most USB 2.0 printers using standard drivers; Not compatible with USB hubs, multi-function printers with proprietary drivers, or printers requiring full bi-directional communication
  • COMPATIBILITY: The USB to Ethernet print server is USB 2.0 compliant and works with macOS and Windows; It also supports LPR network printing and Bonjour Print Services for broad compatibility; Included software is compatible with Windows only
  • PRINT FROM ANYWHERE: Print from any computer connected to the Ethernet; This print server doesn’t require a wired connection to a computer, however it must be connected to your networking device (eg. router or switch) with the included RJ45 network cable

A practical cache key includes the normalized requested URL and every request option that can change the result, such as extraction mode or output limits. Store the fetched and extracted forms only when the intended use justifies their retention. Useful record fields include fetch time, expiry, status, relevant response validators such as ETag or Last-Modified, and the final redirected URL. Make freshness visible to the tool caller rather than presenting old content as newly fetched.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Approach Durability Privacy and retention Invalidation and concurrency Operational footprint
Short-lived in-memory cache Lost when the server process exits. Content stays within process memory and is not retained across restarts by the cache. Simple expiry and invalidation; concurrent requests still need sensible coordination to avoid duplicate work or inconsistent updates. Lowest storage complexity; bounded memory use still needs an explicit limit.
Persistent local cache Can survive process restarts. Fetched content remains on disk until expiry or deletion, so retention and access controls matter. Requires explicit expiry, invalidation, and coordination for concurrent reads and writes. Adds storage management, cleanup, and recovery considerations.

For either design, decide how to handle error responses, redirects, stale entries, and responses marked no-store. Use validators when the origin supports them, and define whether a failed revalidation may serve stale content; if it does, label that result as stale. Never let a cached result bypass current destination policy: validate the requested destination before retrieval, and retain the final URL so redirect policy remains auditable.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Choose how large pages are delivered

Result pattern Useful when Trade-off
One bounded result Pages are small enough for the tool’s output budget. Simpler for clients, but large pages must be cut off or rejected at the limit.
Offset-based continuation A caller may need more of a long extracted page. Preserves access to later text without returning everything at once, but the client must track offsets and avoid skipping or repeating spans.

Whichever pattern you choose, state whether offsets refer to extracted characters or another stable unit, and make truncation unmistakable. A limit is useful only if the caller can tell what was omitted and how to request the next part.

Respect robots rules without treating them as access control

The reference fetch server checks robots.txt by default for model-initiated fetches. RFC 9309 describes the Robots Exclusion Protocol as crawler guidance: it is not authentication, authorization, or a network security boundary. Honor the documented crawler behavior where applicable, but do not use robots compliance as a substitute for destination allowlists, authentication checks, or private-network blocking.

If a robots rule blocks a fetch, report that outcome rather than silently returning content. The same applies to network failures, unsupported content types, and extraction errors. Report source metadata only when it is actually available.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check SDK and reference-server compatibility

The transport example above is specific to the TypeScript SDK v1 guide; do not assume its exact imports or API surface apply unchanged to every SDK major version. The reference fetch server README specifies MCP Python SDK 1.x, with the range mcp>=1.29.0,<2, and notes that SDK 2.0 renamed APIs while a port was in progress. Check the package’s current compatibility information before using its installation instructions or copying code.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.