chore(deps): bump fastmcp from 2.12.4 to 2.14.0#2266
Conversation
Bumps [fastmcp](https://github.com/PrefectHQ/fastmcp) from 2.12.4 to 2.14.0. - [Release notes](https://github.com/PrefectHQ/fastmcp/releases) - [Changelog](https://github.com/PrefectHQ/fastmcp/blob/main/docs/changelog.mdx) - [Commits](PrefectHQ/fastmcp@v2.12.4...v2.14.0) --- updated-dependencies: - dependency-name: fastmcp dependency-version: 2.14.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
API breakage checks (Griffe)Result: Failed Log excerpt (first 1000 characters) |
Agent server REST API breakage checks (OpenAPI)Result: Passed |
all-hands-bot
left a comment
There was a problem hiding this comment.
⚠️ Eval Risk - Human Review Required
This dependency update updates MCP-related dependencies that could affect agent behavior. Per repo guidelines, flagging for lightweight eval testing before merge.
Key Concerns
🟠 Breaking Changes in fastmcp 2.14.0
- Removes deprecated APIs:
BearerAuthProvider,Context.get_http_request(),dependenciesparameter - Quick grep shows we don't use these, but verify no import breakages
- Release notes: https://github.com/PrefectHQ/fastmcp/releases/tag/v2.14.0
🟠 MCP Spec Update (1.23.0 → 1.26.0)
- Adopts MCP 2025-11-25 specification
- Since we use MCP for agent tool integration (
openhands/sdk/mcp/), changes could affect:- Tool discovery/execution behavior
- Prompt handling
- Resource management
- Recommendation: Run basic agent tests with MCP tools to catch behavior changes
🟡 Dependency Expansion
- Adds 15+ new transitive dependencies:
redis,pydocket,keyring,beartype,croniter,fakeredis,lupa, etc. - Driven by new background task support (powered by Docket)
- Consider impact on build time, deployment size, and security surface area
- If background tasks aren't needed, check if fastmcp has lighter install options
Verdict
✋ Do not merge without testing - Run lightweight evals to verify MCP tool behavior is unchanged.
|
@OpenHands verify no import breakages |
|
I'm on it! aivong-openhands can track my progress at all-hands.dev |
SummaryI verified that the fastmcp upgrade from 2.12.4 to 2.14.0 (PR #2266) introduces no import breakages. Verification Performed:
Note:There are 10 deprecation warnings about Conclusion: The upgrade is safe to merge. No code changes were needed or made - this was purely a verification task. |
|
@OpenHands check if background tasks are needed. Also check if fastmcp has lighter install options |
|
I'm on it! aivong-openhands can track my progress at all-hands.dev |
SummaryI investigated two questions about the fastmcp upgrade from 2.12.4 to 2.14.0: 1. Are background tasks needed?No. Our codebase only uses these fastmcp components:
We do not use any background task features ( 2. Does fastmcp have lighter install options?Not in v2.14.0. The The only optional extra in 2.14.0 is However, in fastmcp 3.x, RecommendationThe PR is safe to merge:
If install size becomes a concern, the options are to wait for fastmcp 3.x (which has optional No code changes were made - this was an investigation-only task. |
fastmcp 2.14.0 introduced docket for background tasks, which requires fakeredis with lua support. While pydocket declares fakeredis[lua] as a dependency, the [lua] extra wasn't being properly resolved during the agent-server build process, causing 'No module named lupa.lua51' errors when MCP servers are configured. Adding fakeredis[lua] as an explicit dependency ensures lupa is properly bundled in the agent-server image.
PyInstaller wasn't collecting the lupa submodules (specifically lupa.lua51) which is required for fakeredis Lua scripting support. This caused 'No module named lupa.lua51' errors at runtime when MCP servers were configured. Adding both fakeredis and lupa to collect_submodules ensures all submodules are properly bundled in the agent-server binary.
fakeredis requires commands.json for ACL initialization. Without this
data file bundled, the agent-server fails with:
FileNotFoundError: fakeredis/model/../commands.json
Adding collect_data_files('fakeredis') ensures all required JSON files
are included in the PyInstaller bundle.
fakeredis/model/_command_info.py uses a relative path to find commands.json: Path(__file__).parent.parent / 'commands.json' This requires the model/ subdirectory to exist in the PyInstaller extraction directory. Without it, the path resolution fails with FileNotFoundError. Added get_fakeredis_data() function that: 1. Explicitly adds commands.json to fakeredis/ directory 2. Adds fakeredis/model/__init__.py to create the directory structure This ensures the relative path '../commands.json' from model/ resolves correctly.
|
On my local openhands repo, I pointed https://github.com/OpenHands/OpenHands/blob/main/openhands/app_server/sandbox/sandbox_spec_service.py#L16 to the python arm64 agent server image built in this PR https://github.com/OpenHands/software-agent-sdk/actions/runs/22626406879/job/65564124817?pr=2266. I set up deepwiki as an MCP server and invoked it in a conversation:
|
Cherry-pick from upstream 379cd69



Bumps fastmcp from 2.12.4 to 2.14.0.
Release notes
Sourced from fastmcp's releases.
... (truncated)
Changelog
Sourced from fastmcp's changelog.
... (truncated)
Commits
3d6fd46chore: remove tests/test_examples.py (#2593)03b62d2feat: handle error from the initialize middleware (#2531)95e58e8fix: preserve exception propagation through transport cleanup (#2591)855e01echore: Update SDK documentation (#2588)d56f55aAdd smart fallback for missing access token expiry (#2587)d35b867chore: Update SDK documentation (#2517)080ffa5Fix nested server mount routing for 3+ levels deep (#2586)0bcd69cRemove overly restrictive MIME type validation from Resource (#2585)9b41d16Remove deprecated mount/import argument order and separator params (#2582)95fb8b4Fix proxy tool result meta attribute forwarding (#2526)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)You can disable automated security fix PRs for this repo from the Security Alerts page.
Agent Server images for this PR
• GHCR package: https://github.com/OpenHands/agent-sdk/pkgs/container/agent-server
Variants & Base Images
eclipse-temurin:17-jdknikolaik/python-nodejs:python3.12-nodejs22golang:1.21-bookwormPull (multi-arch manifest)
# Each variant is a multi-arch manifest supporting both amd64 and arm64 docker pull ghcr.io/openhands/agent-server:2a3e425-pythonRun
All tags pushed for this build
About Multi-Architecture Support
2a3e425-python) is a multi-arch manifest supporting both amd64 and arm642a3e425-python-amd64) are also available if needed