Files
DanieleandClaude Opus 5 ecb6835fa5 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>
2026-08-10 14:14:36 +01:00

73 lines
1.9 KiB
JSON

{
"id": "http-fetch",
"name": "HTTP Fetch",
"type": "mcp_local",
"scope": "global",
"requires": [
"NODE"
],
"setup_instructions": [
"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 — 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": "node",
"args": [
"index.js"
],
"transport": "stdio"
},
"homepage": "https://github.com/zcaceres/fetch-mcp",
"icon_small": "icon_sm.svg",
"icon_large": "icon_lg.svg",
"tags": [
"http",
"fetch",
"mcp",
"local",
"free",
"scraping",
"youtube"
],
"version": 5,
"version_string": "1.1.0",
"version_release_date": "2026-08-10",
"tools": [
{
"name": "fetch_html",
"display_name": "Fetch as HTML"
},
{
"name": "fetch_markdown",
"display_name": "Fetch as Markdown"
},
{
"name": "fetch_txt",
"display_name": "Fetch as Text"
},
{
"name": "fetch_json",
"display_name": "Fetch as JSON"
},
{
"name": "fetch_readable",
"display_name": "Fetch Readable Content"
},
{
"name": "fetch_youtube_transcript",
"display_name": "Get YouTube Transcript"
}
]
}