Bound pre-lifecycle bootstrap attempts in server initialization
Maintainers usually reply within 3 days
@DaleSeo is already working on this.
Since Oct 2, 2026.
Assessment
This issue has not been assessed yet.
Description
Follow-up from #1248.
After #1248, serve_server stays in its bootstrap loop until a request selects a lifecycle. Malformed or unsupported requests get an error response and the loop continues. Discover probes also keep the loop open. This lets clients recover, for example after a bare tools/list without _meta. But a client can also keep the connection in the pre-lifecycle state forever by sending requests that never select a lifecycle.
Open question: should rmcp cap the number of pre-lifecycle attempts (or apply a timeout)? Or should the transport that owns the connection handle this?
Options:
- Count rejected/bootstrap-neutral requests and return
ServerInitializeErrorafter N attempts. - Add a configurable bootstrap timeout.
- Leave this to transports and document that expectation.
- Dominant language
- Rust
- Stars
- 4k
- Forks
- 654
- Avg merge
- 3d 10h
- Merged PRs (30d)
- 33
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from modelcontextprotocol/rust-sdk
-
P3 question T-documentation T-enhancement
Difficulty 1/5 Under an hour Newbie friendliness 86/100
modelcontextprotocol/rust-sdk#1155 ·
Maintainers usually reply within 3 days
-
The rmcp lib test target does not build without the macros featurePossibly taken @DaleSeo claimed this 1 day ago. Openbug P2 ready for work T-model T-test
modelcontextprotocol/rust-sdk#1317 · 1 reaction · 1 assignee ·
Maintainers usually reply within 3 days
-
ProgressDispatcher: a slow progress subscriber blocks subscribe() and delivery for other tokensOpenbug P1 ready for work T-handler
Difficulty 4/5 3-5 days Newbie friendliness 25/100
modelcontextprotocol/rust-sdk#1312 ·
Maintainers usually reply within 3 days
-
transport::stdio() runs every read and write on tokio's blocking pool, which caps stdio throughputPossibly taken A pull request linked to this issue is open or already merged. Openenhancement P2 T-transport
Difficulty 4/5 3-5 days Newbie friendliness 58/100
modelcontextprotocol/rust-sdk#1301 · 1 comment ·
Maintainers usually reply within 3 days
-
OAuth discovery rejects cross-origin resource_metadata from WWW-Authenticate, breaking centralized PRM (SEP-985) deploymentsPossibly taken A pull request linked to this issue is open or already merged. Openbug P1 ready for work T-security T-transport
Difficulty 3/5 1-2 days Newbie friendliness 74/100
modelcontextprotocol/rust-sdk#1298 · 1 comment · 1 reaction ·
Maintainers usually reply within 3 days
All issues in modelcontextprotocol/rust-sdk
Similar issues
-
security-scan
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
content good first issue
Difficulty 2/5 Under an hour Newbie friendliness 68/100
StudentSuite/awesome-skills-plugins-for-students#293 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
gfx-rs/wgpu-native#636 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day