Skip to content

fix(tools): take partial tool names and docstrings from the wrapped function - #5269

Merged
jlowin merged 2 commits into
PrefectHQ:mainfrom
BlueX888:fix/prep-partial-tool-named-partial-class-docstring
Oct 5, 2026
Merged

jlowin merged 2 commits into
PrefectHQ:mainfrom
BlueX888:fix/prep-partial-tool-named-partial-class-docstring

Conversation

@BlueX888

@BlueX888 BlueX888 commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Partials built from different functions were both registered as partial, so the second tool replaced the first. Tool metadata now falls back to the wrapped callable while retaining the partial's bound arguments and defaults. Explicit names, documentation, and parameter descriptions on the partial remain authoritative, including intentionally empty documentation; explicit FastMCP metadata still overrides them.

from functools import partial
from fastmcp.tools import Tool

def multiply(x: int, y: int) -> int:
    """Multiply two numbers."""
    return x * y

tool = Tool.from_function(partial(multiply, y=2))
# name: multiply; y defaults to 2

Fixes #5266. Override-preservation finishing incorporates @Ares16x16's contribution in #5272.

Co-authored-by: BlueX888 [email protected]
Co-authored-by: Edward Lo [email protected]

@github-actions

Copy link
Copy Markdown
Contributor

This pull request is awaiting maintainer assignment. Linked PRs stay open while maintainers triage the issue; this check remains failing until assignment.

Per CONTRIBUTING.md, an external PR must reference an issue that's assigned to its author. To get there:

  1. A maintainer will review the issue and decide whether to assign you. Please don't comment just to request assignment.

Once you're assigned and the link is present, this check is re-run automatically. Previously gate-closed PRs also reopen — no further action needed.

Maintainers: reopen this PR or remove the missing-issue-link label to bypass this check.

@marvin-context-protocol marvin-context-protocol Bot added the bug Something isn't working. Reports of errors, unexpected behavior, or broken functionality. label Sep 25, 2026
@BlueX888
BlueX888 force-pushed the fix/prep-partial-tool-named-partial-class-docstring branch from 6587a71 to 93a0ed7 Compare September 26, 2026 03:31
Co-authored-by: BlueX888 <[email protected]>
Co-authored-by: Edward Lo <[email protected]>

@jlowin jlowin left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The original partial-metadata fix now preserves explicit metadata overrides and carries the competing contributor’s credited finishing work; full tests and static checks pass.

@jlowin

jlowin commented Oct 5, 2026

Copy link
Copy Markdown
Member

Reviewed at 8cefd69. The localized finishing corrections are verified; full tests, static checks and current code CI pass. Contributor credit is preserved. Merging.

@jlowin
jlowin merged commit 949fea4 into PrefectHQ:main Oct 5, 2026
21 of 22 checks passed
luketainton pushed a commit to luketainton/repos_labmcp that referenced this pull request Oct 10, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [fastmcp](https://github.com/PrefectHQ/fastmcp) | `>=4.0.10,<4.1` → `>=4.1,<4.2` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/fastmcp/4.1.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/fastmcp/4.0.10/4.1.0?slim=true) |

---

### Release Notes

<details>
<summary>PrefectHQ/fastmcp (fastmcp)</summary>

### [`v4.1.0`](https://github.com/PrefectHQ/fastmcp/releases/tag/v4.1.0): : Fourth and One

[Compare Source](PrefectHQ/fastmcp@v4.0.11...v4.1.0)

FastMCP 4.1.0 is a maintenance release at heart: a broad sweep of fixes across OpenAPI, proxies, auth, tasks, and the CLI, plus full Python 3.15 support. It doesn't change how most servers behave. A few security fixes do tighten inputs that FastMCP previously accepted, though, and our versioning policy keeps breaking changes out of patch releases, so this ships as a point-one release.

Check these before upgrading:

- **MultiAuth** now qualifies client IDs by source, so existing MultiAuth sessions and tasks start new ownership scopes. Finish pending tasks before upgrading.
- **Regex tool search** uses Pydantic's regex engine, which doesn't support lookarounds or backreferences.
- **Skill files** must resolve inside their configured directories.
- **OpenAPI path parameters** reject `.` and `..` segments.
- **HTTP sessions** now expire after the MCP SDK's 30-minute idle default instead of never.
- **CodeMode** requires Monty 1.1, which renames `max_duration_secs` to `max_feed_duration_secs`.

Thanks to our 48 contributors, including 21 first-time contributors!

<!-- Release notes generated using configuration in .github/release.yml at main -->

#### What's Changed

##### Breaking Changes ⚠️

- fix(http): preserve the SDK's default session idle timeout by [@&#8203;asts-top](https://github.com/asts-top) in [#&#8203;5229](PrefectHQ/fastmcp#5229)
- Restore full Python 3.15 support by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;5558](PrefectHQ/fastmcp#5558)

##### Enhancements ✨

- enhancement: Configure token introspection audiences by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;sajdakabir](https://github.com/sajdakabir) in [#&#8203;5461](PrefectHQ/fastmcp#5461)
- fix: Make proxy HTTP header forwarding configurable by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5462](PrefectHQ/fastmcp#5462)
- enhancement: Configure upload retention in memory by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;warlocksmurf](https://github.com/warlocksmurf) in [#&#8203;5463](PrefectHQ/fastmcp#5463)
- Clarify maintainer review decisions by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5466](PrefectHQ/fastmcp#5466)
- feat: persist encrypted CLI OAuth tokens by [@&#8203;andreivince](https://github.com/andreivince) in [#&#8203;5405](PrefectHQ/fastmcp#5405)
- feat(auth): add TokenCache support to GoogleTokenVerifier and GoogleProvider by [@&#8203;jerive](https://github.com/jerive) in [#&#8203;5366](PrefectHQ/fastmcp#5366)
- Add gitleaks secret scanning to prek by [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5355](PrefectHQ/fastmcp#5355)
- Keep review design decisions with maintainers by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5468](PrefectHQ/fastmcp#5468)

##### Security 🔒

- fix!: Qualify MultiAuth client identities by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5455](PrefectHQ/fastmcp#5455)
- fix!: Validate OpenAPI path parameter segments by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5457](PrefectHQ/fastmcp#5457)
- fix!: Resolve skill files within their configured directories by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;GEONWOOHAN](https://github.com/GEONWOOHAN) in [#&#8203;5459](PrefectHQ/fastmcp#5459)
- fix!: Use Pydantic’s regex engine for tool search by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5467](PrefectHQ/fastmcp#5467)

##### Fixes 🐞

- fix: Share JWKS refreshes across key lookups by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5456](PrefectHQ/fastmcp#5456)
- fix: Reuse shared OpenAPI composition members by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5460](PrefectHQ/fastmcp#5460)
- Resolve app tool names against the transformed catalog by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5464](PrefectHQ/fastmcp#5464)
- fix: keep generator iteration inside dependency lifetime by [@&#8203;mikamikasuki](https://github.com/mikamikasuki) in [#&#8203;5438](PrefectHQ/fastmcp#5438)
- fix(tools): consume synchronous generators within dispatched invocation by [@&#8203;HootRock](https://github.com/HootRock) in [#&#8203;5376](PrefectHQ/fastmcp#5376)
- fix(tools): reject results returned after timeout deadlines by [@&#8203;HootRock](https://github.com/HootRock) in [#&#8203;5379](PrefectHQ/fastmcp#5379)
- Fix [#&#8203;5368](PrefectHQ/fastmcp#5368): Tool.from_tool: a transform_fn that declares ctx: Context fails on eve by [@&#8203;nandanadileep](https://github.com/nandanadileep) and [@&#8203;chrikrah](https://github.com/chrikrah) in [#&#8203;5371](PrefectHQ/fastmcp#5371)
- fix(auth): preserve AuthKit issuer identity by [@&#8203;mikamikasuki](https://github.com/mikamikasuki) and [@&#8203;paddynatte](https://github.com/paddynatte) in [#&#8203;5452](PrefectHQ/fastmcp#5452)
- fix(auth): advertise resource_metadata only when a route serves it by [@&#8203;alex-feel](https://github.com/alex-feel) in [#&#8203;5363](PrefectHQ/fastmcp#5363)
- fix: decode escaped JSON Pointer tokens during hydration by [@&#8203;HuaTNA](https://github.com/HuaTNA) in [#&#8203;5407](PrefectHQ/fastmcp#5407)
- fix: read MCP config files as UTF-8 in the install commands by [@&#8203;ch-z-hc](https://github.com/ch-z-hc) in [#&#8203;5359](PrefectHQ/fastmcp#5359)
- Add regression coverage for root-context schema caching by [@&#8203;hulkbig](https://github.com/hulkbig) in [#&#8203;5397](PrefectHQ/fastmcp#5397)
- Keep the original cause when ErrorHandlingMiddleware re-raises an error unchanged by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5344](PrefectHQ/fastmcp#5344)
- Resolve ASGIServer.http_client relative URLs against the server origin by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5341](PrefectHQ/fastmcp#5341)
- Raise startup failures from run_server_async instead of hanging by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5340](PrefectHQ/fastmcp#5340)
- Restrict Windows CLI state access without requiring SeSecurityPrivilege by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5312](PrefectHQ/fastmcp#5312)
- Advertise the same list_changed capabilities over stdio as other transports by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5311](PrefectHQ/fastmcp#5311)
- Validate responses to dict and nested-list elicitation choices by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5343](PrefectHQ/fastmcp#5343)
- Inline enums shared by several fields in elicitation schemas by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5342](PrefectHQ/fastmcp#5342)
- Honor the SDK ElicitResult returned by an elicitation handler by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5339](PrefectHQ/fastmcp#5339)
- Look up call_tool output schemas across all tools/list pages by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5338](PrefectHQ/fastmcp#5338)
- Deduplicate versions in PromptsAsTools and ResourcesAsTools list tools by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5331](PrefectHQ/fastmcp#5331)
- Map File text formats to canonical text MIME types by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5334](PrefectHQ/fastmcp#5334)
- Keep generated OpenAPI component names unique when a suffixed name is taken by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5337](PrefectHQ/fastmcp#5337)
- Keep is_error when ResponseLimitingMiddleware truncates a result by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5309](PrefectHQ/fastmcp#5309)
- Read +json OpenAPI resource responses as JSON text by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5310](PrefectHQ/fastmcp#5310)
- Preserve provider challenge defaults through MultiAuth by [@&#8203;taylorwilsdon](https://github.com/taylorwilsdon) in [#&#8203;5454](PrefectHQ/fastmcp#5454)
- Write generate-cli output as UTF-8 by [@&#8203;asasemahmed](https://github.com/asasemahmed) and [@&#8203;ch-z-hc](https://github.com/ch-z-hc) in [#&#8203;5335](PrefectHQ/fastmcp#5335)
- Strip internal visibility meta from prompt results and static resources by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5330](PrefectHQ/fastmcp#5330)
- Register browser OAuth clients as public clients by [@&#8203;goran-revops](https://github.com/goran-revops) in [#&#8203;5231](PrefectHQ/fastmcp#5231)
- fix(client): preserve unique JSON arrays by [@&#8203;lzyruc](https://github.com/lzyruc) in [#&#8203;5270](PrefectHQ/fastmcp#5270)
- Keep filesystem reloads serialized during cancellation by [@&#8203;sherxlg-gif](https://github.com/sherxlg-gif) in [#&#8203;5184](PrefectHQ/fastmcp#5184)
- Treat upstream HTTP errors from OpenAPI tools as HTTP status errors by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5308](PrefectHQ/fastmcp#5308)
- chore(ty): pin the checked platform to the one CI uses ([#&#8203;5302](PrefectHQ/fastmcp#5302)) by [@&#8203;sclfcz](https://github.com/sclfcz) in [#&#8203;5303](PrefectHQ/fastmcp#5303)
- fix(tools): take partial tool names and docstrings from the wrapped function by [@&#8203;BlueX888](https://github.com/BlueX888) and [@&#8203;Ares16x16](https://github.com/Ares16x16) in [#&#8203;5269](PrefectHQ/fastmcp#5269)
- fix(tools): keep structured content for object schemas without explicit type by [@&#8203;BlueX888](https://github.com/BlueX888) in [#&#8203;5271](PrefectHQ/fastmcp#5271)
- fix: return current tool schemas from cached BM25 searches by [@&#8203;baba9811](https://github.com/baba9811) in [#&#8203;5153](PrefectHQ/fastmcp#5153)
- fix(azure): send prompt=select_account to Entra instead of the consent URL by [@&#8203;mayankkumar-cmd](https://github.com/mayankkumar-cmd) in [#&#8203;5162](PrefectHQ/fastmcp#5162)
- fix(auth): preserve upstream refresh error semantics by [@&#8203;77cjj](https://github.com/77cjj) in [#&#8203;5011](PrefectHQ/fastmcp#5011)
- Clean up run_server_async when startup exits early by [@&#8203;syf2211](https://github.com/syf2211) and [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5469](PrefectHQ/fastmcp#5469)
- Pass resource security policy through FileSystemProvider discovery by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5498](PrefectHQ/fastmcp#5498)
- Forward annotations on proxied resources and resource templates by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5499](PrefectHQ/fastmcp#5499)
- Forward the resources/read result meta through proxies by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5500](PrefectHQ/fastmcp#5500)
- Fix proxy dropping log messages whose data is not a msg/extra dict by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5501](PrefectHQ/fastmcp#5501)
- Forward stop_sequences in the proxy's sampling relay by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5502](PrefectHQ/fastmcp#5502)
- Treat non-Bearer Authorization schemes as missing authentication by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5503](PrefectHQ/fastmcp#5503)
- Reject positional-only parameters in prompts and resource templates by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5505](PrefectHQ/fastmcp#5505)
- Carry domain and prefers_border onto the Prefab renderer resource by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5611](PrefectHQ/fastmcp#5611)
- Keep GenerativeUI CSP on the renderer resource only by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5612](PrefectHQ/fastmcp#5612)
- Keep OpenAPI path segments that contain a colon by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5613](PrefectHQ/fastmcp#5613)
- Print install mcp-json and inspect JSON without Rich wrapping by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5615](PrefectHQ/fastmcp#5615)
- Coerce optional parameters in fastmcp call by their non-null type by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5616](PrefectHQ/fastmcp#5616)
- Return the existing component when an ignored duplicate is added by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5617](PrefectHQ/fastmcp#5617)
- Keep a config client's servers connected when a new() clone connects by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5618](PrefectHQ/fastmcp#5618)
- Strip discriminator under properties named default, const, enum or examples by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5619](PrefectHQ/fastmcp#5619)
- Keep a finished task's status when it is cancelled by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5621](PrefectHQ/fastmcp#5621)
- Forward --skip-source to the uv run subprocess in fastmcp run by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5623](PrefectHQ/fastmcp#5623)
- Send numeric and boolean OpenAPI raw bodies as text by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5624](PrefectHQ/fastmcp#5624)
- Map Anthropic stop_sequence to the MCP stopSequence stop reason by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5625](PrefectHQ/fastmcp#5625)
- Escape the server spec and name in the generate-cli header docstring by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5626](PrefectHQ/fastmcp#5626)
- Fix context docs: request_context.meta is a dict, not an attribute object by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5631](PrefectHQ/fastmcp#5631)
- Validate strict tool input in JSON mode by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5504](PrefectHQ/fastmcp#5504)
- Raise when a required OpenAPI path parameter is missing by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5614](PrefectHQ/fastmcp#5614)
- Omit writeOnly properties from OpenAPI tool output schemas by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5336](PrefectHQ/fastmcp#5336)
- fix(tasks): keep stored arguments alive with the other per-task keys by [@&#8203;sclfcz](https://github.com/sclfcz) in [#&#8203;5144](PrefectHQ/fastmcp#5144)
- fix(auth): omit scopes from generic authorization code exchange by [@&#8203;liang0417](https://github.com/liang0417) and [@&#8203;kiranthakkar](https://github.com/kiranthakkar) in [#&#8203;5183](PrefectHQ/fastmcp#5183)
- Reject missing and unexpected arguments at task submission by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5622](PrefectHQ/fastmcp#5622)
- fix(auth): preserve verifier-defined challenge scopes through wrappers by [@&#8203;mikamikasuki](https://github.com/mikamikasuki) in [#&#8203;5478](PrefectHQ/fastmcp#5478)
- fix(server): VersionFilter get_tool/get_resource/get_prompt respect include_unversioned=False by [@&#8203;Ashfaqbs](https://github.com/Ashfaqbs) and [@&#8203;Purin1410](https://github.com/Purin1410) in [#&#8203;4949](PrefectHQ/fastmcp#4949)
- Stop asserting that the GitHub remote server lacks structured content by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5634](PrefectHQ/fastmcp#5634)
- Skip skills whose SKILL.md is not valid UTF-8 during directory discovery by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5497](PrefectHQ/fastmcp#5497)
- Fix tool body validation errors at the MCP boundary by [@&#8203;qingshungLI](https://github.com/qingshungLI) and [@&#8203;alastair](https://github.com/alastair) in [#&#8203;5485](PrefectHQ/fastmcp#5485)
- Detect client extensions without requiring clientInfo by [@&#8203;alex-feel](https://github.com/alex-feel) in [#&#8203;5196](PrefectHQ/fastmcp#5196)
- Propagate child cancellation from gather by [@&#8203;dennisimoo](https://github.com/dennisimoo) and [@&#8203;lokesh0186](https://github.com/lokesh0186) in [#&#8203;5161](PrefectHQ/fastmcp#5161)
- fix(resources): separate URI fragments from query values by [@&#8203;Harsh23Kashyap](https://github.com/Harsh23Kashyap) in [#&#8203;5132](PrefectHQ/fastmcp#5132)
- fix: preserve input requests in resource and prompt tools by [@&#8203;HootRock](https://github.com/HootRock) and [@&#8203;andreivince](https://github.com/andreivince) in [#&#8203;5476](PrefectHQ/fastmcp#5476)
- fix(docstrings): don't leak Returns/Raises into description for parameterless functions by [@&#8203;Ashfaqbs](https://github.com/Ashfaqbs) and [@&#8203;pvliesdonk](https://github.com/pvliesdonk) in [#&#8203;5067](PrefectHQ/fastmcp#5067)
- fix(client): hydrate formatted scalars and positional array items by [@&#8203;FanouZeng-TT](https://github.com/FanouZeng-TT), [@&#8203;MarcHuang168](https://github.com/MarcHuang168), [@&#8203;lzyruc](https://github.com/lzyruc), and [@&#8203;onk3sh](https://github.com/onk3sh) in [#&#8203;5203](PrefectHQ/fastmcp#5203)

##### Docs 📚

- docs: credit contributors in v4.0.11 changelog entries by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5449](PrefectHQ/fastmcp#5449)
- Clarify CodeMode execution context by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5458](PrefectHQ/fastmcp#5458)
- docs: explain Inspector entrypoint initialization by [@&#8203;andreivince](https://github.com/andreivince) and [@&#8203;nick-youngblut](https://github.com/nick-youngblut) in [#&#8203;5404](PrefectHQ/fastmcp#5404)
- Docs: show post-call inspection of tool text results by [@&#8203;Amazinghorseli](https://github.com/Amazinghorseli) and [@&#8203;roli-lpci](https://github.com/roli-lpci) in [#&#8203;5385](PrefectHQ/fastmcp#5385)
- Document FastMCP Client use cases by [@&#8203;andreivince](https://github.com/andreivince) in [#&#8203;5482](PrefectHQ/fastmcp#5482)
- docs: show tests for MCP mounted in FastAPI by [@&#8203;andreivince](https://github.com/andreivince) and [@&#8203;DeoLeung](https://github.com/DeoLeung) in [#&#8203;5471](PrefectHQ/fastmcp#5471)
- Document OpenTelemetry log export by [@&#8203;andreivince](https://github.com/andreivince) in [#&#8203;5483](PrefectHQ/fastmcp#5483)
- docs: explain OpenAPI client timeouts by [@&#8203;andreivince](https://github.com/andreivince) and [@&#8203;dimitribarbot](https://github.com/dimitribarbot) in [#&#8203;5470](PrefectHQ/fastmcp#5470)
- Clarify Python projects and Cursor workspaces in install docs by [@&#8203;andreivince](https://github.com/andreivince) and [@&#8203;nick-youngblut](https://github.com/nick-youngblut) in [#&#8203;5475](PrefectHQ/fastmcp#5475)
- Remove comments from fastmcp.json docs examples by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5627](PrefectHQ/fastmcp#5627)
- Fix mcp-json Advanced Configuration example output by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5628](PrefectHQ/fastmcp#5628)
- Remove FASTMCP_SERVER_DEPENDENCIES from the settings reference by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5629](PrefectHQ/fastmcp#5629)
- Fix versioning docs: get_tool takes a VersionSpec and returns None for a missing version by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5630](PrefectHQ/fastmcp#5630)
- Fix authorization docs: AccessToken field types and built-in check count by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5632](PrefectHQ/fastmcp#5632)

##### Examples & Contrib 💡

- Don't evaluate properties when registering MCPMixin methods by [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5620](PrefectHQ/fastmcp#5620)

##### Dependencies 📦

- chore(deps): bump the uv group across 2 directories with 2 updates by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5393](PrefectHQ/fastmcp#5393)

#### New Contributors

- [@&#8203;mikamikasuki](https://github.com/mikamikasuki) made their first contribution in [#&#8203;5438](PrefectHQ/fastmcp#5438)
- [@&#8203;HootRock](https://github.com/HootRock) made their first contribution in [#&#8203;5376](PrefectHQ/fastmcp#5376)
- [@&#8203;alex-feel](https://github.com/alex-feel) made their first contribution in [#&#8203;5363](PrefectHQ/fastmcp#5363)
- [@&#8203;HuaTNA](https://github.com/HuaTNA) made their first contribution in [#&#8203;5407](PrefectHQ/fastmcp#5407)
- [@&#8203;andreivince](https://github.com/andreivince) made their first contribution in [#&#8203;5404](PrefectHQ/fastmcp#5404)
- [@&#8203;ch-z-hc](https://github.com/ch-z-hc) made their first contribution in [#&#8203;5359](PrefectHQ/fastmcp#5359)
- [@&#8203;Amazinghorseli](https://github.com/Amazinghorseli) made their first contribution in [#&#8203;5385](PrefectHQ/fastmcp#5385)
- [@&#8203;hulkbig](https://github.com/hulkbig) made their first contribution in [#&#8203;5397](PrefectHQ/fastmcp#5397)
- [@&#8203;jerive](https://github.com/jerive) made their first contribution in [#&#8203;5366](PrefectHQ/fastmcp#5366)
- [@&#8203;goran-revops](https://github.com/goran-revops) made their first contribution in [#&#8203;5231](PrefectHQ/fastmcp#5231)
- [@&#8203;lzyruc](https://github.com/lzyruc) made their first contribution in [#&#8203;5270](PrefectHQ/fastmcp#5270)
- [@&#8203;sherxlg-gif](https://github.com/sherxlg-gif) made their first contribution in [#&#8203;5184](PrefectHQ/fastmcp#5184)
- [@&#8203;baba9811](https://github.com/baba9811) made their first contribution in [#&#8203;5153](PrefectHQ/fastmcp#5153)
- [@&#8203;mayankkumar-cmd](https://github.com/mayankkumar-cmd) made their first contribution in [#&#8203;5162](PrefectHQ/fastmcp#5162)
- [@&#8203;77cjj](https://github.com/77cjj) made their first contribution in [#&#8203;5011](PrefectHQ/fastmcp#5011)
- [@&#8203;liang0417](https://github.com/liang0417) made their first contribution in [#&#8203;5183](PrefectHQ/fastmcp#5183)
- [@&#8203;Ashfaqbs](https://github.com/Ashfaqbs) made their first contribution in [#&#8203;4949](PrefectHQ/fastmcp#4949)
- [@&#8203;qingshungLI](https://github.com/qingshungLI) made their first contribution in [#&#8203;5485](PrefectHQ/fastmcp#5485)
- [@&#8203;dennisimoo](https://github.com/dennisimoo) made their first contribution in [#&#8203;5161](PrefectHQ/fastmcp#5161)
- [@&#8203;FanouZeng-TT](https://github.com/FanouZeng-TT) made their first contribution in [#&#8203;5203](PrefectHQ/fastmcp#5203)
- [@&#8203;GEONWOOHAN](https://github.com/GEONWOOHAN) made their first contribution in [#&#8203;5459](PrefectHQ/fastmcp#5459)

**Full Changelog**: <PrefectHQ/fastmcp@v4.0.11...v4.1.0>

### [`v4.0.11`](https://github.com/PrefectHQ/fastmcp/releases/tag/v4.0.11): : Fort Knocks

[Compare Source](PrefectHQ/fastmcp@v4.0.10...v4.0.11)

This release contains important security and bug fixes. All users are encouraged to upgrade. Thanks to our 10 contributors, including 6 first-time contributors.

<!-- Release notes generated using configuration in .github/release.yml at main -->

#### What's Changed

##### Enhancements ✨

- agents: make AGENTS.md the entry point and tighten repo skills by [@&#8203;zzstoatzz](https://github.com/zzstoatzz) in [#&#8203;5278](PrefectHQ/fastmcp#5278)
- ci: publish maintenance status and add MAINTAINING.md by [@&#8203;zzstoatzz](https://github.com/zzstoatzz) in [#&#8203;5284](PrefectHQ/fastmcp#5284)
- rate_limiting: deprecate a burst_capacity below 1 by [@&#8203;zzstoatzz](https://github.com/zzstoatzz) and [@&#8203;sclfcz](https://github.com/sclfcz) in [#&#8203;5296](PrefectHQ/fastmcp#5296)
- agents: consolidate PR review guidance by [@&#8203;zzstoatzz](https://github.com/zzstoatzz) in [#&#8203;5297](PrefectHQ/fastmcp#5297)
- status: unify dashboard and terminal issue ranking by [@&#8203;zzstoatzz](https://github.com/zzstoatzz) in [#&#8203;5300](PrefectHQ/fastmcp#5300)
- Enable ruff flake8-bandit (S) rules on the library by [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5356](PrefectHQ/fastmcp#5356)
- Bundle extensions with providers by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5360](PrefectHQ/fastmcp#5360)
- Expand supported Python CI coverage by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5391](PrefectHQ/fastmcp#5391)
- docs: credit issue authors in maintainer implementations by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5410](PrefectHQ/fastmcp#5410)
- enhancement: scan release notes for shared contributor credit by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5433](PrefectHQ/fastmcp#5433)

##### Security 🔒

- Pass client CLI arguments literally to Windows .cmd wrappers by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5419](PrefectHQ/fastmcp#5419)
- Build client schema types with create_model and bounded caches by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5413](PrefectHQ/fastmcp#5413)
- Bound schema nesting before client type conversion by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5434](PrefectHQ/fastmcp#5434)
- OpenAPI components send only declared arguments and keep configured headers by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5423](PrefectHQ/fastmcp#5423)
- Use the server's auth provider for component manager routes by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5425](PrefectHQ/fastmcp#5425)
- Apply Host/Origin protection settings to the SSE transport by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5427](PrefectHQ/fastmcp#5427)
- Require a startup-URL session for the fastmcp dev apps preview by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5417](PrefectHQ/fastmcp#5417)
- Apply transforms, enabled state, and auth to hashed tool lookups by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5415](PrefectHQ/fastmcp#5415)
- Key cached schema adapters by the normalized schema by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5436](PrefectHQ/fastmcp#5436)
- Resolve injected tools through the server's tool lookup by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5431](PrefectHQ/fastmcp#5431)
- Keep $ref pointers when inlining would produce an oversized schema by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5421](PrefectHQ/fastmcp#5421)

##### Fixes 🐞

- rate_limiting: default burst capacity to at least 1 by [@&#8203;zzstoatzz](https://github.com/zzstoatzz) and [@&#8203;Patrick-SCH03](https://github.com/Patrick-SCH03) in [#&#8203;5293](PrefectHQ/fastmcp#5293)
- types: map Image jpg/svg/tif formats to canonical MIME types by [@&#8203;zzstoatzz](https://github.com/zzstoatzz) and [@&#8203;Patrick-SCH03](https://github.com/Patrick-SCH03) in [#&#8203;5294](PrefectHQ/fastmcp#5294)
- client: decode empty structured content into CallToolResult.data by [@&#8203;zzstoatzz](https://github.com/zzstoatzz) and [@&#8203;Patrick-SCH03](https://github.com/Patrick-SCH03) in [#&#8203;5291](PrefectHQ/fastmcp#5291)
- fix: use portable issue ranking cache filenames by [@&#8203;zzstoatzz](https://github.com/zzstoatzz) in [#&#8203;5314](PrefectHQ/fastmcp#5314)
- fix: validate cached version timestamp types by [@&#8203;Harsh23Kashyap](https://github.com/Harsh23Kashyap) in [#&#8203;5351](https://github.com/PrefectHQ/fastmcp/pull/5351)
- cli: read MCP and fastmcp.json config files as utf-8 by [@&#8203;zzstoatzz](https://github.com/zzstoatzz) and [@&#8203;asasemahmed](https://github.com/asasemahmed) in [#&#8203;5345](https://github.com/PrefectHQ/fastmcp/pull/5345)
- Support Python 3.15 by [@&#8203;Kludex](https://github.com/Kludex) in [#&#8203;5374](https://github.com/PrefectHQ/fastmcp/pull/5374)
- Revert "Support Python 3.15" by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5389](https://github.com/PrefectHQ/fastmcp/pull/5389)
- examples: handle malformed media links and concurrent Fire TV setup by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5390](https://github.com/PrefectHQ/fastmcp/pull/5390)
- Fix mounted extension runtime tracking by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5392](https://github.com/PrefectHQ/fastmcp/pull/5392)
- Fall back to pure Python YAML loader in schema tests by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5395](https://github.com/PrefectHQ/fastmcp/pull/5395)
- tools: keep explicit Field(title=...) on parameters in the input schema by [@&#8203;zzstoatzz](https://github.com/zzstoatzz) and [@&#8203;TJReinert](https://github.com/TJReinert) in [#&#8203;5388](https://github.com/PrefectHQ/fastmcp/pull/5388)
- Run Windows tests on code pull requests by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5408](https://github.com/PrefectHQ/fastmcp/pull/5408)
- Avoid repeated traversal of shared tool schema definitions by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5412](https://github.com/PrefectHQ/fastmcp/pull/5412)
- Keep referenced body fields when a request body schema adds sibling properties by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5440](https://github.com/PrefectHQ/fastmcp/pull/5440)
- Require pydocket 0.26.0 so a cancelled task cannot stop the worker by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5444](https://github.com/PrefectHQ/fastmcp/pull/5444)

##### Docs 📚

- docs: consolidate developer and maintainer guidance by [@&#8203;zzstoatzz](https://github.com/zzstoatzz) in [#&#8203;5298](https://github.com/PrefectHQ/fastmcp/pull/5298)
- examples: add interactive media picker MCP app by [@&#8203;zzstoatzz](https://github.com/zzstoatzz) in [#&#8203;5281](https://github.com/PrefectHQ/fastmcp/pull/5281)
- docs: route SDK v1 users to the correct upgrade guide by [@&#8203;aritejhg](https://github.com/aritejhg) in [#&#8203;5372](https://github.com/PrefectHQ/fastmcp/pull/5372)
- Clarify app visibility and configurable security guarantees by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5409](https://github.com/PrefectHQ/fastmcp/pull/5409)
- Clarify declared header parameters in the OpenAPI docs by [@&#8203;jlowin](https://github.com/jlowin) and [@&#8203;strawgate](https://github.com/strawgate) in [#&#8203;5437](https://github.com/PrefectHQ/fastmcp/pull/5437)
- docs: add v4.0.11 changelog entries by [@&#8203;jlowin](https://github.com/jlowin) in [#&#8203;5446](https://github.com/PrefectHQ/fastmcp/pull/5446)

##### Dependencies 📦

- chore(deps): bump the uv group across 2 directories with 2 updates by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;5361](https://github.com/PrefectHQ/fastmcp/pull/5361)

##### Other Changes 🦾

- chore(deps): Update astral-sh/setup-uv action to v10.2.0 by [@&#8203;prefect-renovate](https://github.com/prefect-renovate)\[bot] in [#&#8203;5347](https://github.com/PrefectHQ/fastmcp/pull/5347)

#### New Contributors

- [@&#8203;Harsh23Kashyap](https://github.com/Harsh23Kashyap) made their first contribution in [#&#8203;5351](https://github.com/PrefectHQ/fastmcp/pull/5351)
- [@&#8203;aritejhg](https://github.com/aritejhg) made their first contribution in [#&#8203;5372](https://github.com/PrefectHQ/fastmcp/pull/5372)
- [@&#8203;Patrick-SCH03](https://github.com/Patrick-SCH03) made their first contribution in [#&#8203;5291](PrefectHQ/fastmcp#5291)
- [@&#8203;sclfcz](https://github.com/sclfcz) made their first contribution in [#&#8203;5296](PrefectHQ/fastmcp#5296)
- [@&#8203;asasemahmed](https://github.com/asasemahmed) made their first contribution in [#&#8203;5345](https://github.com/PrefectHQ/fastmcp/pull/5345)
- [@&#8203;TJReinert](https://github.com/TJReinert) made their first contribution in [#&#8203;5388](https://github.com/PrefectHQ/fastmcp/pull/5388)

**Full Changelog**: <PrefectHQ/fastmcp@v4.0.10...v4.0.11>

</details>

---

### 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.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNDguMCIsInVwZGF0ZWRJblZlciI6IjQ0LjE0OC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJ0eXBlL2RlcGVuZGVuY2llcyJdfQ==-->

Reviewed-on: https://git.tainton.uk/repos/labmcp/pulls/74
Co-authored-by: renovate[bot] <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working. Reports of errors, unexpected behavior, or broken functionality. missing-issue-link

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Tools built from functools.partial are named 'partial' and overwrite each other

2 participants