Two rmcp tests fail on Windows: connection-refused text check and `npm` spawn in test_with_js
Maintainer thường phản hồi trong vòng 2 ngày
@bolinfest đang làm issue này rồi.
Từ ngày 15/10/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
Describe the bug
I ran rmcp's tests on Windows (CI only runs Linux). Two tests fail there. Both problems are in the tests; the SDK code behaves correctly.
-
transport::auth::tests::default_http_client_preserves_connection_failure_cause(lib,--all-features) checks for the English textconnection refused. Windows describes a refused connection differently, so the assertion fails although the error chain is correct:unexpected discovery error: Metadata error: OAuth metadata discovery failed for http://127.0.0.1:34350/mcp Caused by: error sending request for url (http://127.0.0.1:34350/mcp) Caused by: client error (Connect) Caused by: tcp connect error Caused by: No connection could be made because the target machine actively refused it. (os error 10061) -
All three
test_with_jstests (no-localfeature set) fail withError: program not found.install_js_dependenciesrunsCommand::new("npm"), but on Windows npm is the shimnpm.cmd, andCommanddoesn't resolve a bare name to a.cmdfile. (nodeisnode.exe, so the other spawns work.)
To Reproduce
On Windows 11 with rustc 1.96 (the version rust-toolchain.toml pins), Node 24 and uv:
cargo test -p rmcp --all-features --lib default_http_client_preserves_connection_failure_causecargo test -p rmcp --features "<all rmcp features except local, as in CI>" --test test_with_js
Expected behavior
Both pass, as they do on Linux.
Proposed fix (test-only, 8 lines added, 3 removed)
- auth test: before the request, connect to the same dropped address with
std::net::TcpStream::connect(addr), and assert that the reason contains that error'sto_string(). That way the test expects whatever text the OS uses, instead of a hard-coded English phrase. test_with_js:let npm = if cfg!(windows) { "npm.cmd" } else { "npm" };. Another option is to dogfoodrmcp::transport::which_command("npm"), but thenwhich-commandhas to be added to the test'srequired-features.
Patch: https://github.com/modelcontextprotocol/rust-sdk/compare/main...RafalOfficial:rust-sdk:fix/windows-test-portability. With it, both tests pass on Windows. These all pass unchanged on Windows: the other 606 lib tests, test_with_python, test_stdio_response_concurrency, test_close_connection and test_async_rw_max_line_length. The patch is formatted with cargo +nightly fmt. If you're happy with this, I can open the PR. If you don't want Windows-only test fixes while CI is Linux-only, just close this.
Additional context
Main at 8d226f4. This report and the proposed patch were written with Claude Code (AI-assisted). I ran the commands above on a real Windows machine.
- Ngôn ngữ chính
- Rust
- Star
- 4k
- Fork
- 662
- Merge trung bình
- 3 ngày 20 giờ
- Pull request đã merge (30 ngày)
- 30
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của modelcontextprotocol/rust-sdk
-
Streamable HTTP client: a 401 or 403 with a JSON-RPC error body and no WWW-Authenticate loses its HTTP statusCó thể đã có người làm @aton-of-data đã nhận 5 ngày trước. Đang mởbug P2 ready for work T-security T-transport
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
modelcontextprotocol/rust-sdk#1339 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
auth: refresh_token() requests offline_access that was never granted, so refreshes fail with invalid_scopeCó thể đã có người làm @jstar0 đã nhận 7 ngày trước. Đang mởbug P1 ready for work T-security T-transport
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
modelcontextprotocol/rust-sdk#1330 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
P3 question Stale T-documentation T-enhancement
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 86/100
modelcontextprotocol/rust-sdk#1155 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Expose OAuth discovery and registration results for application-owned flowsCó thể đã có người làm @connor4312 đã nhận hôm nay. Đang mởenhancement P2 ready for work T-security
modelcontextprotocol/rust-sdk#1371 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Client never answers a server `ping` sent during the `initialize` handshakeCó thể đã có người làm @bolinfest đã nhận 1 ngày trước. Đang mởbug P1 ready for work T-service
modelcontextprotocol/rust-sdk#1362 · 3 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 2 ngày
Tất cả issue của modelcontextprotocol/rust-sdk
Issue tương tự
-
area: compat area: parsing bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
reubeno/brush#1526 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
OFN writer emits `DocIRI` as a bare IRI, which becomes a version IRI or a parse error on re-readĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
phillord/horned-owl#338 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
type/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
stackabletech/operator-rs#1301 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
jmcnamara/rust_xlsxwriter#205 · 4 bình luận ·