Skip to content

Response parsing errors after OAuth flow #1173

@clareliguori

Description

@clareliguori

Initial Checks

Description

The changes in #1061 overwrite the incoming request object to async_auth_flow with the request returned by self._create_oauth_metadata_request(url).

                    discovery_urls = self._get_discovery_urls()
                    for url in discovery_urls:
                        request = self._create_oauth_metadata_request(url)
                        response = yield request

After the auth flow occurs and the (overwritten) request is made, the client tries to parse the result. But the result is OAuth metadata, not a JSONRPC response as expected.

Example errors:

2025-07-18 15:56:35,124 - ERROR - Error parsing JSON response
Traceback (most recent call last):
  File "/src/python/.venv/lib/python3.11/site-packages/mcp/client/streamable_http.py", line 302, in _handle_json_response
    message = JSONRPCMessage.model_validate_json(content)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/src/python/.venv/lib/python3.11/site-packages/pydantic/main.py", line 746, in model_validate_json
    return cls.__pydantic_validator__.validate_json(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pydantic_core._pydantic_core.ValidationError: 11 validation errors for JSONRPCMessage
JSONRPCRequest.method
  Field required [type=missing, input_value={'authorization_endpoint'...code', 'refresh_token']}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.11/v/missing

Example Code

Python & MCP Python SDK

MCP 1.12.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions