Skip to content

fix(pypi): update dependency mcp to v2.3.0 - #465

Merged
renovate[bot] merged 1 commit into
mainfrom
renovate/mcp-2.x
Oct 5, 2026
Merged

renovate[bot] merged 1 commit into
mainfrom
renovate/mcp-2.x

Conversation

@renovate

@renovate renovate Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
mcp ==2.2.0 → ==2.3.0 age confidence

Release Notes

modelcontextprotocol/python-sdk (mcp)

v2.3.0

Compare Source

pip install -U mcp. Docs: https://py.sdk.modelcontextprotocol.io/

Mostly fixes, plus three new options. A few things behave differently, so skim these first:

Behaviour changes

httpx2>=2.10.0 is now required (#​3600)

  • It was >=2.5.0. The new max_sse_event_size option needs it.
  • Nothing to do unless you pin httpx2 below 2.10.

A tool with an invalid x-mcp-header annotation fails at registration (#​3620)

  • @mcp.tool(), add_tool and Tool.from_function raise InvalidSignature, naming the tool and the problem.
  • Until now the server started, and 2026-07-28 clients silently dropped the tool from their listing.
  • Refused: anything other than a plain str, int or bool parameter (so also str | None, float, lists and enums), a header name that isn't a valid token, and two names that differ only by case.
  • For an optional header parameter, give the schema directly: Annotated[str | None, WithJsonSchema({"type": "string", "x-mcp-header": "Region"})] = None.

Empty _meta and params are no longer sent (#​3628)

  • On 2025-11-25 and earlier connections, 2.x sent "_meta": {} on every request. Some servers reject that. It is now left out, as in v1.
  • ping and list requests without a cursor go out with no params member.
  • On the receiving side ctx.meta is None rather than {}, and middleware sees ctx.params as None for a request without params.
  • 2026-07-28 connections are unchanged.

initialize leaves out experimental when none is configured (#​3614)

  • It used to send "experimental": {}. server/discover already left it out.
  • Client code reading capabilities.experimental on a legacy connection should handle None.

Mcp-Param-* validation looks the tool up by name (#​3630)

  • MCPServer no longer runs tools/list for every tools/call, so middleware no longer sees that extra request.
  • The registered schema is what gets checked. Middleware that filters or rewrites tools/list no longer affects it.

An interactive OAuth login no longer counts against request timeouts (#​3635)

  • The timeout pauses while OAuthClientProvider waits on redirect_handler and callback_handler.
  • This fixes Client(mode="auto") settling on 2025-11-25 when the login took longer than 10 seconds.
  • A request timeout no longer ends a login nobody finishes. Put a limit inside callback_handler if you need one.

New

  • max_sse_event_size= on streamable_http_client and StreamableHttpParameters. The default stays 1 MiB per SSE event; raise it, or pass None, for larger tool results (#​3600).
  • MCPServer(subscriptions=False) stops serving subscriptions/listen and advertises listChanged and subscribe as false (#​3626).
  • Server(get_tool_input_schema=...) lets a low-level server supply a tool's schema for header validation without running its tools/list handler (#​3630).
  • Client.call_tool re-lists the tools and retries once after a HeaderMismatch (-32020) rejection (#​3627).

Fixes

  • ctx: Context[AppState] works on prompts and resource templates, not only on tools (#​3624).
  • An explicit "structuredContent": null is checked against the output schema instead of being treated as missing (#​3621).
  • A progress_callback that raises no longer fails the call on an in-process Client(server) (#​3623).
  • Client OpenTelemetry spans record JSON-RPC error responses. With mode="auto", connecting to a server without server/discover now shows one ERROR span for the probe (#​3629).
  • stdio_client resolves the executable off the event loop on Windows (#​3510).

Docs

What's Changed

Full Changelog: modelcontextprotocol/python-sdk@v2.2.0...v2.3.0


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added bot-renovate Renovate dependency update renovate-type-python Python dependency update renovate-version-minor Minor version update labels Oct 5, 2026
@renovate
renovate Bot enabled auto-merge (squash) October 5, 2026 23:07
@renovate
renovate Bot merged commit 2b1738e into main Oct 5, 2026
9 checks passed
@renovate
renovate Bot deleted the renovate/mcp-2.x branch October 5, 2026 23:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot-renovate Renovate dependency update renovate-type-python Python dependency update renovate-version-minor Minor version update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants