Skip to content

docs: clarify when Client(raise_exceptions=True) actually raises - #3289

Closed
HaoChiBao wants to merge 2 commits into
modelcontextprotocol:mainfrom
HaoChiBao:docs/3287-raise-exceptions-semantics
Closed

docs: clarify when Client(raise_exceptions=True) actually raises#3289
HaoChiBao wants to merge 2 commits into
modelcontextprotocol:mainfrom
HaoChiBao:docs/3287-raise-exceptions-semantics

Conversation

@HaoChiBao

@HaoChiBao HaoChiBao commented Aug 11, 2026

Copy link
Copy Markdown

Summary

  • Document the real semantics of Client(raise_exceptions=True): in-memory only; still raises MCPError on unexpected handler crashes, but unsanitises the message and chains __cause__; does not turn tool is_error=True into an exception; ignored for URL/transport clients; drop on mode="legacy".
  • Expand Testing, with cross-links from Clients, Troubleshooting, and the low-level server page; replace the Client.raise_exceptions TODO with a docstring that matches that behaviour.
  • Add docs_src/testing/tutorial002.py plus docs_src tests covering the True/False contrast.

Fixes #3287.

AI disclosure

This contribution was prepared with AI assistance (Cursor). A human reviewed the traced behaviour and the docs/tests before opening the PR.

Test plan

  • uv run --frozen ruff format / ruff check on touched Python files
  • Relevant docs_src and client raise_exceptions tests (7 passed)
  • Confirm docs render for Testing / Troubleshooting / Clients "In tests"
  • No runtime behaviour change intended

Document that the flag only unsanitises unexpected in-memory handler
crashes (still MCPError, with message/__cause__), leaves tool is_error
results alone, and is ignored for URL/transport clients. Fixes modelcontextprotocol#3287.
@HaoChiBao HaoChiBao changed the title test docs: clarify when Client(raise_exceptions=True) actually raises Aug 11, 2026
@HaoChiBao HaoChiBao closed this Aug 11, 2026
@HaoChiBao HaoChiBao reopened this Aug 11, 2026
Keep the full semantics on the Testing page and the low-level-server
cross-link; the troubleshooting tip restated the same material.
@github-actions github-actions Bot added the missing-issue-link Auto-closed: PR needs a linked issue assigned to its author (see CONTRIBUTING.md) label Aug 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

This PR has been closed automatically. It's still a draft, but we close those early so you don't put in more time only to have it closed the moment you mark it ready.

This repo only keeps pull requests open when they come from a maintainer, or from a contributor a maintainer has assigned to the linked issue, and you aren't currently assigned to #3287.

If a maintainer assigns you to #3287, this PR reopens on its own and there's nothing more you need to do here. Assignment is a maintainer call based on capacity; comments that only ask to be assigned don't factor in. What does help is engaging on the issue itself by confirming the repro, explaining why it matters for your use case, or describing the approach you'd take.

You're welcome to keep pushing commits here (just avoid force-pushing, since GitHub can't reopen a rewritten branch), but that on its own won't get the PR reviewed or the issue assigned, and realistically most auto-closed PRs stay closed. There's no need to open a new PR either way.

CONTRIBUTING.md has the full reasoning, but in short:

  • We're a small team with very little capacity to review community PRs right now.
  • Many recent PRs are AI-generated with little human review, and reviewing one carefully still costs a maintainer as much time as it ever did. A well-described issue is usually more useful to us than the code.

Maintainers: reopen, remove missing-issue-link, or add bypass-issue-check to override.

@github-actions github-actions Bot closed this Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

missing-issue-link Auto-closed: PR needs a linked issue assigned to its author (see CONTRIBUTING.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs: clarify when Client(raise_exceptions=True) actually raises

1 participant