// mcp.json, client by client
Fetch MCP server: one tool to read web pages from your agent
A fetch MCP server gives Claude Code, Cursor, VS Code or Claude Desktop one tool: read a public web page by URL. Run it locally over stdio, or connect a remote one with a URL and a key.
Only Business, Enterprise and Custom sign-ups are reviewed before checkout. Failed fetches cost 0 credits.
$ claude mcp add --transport http live-web-data https://fetchmcp.net/mcp \
--header "Authorization: Bearer $LIVE_WEB_DATA_API_KEY"
$ claude mcp list
live-web-data: https://fetchmcp.net/mcp (HTTP) - ✓ Connected// why setups break
Why your MCP fetch setup breaks
Connecting a fetch tool should take two minutes. It often takes an afternoon, and the cause is rarely the server itself.
The snippet is out of date
Many posts still show the deprecated HTTP+SSE transport or a config key your client has since renamed. Nothing fails loudly: the server just never shows up.
Added is not connected
claude mcp add saves the entry whether or not the server answers. Until claude mcp list says Connected, your agent has no fetch tool.
One page fills the context
A docs page fetched whole can run to tens of thousands of tokens of menus and footers. Claude Code warns above 10,000 tokens of MCP output and stops at 25,000 by default.
A refusal looks like content
Some fetch tools hand back a block page or an empty app shell as a normal result, and the agent summarizes it. A good tool flags the failure and says why.
// four steps
How a fetch MCP server fits into your client
Four steps from config to a capped result. The setup guide has the exact file or command for each client.
Step 1: Use Streamable HTTP
Remote servers use Streamable HTTP at a URL; stdio is for servers on your machine. Treat SSE-only snippets as outdated.
Step 2: Add one entry to your client
One command in Claude Code, or one JSON entry in Cursor, VS Code or Claude Desktop. Keep the key in an environment variable.
Step 3: Verify before you fetch
Check the client's server list, then call a cheap tool first. On Live Web Data API's server, get_account_status returns your plan and credits and costs nothing.
Step 4: Cap the result size
Ask for about 8,000 characters (roughly 2,000 tokens) first and raise it only when the answer needs more. Main-content mode drops menus and footers.
// use cases
What developers use an MCP fetch tool for
Each use case links to the guide that covers its setup end to end.
Add a fetch tool to Cursor in one file
One url and one headers entry in mcp.json, with the key read from your environment. The same guide covers Claude Code, VS Code and Claude Desktop.
Claude Desktop through a bridge
Connect a remote Streamable HTTP server to a client that starts servers over stdio, with the mcp-remote bridge.
One team config, no secrets in git
Commit a shared .mcp.json or .vscode/mcp.json that reads the key from each developer's environment.
Long changelogs in Claude Code
Read release notes and long docs pages without hitting the MCP output limit or crowding out your code.
Make sense of a failed fetch
Tell a robots.txt refusal, a 403 from the site, a timeout and a page that needs JavaScript apart, and pick the right next step.
Fix a server that won't connect
Work from the URL to a real tool call with MCP Inspector, client logs and a short runbook your team can keep.
// config
Fetch MCP tool call: config, arguments and result
One remote server from config to result: add it, call the fetch tool with a size cap, and read what comes back.
export LIVE_WEB_DATA_API_KEY=YOUR_KEY
# Claude Code; add --scope user to use it in every project
claude mcp add --transport http live-web-data https://fetchmcp.net/mcp \
--header "Authorization: Bearer $LIVE_WEB_DATA_API_KEY"
claude mcp listThe mcp.json tab is Cursor's format. Every client's exact config is in the setup guide, checked against each client's docs as of the page's updated date.
// trade-offs
MCP server for web fetch vs your client's built-in tool
All three are fair choices. The table compares approaches, not vendors.
| Criterion | Remote fetch server | Local fetch server | Built-in web tool |
|---|---|---|---|
| Install | Nothing: a URL and a key | Python or Node on every machine | Nothing |
| Auth | Bearer key in a header | None; it runs as you | None |
| Output format | Markdown, text or HTML | Markdown, or raw HTML on request | Decided by the client |
| Result size control | max_characters, 500 to 100,000 | max_length plus start_index for paging | Decided by the client |
| Where pages are fetched | By the hosted service, with a country option | On your machine | Depends on the client |
| Pages that need JavaScript | Not rendered; returns CRAWL_NOT_RENDERED | Not rendered | Depends on the client |
| Cost | Credits per successful page; failures free | Free; your own compute | Included with the client |
| Same setup across a team | One URL in a shared config | Each machine installs and updates it | Nothing to share |
FetchMCP is run by Teneo Labs, which makes the remote server in the first column (Live Web Data API). The local column describes the reference mcp-server-fetch. Checked against each project's docs as of this page's updated date.
// guides
Fetch MCP guides, from setup to debugging
Six long-form guides in the order you need them: connect, choose a transport, secure the key, budget tokens, read errors, debug.
Remote MCP server setup: claude mcp add, mcp.json, bridge
The exact command or config file for each client, where the key goes, and the one check that proves the server connected.
MCP stdio vs Streamable HTTP: which one your client needs
What stdio and Streamable HTTP mean for your config, why SSE snippets are outdated, and when the mcp-remote bridge still earns its place.
MCP server authentication: bearer keys, OAuth, safe configs
Bearer headers vs OAuth, how each client reads a key without committing it, and a rotation routine that doesn't break every config.
MCP fetch token budget: client limits and tool size caps
How your client's MCP output limit and the fetch tool's own size cap fit together, and a default budget to start from.
MCP fetch errors: what each failure means and what to do
robots.txt, a 403 at the edge, a timeout, a page that needs JavaScript: what each failure means and the honest next step.
MCP server not connecting? A runbook from URL to tool call
A step-by-step runbook from the URL to a working tool call, with MCP Inspector, client logs and the usual failure in each client.
// faq
Questions about fetch MCP servers
- What is a fetch MCP server?
- An MCP server that exposes a tool for reading a web page. Your client (Claude Code, Cursor, VS Code, Claude Desktop) lists the tool, the model calls it with a URL, and the server returns the page as text the model can read. It does not search the web: you or the model supply the URL.
- What is the difference between a local and a remote MCP server?
- A local server runs on your machine as a subprocess and talks to the client over stdio, so you install Python or Node and every page is fetched from your machine. A remote server runs at a URL and talks over Streamable HTTP, usually with a bearer key or OAuth. There is nothing to install, and one config works for a whole team.
- Does Claude Code already have a web fetch tool?
- Yes. Claude Code ships a built-in web fetch tool, and other clients have similar features. A fetch MCP server is worth adding when you want control the built-in tool does not give you: the output format, a character cap, a country to fetch from, or the same tool in every client you use.
- Where should I put the API key in an MCP config?
- In an environment variable or a prompt, never in a committed file. Claude Code expands ${VAR} in .mcp.json, Cursor reads ${env:VAR} in mcp.json, and VS Code can prompt for the key once with an input of type promptString and password set to true, then store it securely.
- Why does my MCP tool output exceed the maximum allowed tokens?
- The tool returned more than your client accepts. Claude Code warns above 10,000 tokens of MCP output and rejects results above 25,000 tokens by default; MAX_MCP_OUTPUT_TOKENS raises that limit. The better fix is a cap at the tool: English text runs at roughly four characters per token, so 8,000 characters is about 2,000 tokens.
- Why does the fetch tool return a 403?
- A 403 means the site or its edge network refused the request, often because it blocks automated clients. A robots.txt refusal is separate: the tool declines before requesting the page. Respect both and use another source. Live Web Data API's tool reports these as errors with one sentence on what to do next, and failed fetches cost 0 credits.
- Who can get an API key for the Live Web Data API MCP server?
- Sign-up is for businesses only. Only Business, Enterprise and Custom sign-ups are reviewed before checkout, usually within 1 business day. On Lite, Starter and Developer you can check out right after you confirm your email. Once your plan is active, the key works for both the MCP server and the REST API. Plans and credit costs are on the pricing page and are the same on every Teneo Labs site.
// latest
Latest notes on MCP fetch setup
Short posts on one setup question each, with the date the snippet was checked.
· Client setup
Cursor MCP env variables: keep the API key out of mcp.json
Use ${env:NAME} in Cursor's mcp.json to read an MCP server's API key from the environment, and fix the header that arrives as a literal string.
· Client setup
Claude Code MCP scopes: local, project or user for a fetch server
Claude Code stores an MCP server in local, project or user scope. Which one to use for a fetch server, where each is stored, and how to keep the key out of git.
· Debugging
MCP Inspector CLI: list tools and call one from the terminal
Use MCP Inspector's CLI mode to list a server's tools and call one in two commands, for local stdio servers and remote servers with a bearer header.
Connect a fetch tool to your client today
Copy the MCP config for your client from the docs, then get an API key for your business. Only Business, Enterprise and Custom sign-ups are reviewed before checkout; failed fetches cost no credits.