Skip to content

fix: make UrlElicitationRequiredError pickle-safe#2439

Open
Christian-Sidak wants to merge 1 commit intomodelcontextprotocol:mainfrom
Christian-Sidak:fix/pickle-safe-exceptions
Open

fix: make UrlElicitationRequiredError pickle-safe#2439
Christian-Sidak wants to merge 1 commit intomodelcontextprotocol:mainfrom
Christian-Sidak:fix/pickle-safe-exceptions

Conversation

@Christian-Sidak
Copy link
Copy Markdown

Summary

  • UrlElicitationRequiredError fails to unpickle because MCPError stores (code, message, data) in Exception.args but UrlElicitationRequiredError.__init__ expects (elicitations, message=None), causing a TypeError on unpickle
  • Adds a __reduce__ method to UrlElicitationRequiredError so pickle reconstructs with the correct (elicitations, message) arguments
  • Adds pickle round-trip tests for both MCPError and UrlElicitationRequiredError

Closes #2431

Test plan

  • Pickle round-trip test for MCPError
  • Pickle round-trip test for UrlElicitationRequiredError (single elicitation, custom message)
  • Pickle round-trip test for UrlElicitationRequiredError (multiple elicitations, default message)
  • Verify with multiprocessing use case from issue

Add __reduce__ method so pickle reconstructs with the correct
(elicitations, message) arguments instead of the (code, message, data)
tuple stored in Exception.args.

Closes modelcontextprotocol#2431

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

McpError is not pickle-safe and fails to unpickle

1 participant