fix(deps): update third party deps (major) - #6268
Conversation
|
028d78b to
a38489b
Compare
d134a54 to
dbc0e47
Compare
310b3b3 to
4acc2c8
Compare
| dependencies = [ | ||
| "livekit-agents[codecs]>=1.6.7", | ||
| "websockets>=14.0,<16.0", | ||
| "websockets>=16.1,<16.2", |
There was a problem hiding this comment.
π‘ Dependency lockfile no longer matches the declared package requirements
The declared version ranges were changed (mcp>=2, <3 at livekit-agents/pyproject.toml:64 and the websockets range in the gnani plugin) without regenerating the committed lockfile, so environment setup and CI checks that verify the lockfile is up to date will fail.
Impact: Contributors and CI can no longer install dependencies from the lockfile without an error.
Stale specifiers recorded in uv.lock
uv.lock:2249 still records { name = "mcp", marker = "extra == 'mcp'", specifier = ">=1.24.0,<2" } and uv.lock:2910 still records { name = "websockets", specifier = ">=14.0,<16.0" } for livekit-plugins-gnani, with the resolved versions being mcp 1.28.1 and websockets 15.0.1. Since [package.metadata].requires-dist no longer matches the pyproject files, uv sync (used by make install, see AGENTS.md) will need to re-resolve and any --locked/--frozen check fails.
Was this helpful? React with π or π to provide feedback.
84e8897 to
bead794
Compare
dbe5b34 to
938506c
Compare
|
|
||
| [project.optional-dependencies] | ||
| mcp = ["mcp>=1.24.0, <2"] | ||
| mcp = ["mcp>=2, <3"] |
There was a problem hiding this comment.
π΄ Agents can no longer use MCP tool servers after the dependency jump
The MCP tool-server dependency is moved to a new major line (mcp>=2, <3 at livekit-agents/pyproject.toml:64) without updating the code that talks to it, so every agent that connects to an MCP tool server fails to start.
Impact: Any agent using MCP tools breaks immediately with a confusing "install the mcp package" error, even though the package is installed.
Incompatible v1 client APIs used against the mcp 2.x SDK
Inspecting the published mcp 2.0.0 wheel shows several v1 APIs used by livekit-agents/livekit/agents/llm/mcp.py are gone or changed:
GetSessionIdCallbackno longer exists anywhere in the package, sofrom mcp.client.streamable_http import GetSessionIdCallback, streamable_http_client(livekit-agents/livekit/agents/llm/mcp.py:27) raisesImportError, which the surroundingtry/except ImportError(livekit-agents/livekit/agents/llm/mcp.py:29-33) converts into the misleading "The 'mcp' package is required ... pip install 'livekit-agents[mcp]'" message. This alone makes all MCP usage unusable.- v2 depends on
httpx2, nothttpx:sse_client/streamable_http_clientexpect anhttpx2.AsyncClient(andsse_clientcallsclient.sse(url)), while_create_http_client(livekit-agents/livekit/agents/llm/mcp.py:388-405) builds anhttpx.AsyncClient. ClientSession(read_timeout_seconds=...)is nowfloat | None(notimedeltahandling remains in the package; the value is passed straight toanyio.fail_after), butlivekit-agents/livekit/agents/llm/mcp.py:158still passestimedelta(seconds=...).mcp.server.fastmcpwas removed, breakingexamples/voice_agents/mcp/server.py:4.
Either keep the <2 bound or port llm/mcp.py (and the example server) to the v2 client API.
Prompt for agents
Bumping the optional dependency to mcp>=2,<3 in livekit-agents/pyproject.toml breaks livekit-agents/livekit/agents/llm/mcp.py, which is written against the mcp 1.x client API. Concretely, in mcp 2.0.0: GetSessionIdCallback no longer exists in mcp.client.streamable_http (the module-level import fails and is swallowed into a misleading 'install the mcp package' ImportError message); the transports now use the httpx2 package instead of httpx, so the locally built httpx.AsyncClient in MCPServerHTTP._create_http_client is not compatible with sse_client/streamable_http_client; ClientSession's read_timeout_seconds is now plain float seconds and is fed directly to anyio.fail_after, while the code passes a datetime.timedelta; and mcp.server.fastmcp (used by examples/voice_agents/mcp/server.py) was removed. Decide whether to keep the <2 constraint until the client code is migrated, or to port llm/mcp.py and the example server to the v2 client API.
Was this helpful? React with π or π to provide feedback.
938506c to
1d9c1a3
Compare
Generated by renovateBot
1d9c1a3 to
2fcc078
Compare
This PR contains the following updates:
>=1.24.0, <2β>=2, <3>=14.0,<16.0β>=17,<17.1Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
modelcontextprotocol/python-sdk (mcp)
v2.0.0Compare Source
MCP Python SDK v2 Stable Release
This is v2.0.0, the stable v2 release of the MCP Python SDK. It supports the 2026-07-28 revision of the Model Context Protocol and serves every earlier revision from the same server.
pip install mcpnow installs 2.x.Documentation Rewrite
The documentation has the full tutorial and API reference. Coming from v1? What's new in v2 is the tour of what changed and why, and the migration guide lists every breaking change with before-and-after code.
V1 Maintenance mode
v1.x is in maintenance mode and will only receive security fixes from now on The 1.x line lives on the
v1.xbranch, continues to receive critical bug fixes and security patches, and is documented at https://py.sdk.modelcontextprotocol.io/v1/. If your project is not ready to migrate, keep a<2upper bound on your requirement (for examplemcp>=1.28,<2).Highlights
One SDK, both protocol eras
v2 speaks the 2026-07-28 revision (stateless requests with no handshake,
server/discover,subscriptions/listen, multi-round-trip requests) and still serves every 2025-era client from the sameMCPServer, over Streamable HTTP and stdio, with nothing to configure.Client(target)negotiates the version automatically.FastMCPis nowMCPServer, and there is a first-classClientThe decorator API is unchanged; the low-level
Serveris rebuilt around a shared dispatcher engine, and oneClientobject replaces v1's transport-plus-ClientSession-plus-initialize()layering. It connects to a URL, a stdio subprocess, a custom transport, or straight to a server object in memory for tests.Multi-round-trip requests and resolver dependency injection
At 2026-07-28 the server can no longer call the client, so tools return the question instead. A
Resolve(fn)parameter is filled by your function invisibly to the model and can put a question to the user; one tool body serves both eras.Extension APIs, OpenTelemetry, and a standalone types package
Servers and clients compose protocol extensions through pluggable extension APIs (MCP Apps built in); OpenTelemetry tracing ships on by default; every protocol type is its own package,
mcp-types(imported asmcp_types), published in lock-step withmcp.Hardened stdio and auth
stdio servers keep handler subprocesses and stray prints off the wire, and stdout is diverted to stderr while serving. OAuth adds RFC 9207 issuer validation, the SEP-990 identity-assertion flow, and the client-credentials extension.
Coming from a v2 pre-release
Since the last release candidate: the per-version wire packages are private (
mcp_types._v*),mcp.typesis a permanent alias formcp_types, the auth registration request model is split from the registered-client record, cancelled requests are no longer answered, and log notifications are gated on the per-request log-level opt-in at 2026-07-28. Since the betas:Client(cache=False)is nowcache=NonewithCacheConfig()the default;Context.client_id,RFC7523OAuthClientProvider, andOAuthClientProvider(timeout=)are removed; the client-credentials providers takescope=;message_handlerreceives notifications and exceptions only;FileResource(is_binary=)becomesencoding;MCP_*env vars are gone withpydantic-settings; Streamable HTTP servers reject bodies over 4 MiB with HTTP 413. The migration guide covers all of it.Known gaps
The tasks extension (SEP-2663) is not part of this release. On the client, the DPoP proof binding (SEP-1932) and the workload-identity
jwt-bearergrant are not implemented; both are additive and can land in 2.x.Feedback
Something rough, confusing, or broken? Open an issue or find us in #python-sdk-dev on the MCP Contributors Discord.
Full Changelog: modelcontextprotocol/python-sdk@v2.0.0rc1...v2.0.0
v1.29.0Compare Source
What's Changed
Full Changelog: modelcontextprotocol/python-sdk@v1.28.1...v1.29.0
python-websockets/websockets (websockets)
v17.0Compare Source
See https://websockets.readthedocs.io/en/stable/project/changelog.html for details.
v16.1.1Compare Source
See https://websockets.readthedocs.io/en/stable/project/changelog.html for details.
v16.1Compare Source
See https://websockets.readthedocs.io/en/stable/project/changelog.html for details.
v16.0Compare Source
See https://websockets.readthedocs.io/en/stable/project/changelog.html for details.
Configuration
π Schedule: (UTC)
π¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
β» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
π» Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.