http-fetch/firecrawl: replace npx launch with a shipped wrapper (v5 / 1.1.0)

Both connectors declared `mcp_config: {command: "npx", args: ["-y", "<pkg>"]}`
and shipped no code at all. Skald treats a mcp_local `args[0]` as the *name of
the file to run*, not as an argument: install stores `script_path = "<id>/-y"`
and global_enable launches `npx /…/connectors/<id>/-y`, a path that does not
exist. The server never answered `initialize`, so start_server failed — and
since global_enable still returns 200 with an `error` in the body, the UI showed
the connector as enabled while `render_mcp_list` (built from the live runtime)
left it out of the agent's system context entirely.

Ship a two-file wrapper instead: a package.json pinning the upstream package
(mcp-fetch-server@1.1.2, firecrawl-mcp@3.23.7) and an index.js importing it for
its side effect, so `node index.js` is a real local_script and
ensure_installed_host installs the deps beside it. No node_modules, no lockfile.

Also: drop the legacy `launch_command` / top-level `transport` / `dependencies`
fields; drop firecrawl's inert `mcp_config.env` placeholder (same case as gmaps
— tokens are only substituted in the URL); add firecrawl_developer_search to
firecrawl's tools[] and API_KEY to its requires; realign manifest and fragment
versions to 5 / 1.1.0 (they were 2 vs 4, so no Update badge could ever appear).

Verified end-to-end against the shipped files by reproducing Skald's own path:
`npm ci || npm install --omit=dev` then `node <abs>/index.js` — initialize,
tools/list and a real tools/call, JSON-RPC only on stdout.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Daniele
2026-08-10 14:14:36 +01:00
co-authored by Claude Opus 5
parent 73d1a51b1f
commit ecb6835fa5
10 changed files with 147 additions and 50 deletions
+15 -17
View File
@@ -2,37 +2,35 @@
"id": "http-fetch",
"name": "HTTP Fetch",
"type": "mcp_local",
"launch_command": "npx -y mcp-fetch-server",
"transport": "stdio",
"scope": "global",
"requires": [
"NODE"
],
"dependencies": [],
"setup_instructions": [
"Ensure Node.js is installed.",
"No configuration needed \u2014 HTTP Fetch is a free tool with no API key."
"Requires Node.js 18+ on the host that runs the connector.",
"No configuration needed HTTP Fetch is free and needs no API key.",
"Dependencies are installed automatically by Skald from package.json."
],
"docs": [
{
"lang": "en",
"description": "Fetch any URL and convert it to HTML, Markdown, plain text, JSON, or YouTube transcripts \u2014 free, no API key required, no rate limits, no cost. Prefer this over Exa or Firecrawl for simple URL fetching. Supports YouTube video transcripts via fetch_youtube_transcript.",
"llm_short_description": "HTTP Fetch \u2014 fetch any URL and convert to HTML, Markdown, plain text, JSON, or readable article format (strips ads). Also extracts YouTube transcripts. Free, no API key."
"description": "Fetch any URL and convert it to HTML, Markdown, plain text, JSON, or YouTube transcripts free, no API key required, no rate limits, no cost. Prefer this over Exa or Firecrawl for simple URL fetching. Supports YouTube video transcripts via fetch_youtube_transcript.",
"llm_short_description": "HTTP Fetch fetch any URL and convert to HTML, Markdown, plain text, JSON, or readable article format (strips ads). Also extracts YouTube transcripts. Free, no API key."
}
],
"auth": {
"type": "none"
},
"mcp_config": {
"command": "npx",
"command": "node",
"args": [
"-y",
"mcp-fetch-server"
]
"index.js"
],
"transport": "stdio"
},
"homepage": "",
"homepage": "https://github.com/zcaceres/fetch-mcp",
"icon_small": "icon_sm.svg",
"icon_large": "icon_lg.svg",
"scope": "global",
"tags": [
"http",
"fetch",
@@ -42,9 +40,9 @@
"scraping",
"youtube"
],
"version": 2,
"version_string": "1.0.1",
"version_release_date": "2026-07-21",
"version": 5,
"version_string": "1.1.0",
"version_release_date": "2026-08-10",
"tools": [
{
"name": "fetch_html",
@@ -71,4 +69,4 @@
"display_name": "Get YouTube Transcript"
}
]
}
}