Skip to content

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Nov 7, 2025

Bumps fastmcp from 2.12.4 to 2.13.0.

Release notes

Sourced from fastmcp's releases.

v2.13.0: Cache Me If You Can

FastMCP 2.13.0 "Cache Me If You Can" represents a fundamental maturation of the framework. After months of community feedback on authentication and state management, this release delivers the infrastructure FastMCP needs to handle production workloads: persistent storage, response caching, and pragmatic OAuth improvements that reflect real-world deployment challenges.

💾 Pluggable storage backends bring persistent state to FastMCP servers. Built on py-key-value-aio, a new library from FastMCP maintainer Bill Easton (@​strawgate), the storage layer provides encrypted disk storage by default, platform-aware token management, and a simple key-value interface for application state. We're excited to bring this elegantly designed library into the FastMCP ecosystem - it's both powerful and remarkably easy to use, including wrappers to add encryption, TTLs, caching, and more to backends ranging from Elasticsearch, Redis, DynamoDB, filesystem, in-memory, and more! OAuth providers now automatically persist tokens across restarts, and developers can store arbitrary state without reaching for external databases. This foundation enables long-running sessions, cached credentials, and stateful applications built on MCP.

🔐 OAuth maturity brings months of production learnings into the framework. The new consent screen prevents confused deputy and authorization bypass attacks discovered in earlier versions while providing a clean UX with customizable branding. The OAuth proxy now issues its own tokens with automatic key derivation from client secrets, and RFC 7662 token introspection support enables enterprise auth flows. Path prefix mounting enables OAuth-protected servers to integrate into existing web applications under custom paths like /api, and MCP 1.17+ compliance with RFC 9728 ensures protocol compatibility. Combined with improved error handling and platform-aware token storage, OAuth is now production-ready and security-hardened for serious applications.

FastMCP now supports out-of-the-box authentication with:

Response Caching Middleware dramatically improves performance for expensive operations. Cache tool and resource responses with configurable TTLs, reducing redundant API calls and speeding up repeated queries.

🔄 Server lifespans provide proper initialization and cleanup hooks that run once per server instance instead of per client session. This fixes a long-standing source of confusion in the MCP SDK and enables proper resource management for database connections, background tasks, and other server-level state. Note: this is a breaking behavioral change if you were using the lifespan parameter.

Developer experience improvements include Pydantic input validation for better type safety, icon support for richer UX, RFC 6570 query parameters for resource templates, improved Context API methods (list_resources, list_prompts, get_prompt), and async file/directory resources.

This release includes contributions from 20 new contributors and represents the largest feature set in a while. Thank you to everyone who tested preview builds and filed issues - your feedback shaped these improvements!

What's Changed

New Features 🎉

Enhancements 🔧

... (truncated)

Changelog

Sourced from fastmcp's changelog.


title: "Changelog" icon: "list-check" rss: true

v2.13.0: Cache Me If You Can

FastMCP 2.13 "Cache Me If You Can" represents a fundamental maturation of the framework. After months of community feedback on authentication and state management, this release delivers the infrastructure FastMCP needs to handle production workloads: persistent storage, response caching, and pragmatic OAuth improvements that reflect real-world deployment challenges.

💾 Pluggable storage backends bring persistent state to FastMCP servers. Built on py-key-value-aio, a new library from FastMCP maintainer Bill Easton (@​strawgate), the storage layer provides encrypted disk storage by default, platform-aware token management, and a simple key-value interface for application state. We're excited to bring this elegantly designed library into the FastMCP ecosystem - it's both powerful and remarkably easy to use, including wrappers to add encryption, TTLs, caching, and more to backends ranging from Elasticsearch, Redis, DynamoDB, filesystem, in-memory, and more! OAuth providers now automatically persist tokens across restarts, and developers can store arbitrary state without reaching for external databases. This foundation enables long-running sessions, cached credentials, and stateful applications built on MCP.

🔐 OAuth maturity brings months of production learnings into the framework. The new consent screen prevents confused deputy and authorization bypass attacks discovered in earlier versions while providing a clean UX with customizable branding. The OAuth proxy now issues its own tokens with automatic key derivation from client secrets, and RFC 7662 token introspection support enables enterprise auth flows. Path prefix mounting enables OAuth-protected servers to integrate into existing web applications under custom paths like /api, and MCP 1.17+ compliance with RFC 9728 ensures protocol compatibility. Combined with improved error handling and platform-aware token storage, OAuth is now production-ready and security-hardened for serious applications.

FastMCP now supports out-of-the-box authentication with:

Response Caching Middleware dramatically improves performance for expensive operations. Cache tool and resource responses with configurable TTLs, reducing redundant API calls and speeding up repeated queries.

🔄 Server lifespans provide proper initialization and cleanup hooks that run once per server instance instead of per client session. This fixes a long-standing source of confusion in the MCP SDK and enables proper resource management for database connections, background tasks, and other server-level state. Note: this is a breaking behavioral change if you were using the lifespan parameter.

Developer experience improvements include Pydantic input validation for better type safety, icon support for richer UX, RFC 6570 query parameters for resource templates, improved Context API methods (list_resources, list_prompts, get_prompt), and async file/directory resources.

This release includes contributions from 20 new contributors and represents the largest feature set in a while. Thank you to everyone who tested preview builds and filed issues - your feedback shaped these improvements!

Full Changelog: v2.12.5...v2.13.0

v2.12.5: Safety Pin

FastMCP 2.12.5 is a point release that pins the MCP SDK version below 1.17, which introduced a change affecting FastMCP users with auth providers mounted as part of a larger application. This ensures the .well-known payload appears in the expected location when using FastMCP authentication providers with composite applications.

What's Changed

Fixes 🐞

... (truncated)

Commits

Dependabot compatibility score

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 rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will 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 version will 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 dependency will 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.

Bumps [fastmcp](https://github.com/jlowin/fastmcp) from 2.12.4 to 2.13.0.
- [Release notes](https://github.com/jlowin/fastmcp/releases)
- [Changelog](https://github.com/jlowin/fastmcp/blob/main/docs/changelog.mdx)
- [Commits](jlowin/fastmcp@v2.12.4...v2.13.0)

---
updated-dependencies:
- dependency-name: fastmcp
  dependency-version: 2.13.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
@dependabot dependabot bot added dependencies Pull requests that update a dependency file python Pull requests that update python code labels Nov 7, 2025
@socket-security
Copy link

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedfastmcp@​2.13.097100100100100

View full report

@socket-security
Copy link

Caution

Review the following alerts detected in dependencies.

According to your organization's Security Policy, you must resolve all "Block" alerts before proceeding. Learn more about Socket for GitHub.

Action Severity Alert  (click "▶" to expand/collapse)
Block Low
Embedded URLs or IPs: pypi fastmcp

URLs: https://github.com/jlowin/fastmcp, https://picsum.photos/400/300, https://picsum.photos/300/200, https://bsky.social, http://127.0.0.1:8000/mcp, https://your-app.authkit.app, https://your-env.scalekit.com, https://mozilla.github.io/pdf.js/web/compressed.tracemonkey-pldi-09.pdf, https://github.com/jlowin/fastmcp.git#subdirectory=examples/smart_home, https://surgemsg.com/, https://api.surgemsg.com/messages, https://api.github.com/repos/, https://gofastmcp.com/docs/deployment/server-configuration, https://fastmcp-test-server.example.com, https://dev.example.com, http://oauth.net/core/2.1/#registration, https://modelcontextprotocol.io/specification/2025-06-18/basic/security_best_practices#confused-deputy-problem, https://gofastmcp.com/servers/auth/oauth-proxy#confused-deputy-attacks, https://openid.net/specs/openid-connect-discovery-1_0.html, https://datatracker.ietf.org/doc/html/rfc8414, https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata, https://datatracker.ietf.org/doc/html/rfc8414#section-2, https://oidc.config.url, https://your.server.url, https://auth0.config.url, https://my-server.com, https://login.microsoftonline.com/, https://api.descope.com, https://app.descope.com/apps/inbound, https://app.descope.com/settings/project, https://docs.descope.com/identity-federation/inbound-apps/creating-inbound-apps#method-2-dynamic-client-registration-dcr, https://your-fastmcp-server.com, https://api.github.com/user, https://api.github.com/user/repos, https://github.com/login/oauth/authorize, https://github.com/login/oauth/access_token, https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/oauth2/v1/tokeninfo, https://www.googleapis.com/oauth2/v2/userinfo, https://www.googleapis.com/auth/userinfo.profile, https://accounts.google.com/o/oauth2/v2/auth, https://oauth2.googleapis.com/token, http://fastmcp.example.com, https://auth.example.com/oauth/introspect, https://fastmcp.example.com, https://app.scalekit.com/, https://docs.scalekit.com/mcp/overview/, https://abc123.supabase.co, https://your-fastmcp-server.com/oauth2/callback, https://workos.com/docs/authkit/mcp/integrating/token-verification, https://your-workos-domain.authkit.app, http://127.0.0.1, https://app.example.com/auth/, https://gofastmcp.com/servers/context#http-requests, https://gofastmcp.com/deployment/asgi, https://github.com/jlowin/fastmcp/issues, https://gofastmcp.com/patterns/decorating-methods, https://gofastmcp.com, https://fastmcp.cloud, https://astral.sh/uv/install.sh, https://gofastmcp.com/public/schemas/fastmcp.json/v1.json, https://gofastmcp.com/assets/brand/blue-logo.png, https://api.example.com/v1, http://example.com, http://127.0.0.1:3000/path, https://example.com, https://api.example.com/mcp, ftp://example.com, https://github.com/jlowin/fastmcp/pull/643, http://example.com/api/sse/stream, http://example.com/api/sse, http://example.com/api/sse/, http://example.com/api/sse?param=value, http://example.com/api, http://example.com/asset/image.jpg, https://example.com/assets/file, https://example.com:8080/mcp, https://x.com, https://github.com/modelcontextprotocol/python-sdk/pull/659, https://api.example.com, https://raw.githubusercontent.com/github/rest-api-description/refs/heads/main/descriptions-next/ghes-3.17/ghes-3.17.json, https://api.example.com/users/123, https://api.example.com/, https://api.example.com/v1/users/123, https://api.example.com/users/42, https://api.example.com/search, https://github.com/settings/developers, http://127.0.0.1:9100/auth/callback, https://api.githubcopilot.com/mcp/, http://example.com/data, https://example.com/.well-known/openid-configuration, https://example.com:8000/, https://example.com/authorize, https://example.com/oauth/token, https://example.com/.well-known/jwks.json, https://cognito-idp.us-east-1.amazonaws.com/us-east-1_XXXXXXXXX, https://test.auth.us-east-1.amazoncognito.com/oauth2/authorize, https://test.auth.us-east-1.amazoncognito.com/oauth2/token, https://cognito-idp.us-east-1.amazonaws.com/us-east-1_XXXXXXXXX/.well-known/jwks.json, https://test.auth.us-east-1.amazoncognito.com/oauth2/userInfo, https://example.com/, https://env-example.com, https://env-example.com/, https://myserver.com, https://myserver.com/, https://envserver.com, https://envserver.com/, https://login.microsoftonline.com/my-tenant-id/oauth2/v2.0/authorize, https://login.microsoftonline.com/my-tenant-id/oauth2/v2.0/token, https://login.microsoftonline.com/my-tenant/discovery/v2.0/keys, https://login.microsoftonline.com/my-tenant/v2.0, https://srv.example, https://should.be.ignored, http://env-server.com, http://env-server.com/, https://api.descope.com/P2abc123/.well-known/jwks.json, https://api.descope.com/v1/apps/P2abc123, https://github.com/testuser.png, https://auth.example.com/introspect, https://my-env.scalekit.com, https://env-scalekit.com, https://envserver.com/mcp, https://test-env.scalekit.com, http://test-server.com, http://test-server.com/, https://my-env.scalekit.com/, https://my-env.scalekit.com/keys, https://my-env.scalekit.com/resources/sk_resource_456, https://env123.supabase.co, https://abc123.supabase.co/, https://abc123.supabase.co/auth/v1/.well-known/jwks.json, https://abc123.supabase.co/auth/v1, https://test123.supabase.co, https://test.authkit.app, https://env.authkit.app, https://test.authkit.app/oauth2/authorize, https://test.authkit.app/oauth2/token, https://respectful-lullaby-34-staging.authkit.app, https://auth.example.com, https://my-server.com/.well-known/oauth-protected-resource/api/v1/mcp, https://my-server.com/mcp, https://my-server.com/api/v2/services/mcp, https://test.com, https://myserver.com/register, https://example.com/icon.png, https://test-server.com, https://test-server.com/mcp, https://other-server.com, https://other-server.com/mcp, https://test.example.com, https://evil.example.com, https://wrong-api.example.com, https://test.example.com/.well-known/jwks.json, https://any.example.com, https://any-api.example.com, https://other-api.example.com, https://third-party.example.com, https://my-auth-server.com, https://myserver.example, https://oauth.example.com/authorize, https://oauth.example.com/token, https://proxy.example.com, https://example.com/custom-icon.png, https://auth.example.com/, https://api.example.com/api, https://api.example.com/api/mcp, https://api.example.com/outer/inner, https://api.example.com/outer/inner/mcp, https://auth.example.com/authorize, https://auth.example.com/token, https://auth.example.com/revoke, https://issuer.example.com, https://docs.example.com, https://auth.com/authorize, https://auth.com/token, https://api.com, https://resource.example.com, http://127.0.0.1:3000, https://claude.ai/api/mcp/auth_callback, https://app.example.com/, https://app.example.com/callback, https://anywhere.com:9999/path, https://accounts.google.com/.well-known/openid-configuration, http://example.com:3000/callback, https://api.example.com/callback, https://example.com/callback, http://app.example.com/callback, https://app.example.com:8080/auth/callback, https://api.example.com:3000/auth/redirect, http://app.example.com:8080/auth/callback, http://127.0.0.1:8080, https://app.example.com, https://api.trusted.io/auth, https://other.example.com/callback, http://example.com/callback, https://api.example.com/.well-known/oauth-protected-resource/mcp, https://api.example.com/v1/, https://api.example.com/v1/.well-known/oauth-protected-resource/mcp, https://api.example.com/v1/mcp, https://auth1.example.com, https://auth2.example.com, https://auth1.example.com/, https://auth2.example.com/, https://accounts.google.com, https://accounts.google.com/, https://doc.my-server.com/resource-docs, http://test.com, https://resource.example.com/, https://github.com/jlowin/fastmcp/issues/1300, http://example.com/mcp/, https://mcptest.com, https://client.example.com/callback, https://auth.example.com/register, https://docs.example.com/, https://client.example.com/other-callback, https://client.example.com, https://attacker.example.com/callback, https://example.com/tool-icon.png, https://example.com/resource-icon.png, https://example.com/template-icon.png, https://example.com/prompt-icon.png, https://example.com/icon-48.png, https://example.com/icon-96.png, https://example.com/icon.svg, http://127.0.0.1:9999/sse/, http://example.com/path, https://github.com/jlowin/fastmcp/issues/1369, http://cyaninc.com/json-schemas/market-v1/product-constraints, https://example.com/calculator.png, https://example.com/data.png, https://example.com/user.png, https://example.com/analyze.png, https://example.com/tool-small.png, https://example.com/tool-large.png, https://example.com/v1-tool.png, https://example.com/server.png, https://example.com/tool.png

Location: Package overview

From: server/hello/requirements.txtpypi/[email protected]

ℹ Read more on: This package | This alert | What are URL strings?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at [email protected].

Suggestion: Review all remote URLs to ensure they are intentional, pointing to trusted sources, and not being used for data exfiltration or loading untrusted code at runtime.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore pypi/[email protected]. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

Block Low
Embedded URLs or IPs: pypi fastmcp

URLs: https://gofastmcp.com/docs/deployment/server-configuration, https://fastmcp-test-server.example.com, https://dev.example.com, http://oauth.net/core/2.1/#registration, https://modelcontextprotocol.io/specification/2025-06-18/basic/security_best_practices#confused-deputy-problem, https://gofastmcp.com/servers/auth/oauth-proxy#confused-deputy-attacks, https://openid.net/specs/openid-connect-discovery-1_0.html, https://datatracker.ietf.org/doc/html/rfc8414, https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata, https://datatracker.ietf.org/doc/html/rfc8414#section-2, https://oidc.config.url, https://your.server.url, https://auth0.config.url, https://my-server.com, https://login.microsoftonline.com/, https://api.descope.com, https://app.descope.com/apps/inbound, https://app.descope.com/settings/project, https://docs.descope.com/identity-federation/inbound-apps/creating-inbound-apps#method-2-dynamic-client-registration-dcr, https://your-fastmcp-server.com, https://api.github.com/user, https://api.github.com/user/repos, https://github.com/login/oauth/authorize, https://github.com/login/oauth/access_token, https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/oauth2/v1/tokeninfo, https://www.googleapis.com/oauth2/v2/userinfo, https://www.googleapis.com/auth/userinfo.profile, https://accounts.google.com/o/oauth2/v2/auth, https://oauth2.googleapis.com/token, http://fastmcp.example.com, https://auth.example.com/oauth/introspect, https://fastmcp.example.com, https://app.scalekit.com/, https://your-env.scalekit.com, https://docs.scalekit.com/mcp/overview/, https://abc123.supabase.co, https://your-app.authkit.app, https://your-fastmcp-server.com/oauth2/callback, https://workos.com/docs/authkit/mcp/integrating/token-verification, https://your-workos-domain.authkit.app, http://127.0.0.1, https://app.example.com/auth/, https://gofastmcp.com/servers/context#http-requests, https://gofastmcp.com/deployment/asgi, https://github.com/jlowin/fastmcp/issues, https://gofastmcp.com/patterns/decorating-methods, https://gofastmcp.com, https://fastmcp.cloud, https://astral.sh/uv/install.sh, https://gofastmcp.com/public/schemas/fastmcp.json/v1.json, https://gofastmcp.com/assets/brand/blue-logo.png

Location: Package overview

From: ?pypi/[email protected]

ℹ Read more on: This package | This alert | What are URL strings?

Next steps: Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at [email protected].

Suggestion: Review all remote URLs to ensure they are intentional, pointing to trusted sources, and not being used for data exfiltration or loading untrusted code at runtime.

Mark the package as acceptable risk. To ignore this alert only in this pull request, reply with the comment @SocketSecurity ignore pypi/[email protected]. You can also ignore all packages with @SocketSecurity ignore-all. To ignore an alert for all future pull requests, use Socket's Dashboard to change the triage state of this alert.

View full report

@dependabot @github
Copy link
Contributor Author

dependabot bot commented on behalf of github Nov 13, 2025

Looks like fastmcp is up-to-date now, so this is no longer needed.

@dependabot dependabot bot closed this Nov 13, 2025
@dependabot dependabot bot deleted the dependabot/pip/server/hello/fastmcp-2.13.0 branch November 13, 2025 05:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants