fix: make MCPError subclasses pickle-safe - #3407
Conversation
UrlElicitationRequiredError and NoBackChannelError inherited MCPError's (code, message, data) Exception.args, but their __init__ signatures do not match that shape. This caused TypeError during unpickling and lost subclass-specific state. Add __reduce__ to each subclass so pickle reconstructs them correctly: - UrlElicitationRequiredError uses the existing from_error classmethod. - NoBackChannelError uses its (method) constructor. Add pickle round-trip tests for MCPError, UrlElicitationRequiredError, and NoBackChannelError. Fixes modelcontextprotocol#2431
|
This PR has been closed automatically. 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 #2431. If a maintainer assigns you to #2431, 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:
Maintainers: reopen, remove |
Summary
UrlElicitationRequiredErrorandNoBackChannelErrorfailed to unpicklebecause their inherited
Exception.argsfromMCPErrorare(code, message, data), which does not match their own__init__signatures. This caused
TypeErroron restore and lost subclass-specificstate.
The fix adds
__reduce__to each subclass:UrlElicitationRequiredErrorreconstructs via the existingfrom_errorclassmethod.
NoBackChannelErrorreconstructs via its(method)constructor.Pickle round-trip tests are added for
MCPError,UrlElicitationRequiredError, andNoBackChannelError.Fixes #2431
This PR was prepared with the assistance of AI coding tools. The analysis,
patch, and tests were reviewed by a human contributor before submission.
Happy to iterate on feedback.