Commit graph

3,020 commits

Author SHA1 Message Date
Jeremiah Lowin
7b9fcec2ec
Fix v3.0.0 changelog compare link: v2.14.5, not v2.14.1 2026-02-18 16:24:32 -05:00
Jeremiah Lowin
af4fe56638
Update README for v3.0 GA: fix image paths, add upgrade guides 2026-02-18 16:20:57 -05:00
Jeremiah Lowin
044cef90a9
Add v3.0.0 changelog and updates entries 2026-02-18 16:15:12 -05:00
Jeremiah Lowin
e717e1623c
Update thumbnail background (#3219) v3.0.0rc3
* Update thumbnail background

* New thumbnail

* JPEG encoded

* Update banner
2026-02-18 15:53:46 -05:00
Chris Guidry
8a13032419
Use standard traceparent/tracestate keys per OTel MCP semconv (#3221)
* Use standard traceparent/tracestate keys per OTel MCP semconv

The OTel semantic conventions for MCP (https://opentelemetry.io/docs/specs/semconv/gen-ai/mcp/)
put `traceparent` and `tracestate` directly in `params._meta` without a prefix.
FastMCP was using `fastmcp.traceparent` / `fastmcp.tracestate`, which meant
non-FastMCP clients sending the standard keys couldn't propagate traces.

Switches injection to the bare keys and adds fallback extraction for the old
prefixed keys so older FastMCP clients still work.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: Update SDK documentation

* Drop legacy fastmcp.-prefixed trace key fallback

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: Update SDK documentation

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-18 15:51:24 -05:00
Jeremiah Lowin
a2efd686a9
Normalize repo references to PrefectHQ/fastmcp casing (#3218) 2026-02-18 14:51:18 -05:00
Jeremiah Lowin
78010ef06e
Fix invalid uv add fastmcp@latest command (#3217) 2026-02-18 14:46:19 -05:00
Jeremiah Lowin
1eb57ba262
Add upgrade guides for users coming from the MCP SDK (#3215)
* Add upgrade guides for users coming from the MCP SDK

* Fix incorrect Image import path in LLM migration prompt

* Align LLM prompts with prose across all three upgrade guides

* Move upgrade guides under getting-started/upgrading, add install section and --upgrade flag
2026-02-18 14:30:07 -05:00
Jeremiah Lowin
958e657521
Update docs for 3.0 GA release (#3216)
* Update docs for 3.0 GA release

* Add upgrade command to v2 migration section

* Revert "Add upgrade command to v2 migration section"

This reverts commit ee03d0d847.
2026-02-18 14:29:28 -05:00
Jeremiah Lowin
657298112b
Fix MDX parsing error and update card images (#3213)
* Fix MDX parsing error and add broken link CI check

Escape curly braces in docstring example that broke MDX parsing,
update card images, and add docs broken link check to CI.

* Revert CI broken link check — Mintlify runs this already

* Use code fence instead of inline backticks for MDX escaping

* chore: Update SDK documentation

---------

Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-18 13:04:45 -05:00
Jeremiah Lowin
7aba0df323
Cache OBO credentials on AzureProvider for token reuse (#3212)
* Cache OBO credentials on AzureProvider for token reuse

* chore: Update SDK documentation

* Close evicted OBO credentials properly

* chore: Update SDK documentation

---------

Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-18 11:43:36 -05:00
Jeremiah Lowin
9b248a15b3
Update repository references for transfer to prefecthq (#3207)
* Update repository references from jlowin/fastmcp to prefecthq/fastmcp

* Retrigger CI after repo transfer

* chore: Update SDK documentation

* Only run deep triage on bug issues for jlowin

---------

Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-18 10:33:56 -05:00
Jeremiah Lowin
3a4d41346c
Overhaul v3.0 upgrade guide (#3205)
* Overhaul v3.0 upgrade guide

Rewrites the upgrade guide with educational context for each breaking
change, adds an LLM migration prompt users can copy into any AI assistant,
and covers previously missing items (removed constructor kwargs, module
path deprecations, import_server deprecation).

* Address CodeRabbit review feedback on upgrade guide

Split message_path from other transport kwargs (env-var only, not a
run() kwarg), move decorator change to breaking changes in the LLM
prompt since accessing component attributes will crash, and add
DiskStore/OAuth storage change to the prompt's numbered list.

* Move decorator change under Breaking Changes in prose

* Add before/after pattern to auth provider section

* Add Warning callout, WSTransport and OpenAPI migration examples

* Add missing imports to FastMCPOpenAPI migration example
2026-02-17 19:51:18 -05:00
Jeremiah Lowin
27be9fe229
Exclude auto-generated python-sdk docs from CodeRabbit reviews (#3206)
* Exclude auto-generated python-sdk docs from CodeRabbit reviews

* Clarify that python-sdk doc changes in PR diffs are expected
2026-02-17 18:28:20 -05:00
Jeremiah Lowin
a8b100eb8c
Add JWT audience validation and RFC 8707 warnings to auth providers (#3204)
* Add JWT audience validation and RFC 8707 warnings to auth providers

* chore: Update SDK documentation

* Update AuthKit example README env var name

* Move RFC 8707 warnings inside default verifier guard

* chore: Update SDK documentation

---------

Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-17 18:16:05 -05:00
Jeremiah Lowin
016b9f90e0
Fix confused deputy attack via consent binding cookie (#3201)
* Add consent binding cookie to prevent confused deputy attacks (GHSA-rww4-4w9c-7733)

The OAuthProxy's consent page verified user intent but didn't bind the
consenting browser to the IdP callback. An attacker could intercept the
upstream authorization URL after consent and send it to a victim, whose
browser would complete the flow without having the consent cookie.

This adds a signed consent binding cookie set during consent approval
(both manual and auto-approve paths) and verified in the IdP callback
handler. A different browser won't have this cookie and gets a 403.

* Use startswith for URL assertion in consent binding test

* Store consent bindings as per-transaction map to support parallel flows

* Only accept __Host- consent binding cookie on HTTPS

* chore: Update SDK documentation

---------

Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-17 10:24:07 -05:00
Bill Easton
2dcbb944a8
Minimize resolved review threads in PRs (#3200)
* Minimize resolved review threads in PRs

* cancel in progress runs when there are duplicates

* add /tidy comment support
2026-02-17 08:22:31 -05:00
Jeremiah Lowin
5dd8cde2f9
Drop diskcache dependency (CVE-2025-69872) (#3185)
* Drop diskcache dependency (CVE-2025-69872)

Switch default OAuth proxy storage from DiskStore (backed by diskcache,
which uses pickle serialization) to FileTreeStore (file-per-key JSON).
This removes diskcache from the dependency tree entirely, resolving
CVE-2025-69872 for pip-audit and similar scanners.

* chore: Update SDK documentation

* Add comments explaining FileTreeStore warning suppression

* chore: Update SDK documentation

* Isolate storage by encryption key, gracefully handle decryption failures

* chore: Update SDK documentation

* Bump py-key-value-aio lower bound to 0.4.2 for FileTreeStore security hardening

* chore: Update SDK documentation

* Document storage backend change and update DiskStore references

* Bump py-key-value-aio lower bound to 0.4.3

* Bump py-key-value-aio to 0.4.4, remove warning suppression

* chore: Update SDK documentation

---------

Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-16 16:43:15 -05:00
Jeremiah Lowin
5dc2432950
Merge pull request #3198 from jlowin/fix/ty-errors
Fix ty 0.0.17 diagnostics
2026-02-16 16:24:42 -05:00
Jeremiah Lowin
564b4c0d5c
Fix ty 0.0.17 diagnostics and bump lockfile 2026-02-16 16:13:38 -05:00
Jeremiah Lowin
85a833a74b
Reorganize docs navigation around Server/Client/Apps pillars (#3197)
* Reorganize docs navigation and add Apps documentation

Collapse Providers, Transforms, and Deployment under Servers. Add Apps
section with overview and low-level API pages. Add card images to welcome
page and README. Add NEW tags to recent features.

* Fix missing imports in Apps low-level API code examples
2026-02-16 15:33:16 -05:00
Jeremiah Lowin
b4eb1adbeb
Merge pull request #3195 from jlowin/fix/stateless-http-disable-get-sse
Return 405 for GET SSE on stateless HTTP servers
2026-02-16 09:32:21 -05:00
Jeremiah Lowin
dab2084c74
Return 405 for GET requests on stateless HTTP servers 2026-02-16 09:08:32 -05:00
Jeremiah Lowin
453dcbe808
Merge pull request #3194 from jlowin/docs/caching-identity-note
Document cache key identity behavior
2026-02-16 08:55:29 -05:00
Jeremiah Lowin
62804e2f06
Add cache key identity note to middleware docs 2026-02-16 08:52:28 -05:00
Jeremiah Lowin
d3032c10a2
Merge pull request #3193 from jfBiswajit/fix/readme-logo
fix: correct dark mode logo file extension in README
2026-02-16 08:40:16 -05:00
Biswajit Biswas
964ba12bc5 fix: correct dark mode logo file extension in README 2026-02-16 15:56:10 +06:00
Jeremiah Lowin
b14b137fdd
Merge pull request #3188 from jlowin/feature/dev-subcommand-group v3.0.0rc2
Move `fastmcp dev` to `fastmcp dev inspector`
2026-02-13 21:47:29 -06:00
marvin-context-protocol[bot]
edac1e5427 chore: Update SDK documentation 2026-02-14 03:43:26 +00:00
Jeremiah Lowin
618195c065
Move fastmcp dev to fastmcp dev inspector 2026-02-13 22:42:38 -05:00
Jeremiah Lowin
ccfe5047bf
Fix include_tags/exclude_tags ignored without tools in MCPConfig (#3186)
* Fix include_tags/exclude_tags ignored without tools in MCPConfig

* chore: Update SDK documentation

---------

Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-13 20:38:56 -05:00
dependabot[bot]
bb60287005
chore(deps): bump cryptography in the uv group across 1 directory (#3147)
Bumps the uv group with 1 update in the / directory: [cryptography](https://github.com/pyca/cryptography).


Updates `cryptography` from 46.0.4 to 46.0.5
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/46.0.4...46.0.5)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 46.0.5
  dependency-type: indirect
  dependency-group: uv
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-13 17:38:02 -05:00
Jeremiah Lowin
e5553177d7
docs: update all references from 3.0.0b2 to 3.0.0rc1 (#3173) v3.0.0rc1 2026-02-12 16:39:16 -06:00
Jeremiah Lowin
5f941be5a3
Fix stale request context in StatefulProxyClient handlers (#3172)
* fix: restore request context in StatefulProxyClient handlers

StatefulProxyClient reuses sessions across requests, so its receive-loop
task inherits a stale request_ctx ContextVar from the first request.
Server-initiated messages (elicitation, sampling, etc.) that depend on
related_request_id routing get sent to a closed stream and hang forever.

Closes #3169

* chore: Update SDK documentation

---------

Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-12 17:13:23 -05:00
Jeremiah Lowin
b62ed3408b
Support non-serializable values in Context.set_state (#3171)
Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-12 15:06:42 -06:00
Jeremiah Lowin
88c89248d0
Merge pull request #3157 from jlowin/update-claude-workflows
Updates to github actions / workflows for claude
2026-02-12 14:49:16 -05:00
Jeremiah Lowin
3907a4f9b6
docs: fix stale get_* references, now list_* (#3168) 2026-02-12 13:45:49 -06:00
Jeremiah Lowin
175479f65f
fix: guard client pagination loops against misbehaving servers (#3167)
* fix: guard client pagination loops against misbehaving servers

Treat empty/falsy nextCursor as end-of-pagination and detect cursor
cycles across all client list methods and the server context proxy
helper.

* chore: Update SDK documentation

---------

Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-12 13:19:02 -06:00
Bill Easton
359575b12f
Add helpers for converting FunctionTool and TransformedTool to SamplingTool (#3062)
Co-authored-by: Bill Easton <strawgate@users.noreply.github.com>
Co-authored-by: Jeremiah Lowin <jlowin@users.noreply.github.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Jeremiah Lowin <153965+jlowin@users.noreply.github.com>
Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-11 19:43:03 -06:00
Jeremiah Lowin
a307e9c3cc
Expose local_provider property, deprecate FastMCP.remove_tool() (#3155)
Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-11 19:37:19 -06:00
William Easton
16a85ffcd8
pretty yaml 2026-02-11 16:07:50 -06:00
William Easton
b42f6f9a48
update conditionals 2026-02-11 16:07:22 -06:00
William Easton
c9fbd1f5de
Merge origin/main into update-claude-workflows
Resolve conflict: remove old martian-issue-triage.yml (replaced by martian-triage-issue.yml)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-11 15:56:47 -06:00
William Easton
b3b630ee7b
Updates to github actions / workflows for claude 2026-02-11 15:52:54 -06:00
Jeremiah Lowin
fe57c3d689
Make $ref dereferencing optional via FastMCP(dereference_refs=...) (#3151)
Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-11 13:45:37 -05:00
Jeremiah Lowin
50b23299f8
Support async auth checks (#3152)
Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-11 12:48:51 -05:00
Jeremiah Lowin
25e2f4da32
Remove deprecated FastMCP() constructor kwargs (#3148)
Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-11 11:39:34 -05:00
Jeremiah Lowin
0f95ed72cd
Stop duplicating path parameter descriptions into tool prose (#3149)
Co-authored-by: marvin-context-protocol[bot] <225465937+marvin-context-protocol[bot]@users.noreply.github.com>
2026-02-11 11:34:11 -05:00
Guillaume FORTAINE
263e0bf6e0
fix: snapshot access token for background tasks (#3095) (#3138)
Co-authored-by: cristiangreco94 <cristiangreco94@users.noreply.github.com>
2026-02-11 10:20:14 -05:00
dependabot[bot]
f75cd05e50
chore(deps): bump cryptography (#3140)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-11 10:19:38 -05:00