Skip to content

mcp-server-fetch: on Windows, readabilipy 0.3.0 cannot find npm, so Readability.js is never used #5313

Closed

Description

@cliffhall

Problem

With readabilipy 0.3.0 (what an unpinned install of mcp-server-fetch resolves, and what the lock moves to in #5311), mcp-server-fetch on Windows never uses Readability.js by default, even with Node.js and npm on PATH. It silently falls back to readabilipy's pure-Python extractor, which produces different Markdown (it drops link targets, among other things).

readabilipy 0.3.0's wheel no longer ships node_modules. have_node() installs them on first use through run_npm_install(), which calls subprocess.run(["npm", "version"]) and subprocess.run(["npm", "install"]) without a shell. On Windows npm is npm.cmd, which CreateProcess does not resolve from a bare npm, so the call raises FileNotFoundError, readabilipy prints Warning: A working NPM installation was not found. The package will use Python-based article extraction. to stderr, and have_node() returns False on every call.

Reproduction

Seen in CI on #5311 ("Test fetch (Windows)", windows-latest with Node.js 24 and npm installed): every test using the node_readability fixture failed at setup with the warning above. https://github.com/modelcontextprotocol/servers/actions/runs/40453521691/job/122021493053

#5311 works around it in CI only, by running npm install in readabilipy's javascript directory before pytest.

Expected

Either Windows gets the same extractor as Linux and macOS when Node.js is installed, or the README says plainly that on Windows Readability.js needs readabilipy's JavaScript dependencies installed by hand (and how), and that otherwise the pure-Python extractor is used.

Related: #4830 (npm install during a tool call), #5310 (npm output on stdout), #4199 (--no-readability-js).

Activity

  1. added this to the v2.3.0 milestone on Oct 27, 2026
  2. added
    bugSomething isn't working
    server-fetchReference implementation for the Fetch MCP server - src/fetch
    on Oct 27, 2026
  3. self-assigned this
    on Oct 28, 2026
  4. cliffhall commented on Oct 29, 2026

    @cliffhall
    MemberAuthor

    Shipped in #5391 (merged into v2/main), after the #5271 rollup proved the six fetch v2.3.0 PRs combine with no conflicts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingserver-fetchReference implementation for the Fetch MCP server - src/fetchv2

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions