microsoft / microsoft/semantic-kernel
Python: support mcp 2.x (Python SDK): pin blocks mcp 2.0.0
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 28.6k
- Forks
- 4.8k
- Avg merge
- 14h 13m
- Merged PRs (30d)
- 18
Description
Summary
semantic-kernel currently pins the MCP Python SDK to the 1.x line and cannot be installed alongside mcp 2.0.0 (released 2026-07-28). This issue tracks the breaking changes in mcp 2.0 that affect the Python MCP connector.
Current pins
mcp>=1.26.0,<2.0—python/pyproject.toml:59mcp>=1.8,<2.0—python/pyproject.toml:99(themcpextra)
Breaking changes in mcp 2.0 that affect semantic-kernel
All in python/semantic_kernel/connectors/mcp.py, verified against the installed mcp==2.0.0 SDK:
-
streamablehttp_clientrenamed →streamable_http_client, and dropped kwargs.mcp.py:20—from mcp.client.streamable_http import streamablehttp_clientmcp.py:897—return streamablehttp_client(**args)whereargsincludesheaders,timeout,sse_read_timeout(mcp.py:887-895). In 2.0 these kwargs are removed; headers/timeouts must move onto anhttpx2.AsyncClientpassed ashttp_client=.
-
ClientSession(read_timeout_seconds=timedelta(...))now takes a float.mcp.py:337—read_timeout_seconds=timedelta(seconds=self.request_timeout)→ pass a float of seconds.
-
McpErrorrenamed →MCPError.mcp.py:24—from mcp.shared.exceptions import McpError; used atmcp.py:619, 637, 1125, 1158. In 2.0 the name isMCPError(constructorMCPError(code, message, data=None)).
-
camelCase attribute reads on
mcp.types→ snake_case.mcp.py:113, 115, 120—mcp_type.mimeType→mime_typemcp.py:133—mcp_type.toolUseId→tool_use_idmcp.py:207, 208—tool.inputSchema.get(...)→input_schema
-
Lowlevel
@server.list_tools()/@server.call_tool()decorators removed.mcp.py:1091—@server.list_tools();mcp.py:1118—@server.call_tool()(in theMCPServerclass,from mcp.server.lowlevel import Serveratmcp.py:22). In 2.0 handlers are registered via theServer(...)constructor (on_list_tools=/on_call_tool=).
Notes
- Dependency-floor updates.
mcp2.0 requirespydantic>=2.12,anyio>=4.9,typing-extensions>=4.13, and adds required depsopentelemetry-apiandmcp-types(exact-pinned to the SDK version); the SDK's HTTP layer moved fromhttpx/httpx-ssetohttpx2>=2.5.0.
Happy to help with a PR if the maintainers are open to it.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the dependency pins at python/pyproject.toml:59 and :99, then inspect the affected imports, attribute reads, client setup, and server handlers in python/semantic_kernel/connectors/mcp.py. Check the mcp 2.0 SDK interfaces described in the issue and verify that installation and the Python MCP connector work with mcp==2.0.0 and its required dependency floors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 68/100