io.github.YawLabs/fetch-mcp
NPM · @YAWLABS/FETCH-MCP · SCANNED AUG 7
HTTP fetch MCP server: SSRF protection, HTML-to-markdown, reader mode, metadata extraction
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 106 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency19
- Repository check failed: no source repository is declared. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 16 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability61
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3703 tokens (~246/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management40
- Stability observed for 12 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage93
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 80% of tool parameters carry a description.Partial
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · @yawlabs/fetch-mcp
claude mcp add yawlabs-fetch-mcp -- npx -y @yawlabs/fetch-mcp
codex mcp add yawlabs-fetch-mcp -- npx -y @yawlabs/fetch-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"yawlabs-fetch-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@yawlabs/fetch-mcp"
],
"enabled": true
}
}
} openclaw mcp add yawlabs-fetch-mcp --command npx --arg -y --arg @yawlabs/fetch-mcp
mcp_servers:
yawlabs-fetch-mcp:
command: "npx"
args: ["-y", "@yawlabs/fetch-mcp"] {
"mcpServers": {
"yawlabs-fetch-mcp": {
"command": "npx",
"args": [
"-y",
"@yawlabs/fetch-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 7 Aug 26 +4
- Known CVEs: partial → pass ▲ security
- Security disclosure: fail → unverified ▼ functional
- Dependency health: partial → 0.87 functional
- 6 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
- 5 Aug 26 +1
- CVE-2026-69207 no longer affects this package ▲ security
- Known CVEs: fail → partial ▲ security
- 4 Aug 26 0
- CVE-2026-69207 affects this package: medium ▼ security
- Known CVEs: partial → fail ▼ security
- 2 Aug 26 +48
- Provenance: unverified → fail ▼ security
- Install scripts: unverified → pass ▲ security
- Known CVEs: unverified → partial ▲ security
- Malware scan: unverified → pass ▲ security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Security disclosure: unverified → fail ▼ functional
- Maintenance: unverified → pass ▲ functional
- Schema quality: unverified → excellent ▲ functional
- License: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- Stability: unverified → 0.23 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Licence: MIT functional
- 31 Jul 26 −23
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Jul 26 35
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 7 Aug 2026 · Analysed npm/@yawlabs/[email protected]
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Dependencies 106 packages
| Packages resolved | 106 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
fetch_feed ~147
Fetch and parse an RSS 2.0 or Atom 1.0 feed. Returns feed-level metadata (title, description, link, updated) plus a list of entries (title, link, id, published, updated, author, summary, content, contentType, categories). Auto-detects RSS vs Atom.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | – |
| limit | integer | – | Max entries to return (default 50) |
| max_bytes | integer | – | Max bytes to read (default 10MiB) |
| max_redirects | integer | – | – |
| timeout_ms | integer | – | – |
| url | string | yes | – |
| user_agent | string | – | – |
No output schema declared.
No examples provided.
fetch_html_to_markdown ~189
GET a URL, decode the HTML, and convert to clean markdown (headings, lists, links, code fences). Scripts, styles, iframes, nav, footer, and aside elements are stripped. Intended for feeding web pages into an LLM cheaply -- markdown is usually 3-8x smaller than raw HTML. Follows redirects, respects size/timeout limits, and blocks private-host requests by default.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | Allow loopback / private / link-local addresses (default false) |
| max_bytes | integer | – | Max response size in bytes (default 5MiB) |
| max_redirects | integer | – | Max redirect hops (default 5) |
| timeout_ms | integer | – | Request timeout in ms (default 10000) |
| url | string | yes | URL to fetch |
| user_agent | string | – | User-Agent override |
No output schema declared.
No examples provided.
fetch_html_to_text ~149
GET a URL, decode the HTML, and return plain text with block-level structure preserved as newlines. Scripts, styles, and comments stripped; HTML entities decoded. Lighter than markdown when you only need the reading content.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | Allow loopback / private / link-local addresses (default false) |
| max_bytes | integer | – | Max response size in bytes (default 5MiB) |
| max_redirects | integer | – | Max redirect hops (default 5) |
| timeout_ms | integer | – | Request timeout in ms (default 10000) |
| url | string | yes | URL to fetch |
| user_agent | string | – | User-Agent override |
No output schema declared.
No examples provided.
fetch_links ~173
Extract every outbound link from an HTML page, resolved to absolute URLs. Each entry includes href, anchor text, optional rel/title, and an internal/external classification (bare-domain and www. treated as the same host). Anchors (#), javascript:, mailto:, tel:, data:, and file: URIs are skipped. Respects <base href>.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | – |
| dedupe | boolean | – | Drop duplicate hrefs (default true) |
| filter | string | – | Filter by type (default 'all') |
| limit | integer | – | Cap on returned links (default 1000) |
| max_bytes | integer | – | – |
| max_redirects | integer | – | – |
| timeout_ms | integer | – | – |
| url | string | yes | – |
| user_agent | string | – | – |
No output schema declared.
No examples provided.
fetch_meta ~161
GET a URL and extract its head metadata: title, description, canonical, language, robots directive, Open Graph / Twitter Card / article: properties, icon links, RSS/Atom feed links, and any JSON-LD (schema.org) blocks. Keys that appear more than once (e.g. multiple og:image tags) are additionally returned via ogAll/twitterAll/articleAll arrays. Ideal for previewing a page before fully reading it.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | – |
| max_bytes | integer | – | Default 2MiB — metadata lives in <head> |
| max_redirects | integer | – | – |
| timeout_ms | integer | – | – |
| url | string | yes | URL to extract metadata from |
| user_agent | string | – | – |
No output schema declared.
No examples provided.
fetch_reader ~136
GET a URL, locate the main article body (prefers <article>, <main>, itemprop=articleBody, or known CMS class names; falls back to <body>), strip navigation/footer/aside chrome, and convert to clean markdown. Returns { title, byline, markdown, wordCount }. Optimized for feeding long-form articles into an LLM without header/footer/sidebar noise.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | – |
| max_bytes | integer | – | – |
| max_redirects | integer | – | – |
| timeout_ms | integer | – | – |
| url | string | yes | – |
| user_agent | string | – | – |
No output schema declared.
No examples provided.
fetch_robots ~138
Fetch and parse the robots.txt for a given origin, then tell the caller whether a target URL is crawlable by a given user-agent. Follows the Google-style longest-match rule with Allow-wins-on-tie. Returns the raw robots.txt, parsed groups, sitemap references, and the allow/deny verdict with the matching rule.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | – |
| max_redirects | integer | – | – |
| timeout_ms | integer | – | – |
| url | string | yes | Target URL to check. We derive origin + path automatically. |
| user_agent | string | – | User-agent string to match against groups (default '*') |
No output schema declared.
No examples provided.
fetch_sitemap ~222
Fetch a sitemap.xml (or sitemap-index) and return the contained URLs with their lastmod / changefreq / priority. Follows sitemap-index chaining up to max_depth levels. Gzipped .xml.gz payloads are auto-decompressed. Partial failures (one child sitemap 500s while others work) are returned under 'warnings' without aborting the whole request. SSRF-protected by default.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | – |
| max_bytes | integer | – | Max bytes to read per sitemap response (default 20MiB) |
| max_depth | integer | – | How many sitemap-index levels to follow (default 1). 0 keeps the top-level index flat and only returns its childSitemaps list. |
| max_redirects | integer | – | – |
| max_urls | integer | – | Cap on total URLs returned (default 5000) |
| timeout_ms | integer | – | – |
| url | string | yes | Sitemap URL (sitemap.xml, sitemap.xml.gz, or a sitemap index) |
| user_agent | string | – | – |
No output schema declared.
No examples provided.
http_delete ~363
Perform an HTTP DELETE. Idempotent (per spec): a repeated DELETE on an already-deleted resource typically returns 404/410.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | Allow requests to loopback / private / link-local addresses. SSRF protection is on by default — only flip this when intentionally talking to localhost. |
| basic_auth | object | – | HTTP Basic auth credentials |
| bearer_token | string | – | Bearer token sent as Authorization: Bearer <token> |
| body | string | – | Raw request body as a string |
| body_json | – | – | Request body as a JSON value — sets content-type to application/json if none given |
| content_type | string | – | Content-Type header to send with the body (e.g. application/json, text/plain, application/x-www-form-urlencoded) |
| decode_text | boolean | – | Force text decoding (true) or binary base64 (false). Defaults to auto — text for text/*, json, xml, etc; binary otherwise. |
| headers | object | – | Extra request headers as a key/value object |
| max_bytes | integer | – | Max response body size in bytes before the body is truncated (default 5MiB, ceiling 100MiB) |
| max_redirects | integer | – | Max redirect hops to follow (default 5) |
| retries | integer | – | Retries on 408/425/429/500/502/503/504 with exponential backoff (default 0) |
| timeout_ms | integer | – | Request timeout in ms (default 10000, max 120000) |
| url | string | yes | Target URL (http:// or https://) |
| user_agent | string | – | User-Agent override (default identifies as @yawlabs/fetch-mcp) |
No output schema declared.
No examples provided.
http_get ~327
Perform an HTTP GET. Returns status, headers, and body. Automatically parses JSON when the server responds with application/json. Follows redirects (each hop re-validated against SSRF rules). Refuses URLs that resolve to private/loopback/link-local addresses unless allow_private_hosts is set.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | Allow requests to loopback / private / link-local addresses. SSRF protection is on by default — only flip this when intentionally talking to localhost. |
| basic_auth | object | – | HTTP Basic auth credentials |
| bearer_token | string | – | Bearer token sent as Authorization: Bearer <token> |
| decode_text | boolean | – | Force text decoding (true) or binary base64 (false). Defaults to auto — text for text/*, json, xml, etc; binary otherwise. |
| headers | object | – | Extra request headers as a key/value object |
| max_bytes | integer | – | Max response body size in bytes before the body is truncated (default 5MiB, ceiling 100MiB) |
| max_redirects | integer | – | Max redirect hops to follow (default 5) |
| retries | integer | – | Retries on 408/425/429/500/502/503/504 with exponential backoff (default 0) |
| timeout_ms | integer | – | Request timeout in ms (default 10000, max 120000) |
| url | string | yes | Target URL (http:// or https://) |
| user_agent | string | – | User-Agent override (default identifies as @yawlabs/fetch-mcp) |
No output schema declared.
No examples provided.
http_head ~302
Perform an HTTP HEAD. Returns status + headers with no body. Useful for checking a resource exists, getting its size (Content-Length), or polling for changes cheaply.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | Allow requests to loopback / private / link-local addresses. SSRF protection is on by default — only flip this when intentionally talking to localhost. |
| basic_auth | object | – | HTTP Basic auth credentials |
| bearer_token | string | – | Bearer token sent as Authorization: Bearer <token> |
| decode_text | boolean | – | Force text decoding (true) or binary base64 (false). Defaults to auto — text for text/*, json, xml, etc; binary otherwise. |
| headers | object | – | Extra request headers as a key/value object |
| max_bytes | integer | – | Max response body size in bytes before the body is truncated (default 5MiB, ceiling 100MiB) |
| max_redirects | integer | – | Max redirect hops to follow (default 5) |
| retries | integer | – | Retries on 408/425/429/500/502/503/504 with exponential backoff (default 0) |
| timeout_ms | integer | – | Request timeout in ms (default 10000, max 120000) |
| url | string | yes | Target URL (http:// or https://) |
| user_agent | string | – | User-Agent override (default identifies as @yawlabs/fetch-mcp) |
No output schema declared.
No examples provided.
http_options ~293
Perform an HTTP OPTIONS. Returns the server's supported methods and CORS policy for a resource. Helpful for API discovery.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | Allow requests to loopback / private / link-local addresses. SSRF protection is on by default — only flip this when intentionally talking to localhost. |
| basic_auth | object | – | HTTP Basic auth credentials |
| bearer_token | string | – | Bearer token sent as Authorization: Bearer <token> |
| decode_text | boolean | – | Force text decoding (true) or binary base64 (false). Defaults to auto — text for text/*, json, xml, etc; binary otherwise. |
| headers | object | – | Extra request headers as a key/value object |
| max_bytes | integer | – | Max response body size in bytes before the body is truncated (default 5MiB, ceiling 100MiB) |
| max_redirects | integer | – | Max redirect hops to follow (default 5) |
| retries | integer | – | Retries on 408/425/429/500/502/503/504 with exponential backoff (default 0) |
| timeout_ms | integer | – | Request timeout in ms (default 10000, max 120000) |
| url | string | yes | Target URL (http:// or https://) |
| user_agent | string | – | User-Agent override (default identifies as @yawlabs/fetch-mcp) |
No output schema declared.
No examples provided.
http_patch ~361
Perform an HTTP PATCH. Use for partial updates. Spec-wise NOT guaranteed idempotent — depends on the server's patch semantics.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | Allow requests to loopback / private / link-local addresses. SSRF protection is on by default — only flip this when intentionally talking to localhost. |
| basic_auth | object | – | HTTP Basic auth credentials |
| bearer_token | string | – | Bearer token sent as Authorization: Bearer <token> |
| body | string | – | Raw request body as a string |
| body_json | – | – | Request body as a JSON value — sets content-type to application/json if none given |
| content_type | string | – | Content-Type header to send with the body (e.g. application/json, text/plain, application/x-www-form-urlencoded) |
| decode_text | boolean | – | Force text decoding (true) or binary base64 (false). Defaults to auto — text for text/*, json, xml, etc; binary otherwise. |
| headers | object | – | Extra request headers as a key/value object |
| max_bytes | integer | – | Max response body size in bytes before the body is truncated (default 5MiB, ceiling 100MiB) |
| max_redirects | integer | – | Max redirect hops to follow (default 5) |
| retries | integer | – | Retries on 408/425/429/500/502/503/504 with exponential backoff (default 0) |
| timeout_ms | integer | – | Request timeout in ms (default 10000, max 120000) |
| url | string | yes | Target URL (http:// or https://) |
| user_agent | string | – | User-Agent override (default identifies as @yawlabs/fetch-mcp) |
No output schema declared.
No examples provided.
http_post ~379
Perform an HTTP POST. Body can be given as a raw string (body) or as a JSON value (body_json — auto-sets content-type to application/json). NOT idempotent: calling twice submits twice.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | Allow requests to loopback / private / link-local addresses. SSRF protection is on by default — only flip this when intentionally talking to localhost. |
| basic_auth | object | – | HTTP Basic auth credentials |
| bearer_token | string | – | Bearer token sent as Authorization: Bearer <token> |
| body | string | – | Raw request body as a string |
| body_json | – | – | Request body as a JSON value — sets content-type to application/json if none given |
| content_type | string | – | Content-Type header to send with the body (e.g. application/json, text/plain, application/x-www-form-urlencoded) |
| decode_text | boolean | – | Force text decoding (true) or binary base64 (false). Defaults to auto — text for text/*, json, xml, etc; binary otherwise. |
| headers | object | – | Extra request headers as a key/value object |
| max_bytes | integer | – | Max response body size in bytes before the body is truncated (default 5MiB, ceiling 100MiB) |
| max_redirects | integer | – | Max redirect hops to follow (default 5) |
| retries | integer | – | Retries on 408/425/429/500/502/503/504 with exponential backoff (default 0) |
| timeout_ms | integer | – | Request timeout in ms (default 10000, max 120000) |
| url | string | yes | Target URL (http:// or https://) |
| user_agent | string | – | User-Agent override (default identifies as @yawlabs/fetch-mcp) |
No output schema declared.
No examples provided.
http_put ~363
Perform an HTTP PUT. Use for full-resource replacement. Idempotent: the same PUT applied twice leaves the resource in the same state.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_private_hosts | boolean | – | Allow requests to loopback / private / link-local addresses. SSRF protection is on by default — only flip this when intentionally talking to localhost. |
| basic_auth | object | – | HTTP Basic auth credentials |
| bearer_token | string | – | Bearer token sent as Authorization: Bearer <token> |
| body | string | – | Raw request body as a string |
| body_json | – | – | Request body as a JSON value — sets content-type to application/json if none given |
| content_type | string | – | Content-Type header to send with the body (e.g. application/json, text/plain, application/x-www-form-urlencoded) |
| decode_text | boolean | – | Force text decoding (true) or binary base64 (false). Defaults to auto — text for text/*, json, xml, etc; binary otherwise. |
| headers | object | – | Extra request headers as a key/value object |
| max_bytes | integer | – | Max response body size in bytes before the body is truncated (default 5MiB, ceiling 100MiB) |
| max_redirects | integer | – | Max redirect hops to follow (default 5) |
| retries | integer | – | Retries on 408/425/429/500/502/503/504 with exponential backoff (default 0) |
| timeout_ms | integer | – | Request timeout in ms (default 10000, max 120000) |
| url | string | yes | Target URL (http:// or https://) |
| user_agent | string | – | User-Agent override (default identifies as @yawlabs/fetch-mcp) |
No output schema declared.
No examples provided.