posit-dev / posit-dev/connect-extensions
chore: upgrade MCP extensions to Python SDK 2.0 and protocol revision 2026-07-28
Nobody has claimed this yet.
- Dominant language
- R
- Stars
- 10
- Forks
- 8
- Avg merge
- 5d 18h
- Merged PRs (30d)
- 1
Description
Tracked under posit-dev/connect#38478.
1. Condition
Two extensions in this repository carry MCP dependencies.
simple-mcp-server pins the Python MCP SDK to a 1.x release:
mcp==1.28.1
# via simple-mcp-server
Source: extensions/simple-mcp-server/requirements.txt.
The Python MCP SDK released v2.0.0 on 28 July 2026, alongside specification revision 2026-07-28. v1.29.0 shipped the same day as the final 1.x release.
Source: python-sdk releases.
simple-shiny-chat-with-mcp is an MCP client. It reaches MCP servers through chatlas==0.19.0, which carries its own mcp dependency.
Source: extensions/simple-shiny-chat-with-mcp/requirements.txt.
The server extension already sets stateless_http=True and disables the SDK's DNS-rebinding host check:
mcp = FastMCP(
name="MCP Server",
...
stateless_http=True,
transport_security=TransportSecuritySettings(
enable_dns_rebinding_protection=False
),
)
Source: extensions/simple-mcp-server/main.py.
2. Requirement
Publishers copy these extensions. They set the default shape of customer MCP servers on Connect. An example that serves an older protocol revision teaches an older pattern.
Revision 2026-07-28 removes the initialize handshake and the Mcp-Session-Id header, and makes stateless operation a protocol requirement rather than a deployment preference.
Sources: The 2026-07-28 Specification, SEP-2575.
3. Task
- Upgrade
simple-mcp-serverto Python MCP SDK2.0.0. Regeneraterequirements.txtwithuv export. - Read the
2.0.0release notes and migration guidance. Apply every required source change inmain.py. - Confirm which protocol revision the upgraded server serves. Record the value in the extension
README.md. - Confirm that
stateless_http=Trueremains correct under2.0.0, or record its replacement. - Confirm that
transport_securityand the DNS-rebinding setting still exist under2.0.0and behave the same. Connect terminates and authenticates requests in front of the app, and the served host varies per deployment. - Verify the viewer-identity path still works. The server exchanges the viewer session token through
client.with_user_session_token(token), and caches one client per token. - Upgrade
simple-shiny-chat-with-mcpto achatlasrelease that carries an MCP 2.x client, once one exists. If none exists, record the blocker in this issue and leave the extension pinned. - Test both extensions against a Connect server that serves the new revision, using the interactive MCP console and the paired chat extension.
- Raise
minimumConnectVersioninextensions/simple-mcp-server/manifest.jsonif the upgraded server needs Connect behaviour that older releases lack. The current value is2025.04.0. - Add a
CHANGELOG.mdentry to each extension that changes.
4. Acceptance criteria
-
simple-mcp-serverruns on Python MCP SDK2.0.0. - The server serves protocol revision
2026-07-28, and theREADME.mdrecords it. - Tool calls run as the signed-in viewer, as they do today.
- The interactive MCP console in Connect lists and calls every tool.
-
simple-shiny-chat-with-mcpcalls the upgraded server, or the issue records why it cannot yet. -
manifest.jsonstates a correctminimumConnectVersion. - Each changed extension has a
CHANGELOG.mdentry.
5. References
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 extensions/simple-mcp-server/requirements.txt and the Python SDK 2.0.0 release notes, then inspect main.py for required migration changes. Check the README.md, manifest.json, and each affected CHANGELOG.md, and verify both extensions with Connect's interactive MCP console and paired chat extension. Done means the server serves revision 2026-07-28, viewer identity and tool calls work, and any chatlas or Connect-version blocker is recorded.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- api, backend
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100