mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-09 07:09:11 +02:00
Normalize repo references to PrefectHQ/fastmcp casing (#3218)
This commit is contained in:
parent
78010ef06e
commit
a2efd686a9
43 changed files with 2609 additions and 2609 deletions
4
.github/workflows/martian-triage-issue.yml
vendored
4
.github/workflows/martian-triage-issue.yml
vendored
|
|
@ -167,8 +167,8 @@ jobs:
|
|||
|
||||
| Repository | Issue or PR | Relevance |
|
||||
| --- | --- | --- |
|
||||
| prefecthq/fastmcp | [Add matrix operations support](https://github.com/prefecthq/fastmcp/pull/680) | This pull request directly addresses the feature request for adding matrix operations to the calculator. |
|
||||
| prefecthq/fastmcp | [Add matrix operations support](https://github.com/prefecthq/fastmcp/issues/681) | This issue directly addresses the feature request for adding matrix operations to the calculator. |
|
||||
| PrefectHQ/fastmcp | [Add matrix operations support](https://github.com/PrefectHQ/fastmcp/pull/680) | This pull request directly addresses the feature request for adding matrix operations to the calculator. |
|
||||
| PrefectHQ/fastmcp | [Add matrix operations support](https://github.com/PrefectHQ/fastmcp/issues/681) | This issue directly addresses the feature request for adding matrix operations to the calculator. |
|
||||
</details>
|
||||
|
||||
<details>
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@
|
|||
[](https://gofastmcp.com)
|
||||
[](https://discord.gg/uu8dJCgttd)
|
||||
[](https://pypi.org/project/fastmcp)
|
||||
[](https://github.com/prefecthq/fastmcp/actions/workflows/run-tests.yml)
|
||||
[](https://github.com/prefecthq/fastmcp/blob/main/LICENSE)
|
||||
[](https://github.com/PrefectHQ/fastmcp/actions/workflows/run-tests.yml)
|
||||
[](https://github.com/PrefectHQ/fastmcp/blob/main/LICENSE)
|
||||
|
||||
<a href="https://trendshift.io/repositories/13266" target="_blank"><img src="https://trendshift.io/api/badge/repositories/13266" alt="prefecthq%2Ffastmcp | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -11,6 +11,6 @@ FastMCP v2.x receives security updates. Earlier versions are no longer supported
|
|||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Please report security vulnerabilities privately using [GitHub's security advisory feature](https://github.com/prefecthq/fastmcp/security/advisories/new).
|
||||
Please report security vulnerabilities privately using [GitHub's security advisory feature](https://github.com/PrefectHQ/fastmcp/security/advisories/new).
|
||||
|
||||
Do not open public issues for security concerns.
|
||||
|
|
|
|||
2758
docs/changelog.mdx
2758
docs/changelog.mdx
File diff suppressed because it is too large
Load diff
|
|
@ -168,5 +168,5 @@ client = Client(
|
|||
Tool execution happens on the server side. The client's role is to pass tools to the LLM and return the LLM's response (which may include tool use requests). The server then executes the tools and may send follow-up sampling requests with tool results.
|
||||
|
||||
<Tip>
|
||||
To implement a custom sampling handler, see the [handler source code](https://github.com/prefecthq/fastmcp/tree/main/src/fastmcp/client/sampling/handlers) as a reference.
|
||||
To implement a custom sampling handler, see the [handler source code](https://github.com/PrefectHQ/fastmcp/tree/main/src/fastmcp/client/sampling/handlers) as a reference.
|
||||
</Tip>
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ Discover exemplary MCP servers and implementations created by our community. The
|
|||
|
||||
### Community Examples
|
||||
|
||||
Have you built something interesting with FastMCP? We'd love to feature high-quality examples here! Start a [discussion on GitHub](https://github.com/prefecthq/fastmcp/discussions) to share your project.
|
||||
Have you built something interesting with FastMCP? We'd love to feature high-quality examples here! Start a [discussion on GitHub](https://github.com/PrefectHQ/fastmcp/discussions) to share your project.
|
||||
|
||||
## Contributing
|
||||
|
||||
|
|
@ -56,7 +56,7 @@ To get your project featured:
|
|||
1. Ensure your project demonstrates best practices
|
||||
2. Include comprehensive documentation
|
||||
3. Add clear usage examples
|
||||
4. Open a discussion in our [GitHub Discussions](https://github.com/prefecthq/fastmcp/discussions)
|
||||
4. Open a discussion in our [GitHub Discussions](https://github.com/PrefectHQ/fastmcp/discussions)
|
||||
|
||||
We review submissions regularly and feature projects that provide value to the FastMCP community.
|
||||
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ To contribute to FastMCP, you'll need to set up a development environment with a
|
|||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://github.com/prefecthq/fastmcp.git
|
||||
git clone https://github.com/PrefectHQ/fastmcp.git
|
||||
cd fastmcp
|
||||
|
||||
# Install all dependencies including dev tools
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ This document tracks major features in FastMCP v3.0 for release notes preparatio
|
|||
|
||||
### SamplingTool Conversion Helpers
|
||||
|
||||
Server tools (FunctionTool and TransformedTool) can now be passed directly to sampling methods via `SamplingTool.from_callable_tool()` ([#3062](https://github.com/prefecthq/fastmcp/pull/3062)). Previously, tools defined with `@mcp.tool` had to be recreated as functions for use in `ctx.sample()`. Now `ctx.sample()` and `ctx.sample_step()` accept these tool instances directly.
|
||||
Server tools (FunctionTool and TransformedTool) can now be passed directly to sampling methods via `SamplingTool.from_callable_tool()` ([#3062](https://github.com/PrefectHQ/fastmcp/pull/3062)). Previously, tools defined with `@mcp.tool` had to be recreated as functions for use in `ctx.sample()`. Now `ctx.sample()` and `ctx.sample_step()` accept these tool instances directly.
|
||||
|
||||
```python
|
||||
@mcp.tool
|
||||
|
|
@ -25,7 +25,7 @@ result = await ctx.sample(
|
|||
|
||||
### Concurrent Tool Execution in Sampling
|
||||
|
||||
When an LLM returns multiple tool calls in a single sampling response, they can now be executed concurrently ([#3022](https://github.com/prefecthq/fastmcp/pull/3022)). Default behavior remains sequential; opt in with `tool_concurrency`. Tools can declare `sequential=True` to force sequential execution even when concurrency is enabled.
|
||||
When an LLM returns multiple tool calls in a single sampling response, they can now be executed concurrently ([#3022](https://github.com/PrefectHQ/fastmcp/pull/3022)). Default behavior remains sequential; opt in with `tool_concurrency`. Tools can declare `sequential=True` to force sequential execution even when concurrency is enabled.
|
||||
|
||||
```python
|
||||
result = await context.sample(
|
||||
|
|
@ -37,7 +37,7 @@ result = await context.sample(
|
|||
|
||||
### OpenAPI `validate_output` Option
|
||||
|
||||
`OpenAPIProvider` and `FastMCP.from_openapi()` now accept `validate_output=False` to skip output schema validation ([#3134](https://github.com/prefecthq/fastmcp/pull/3134)). Useful when backends don't conform to their own OpenAPI response schemas — structured JSON still flows through, only the strict schema checking is disabled.
|
||||
`OpenAPIProvider` and `FastMCP.from_openapi()` now accept `validate_output=False` to skip output schema validation ([#3134](https://github.com/PrefectHQ/fastmcp/pull/3134)). Useful when backends don't conform to their own OpenAPI response schemas — structured JSON still flows through, only the strict schema checking is disabled.
|
||||
|
||||
```python
|
||||
mcp = FastMCP.from_openapi(
|
||||
|
|
@ -49,7 +49,7 @@ mcp = FastMCP.from_openapi(
|
|||
|
||||
### Auth Token Injection and Azure OBO Dependencies
|
||||
|
||||
New dependency injection for accessing the authenticated user's token directly in tool parameters ([#2918](https://github.com/prefecthq/fastmcp/pull/2918)). Works with any auth provider.
|
||||
New dependency injection for accessing the authenticated user's token directly in tool parameters ([#2918](https://github.com/PrefectHQ/fastmcp/pull/2918)). Works with any auth provider.
|
||||
|
||||
```python
|
||||
from fastmcp.server.dependencies import CurrentAccessToken, TokenClaim
|
||||
|
|
@ -77,19 +77,19 @@ async def get_emails(
|
|||
|
||||
### `generate-cli` Agent Skill Generation
|
||||
|
||||
`fastmcp generate-cli` now produces a `SKILL.md` alongside the CLI script ([#3115](https://github.com/prefecthq/fastmcp/pull/3115)) — a Claude Code agent skill with pre-computed invocation syntax for every tool. Agents reading the skill can call tools immediately without running `--help`. On by default; pass `--no-skill` to opt out.
|
||||
`fastmcp generate-cli` now produces a `SKILL.md` alongside the CLI script ([#3115](https://github.com/PrefectHQ/fastmcp/pull/3115)) — a Claude Code agent skill with pre-computed invocation syntax for every tool. Agents reading the skill can call tools immediately without running `--help`. On by default; pass `--no-skill` to opt out.
|
||||
|
||||
### Background Task Notification Queue
|
||||
|
||||
Background tasks now use a distributed Redis notification queue for reliable delivery ([#2906](https://github.com/prefecthq/fastmcp/pull/2906)). Elicitation switches from polling to BLPOP (single blocking call instead of ~7,200 round-trips/hour), and notification delivery retries up to 3x with TTL-based expiration.
|
||||
Background tasks now use a distributed Redis notification queue for reliable delivery ([#2906](https://github.com/PrefectHQ/fastmcp/pull/2906)). Elicitation switches from polling to BLPOP (single blocking call instead of ~7,200 round-trips/hour), and notification delivery retries up to 3x with TTL-based expiration.
|
||||
|
||||
### Async Auth Checks
|
||||
|
||||
Auth check functions can now be `async`, enabling authorization decisions that depend on asynchronous operations like reading server state via `Context.get_state` or calling external services ([#3150](https://github.com/prefecthq/fastmcp/issues/3150)). Sync and async checks can be freely mixed. Previously, passing an async function as an auth check would silently pass (coroutine objects are truthy).
|
||||
Auth check functions can now be `async`, enabling authorization decisions that depend on asynchronous operations like reading server state via `Context.get_state` or calling external services ([#3150](https://github.com/PrefectHQ/fastmcp/issues/3150)). Sync and async checks can be freely mixed. Previously, passing an async function as an auth check would silently pass (coroutine objects are truthy).
|
||||
|
||||
### Optional `$ref` Dereferencing in Schemas
|
||||
|
||||
Schema `$ref` dereferencing — which inlines all `$defs` for compatibility with MCP clients that don't handle `$ref` — is now controlled by the `dereference_schemas` constructor kwarg ([#3141](https://github.com/prefecthq/fastmcp/issues/3141)). Default is `True` (dereference on) because the non-compliant clients are popular and the failure mode is silent breakage that server authors can't diagnose. Opt out when you know your clients handle `$ref` and want smaller schemas:
|
||||
Schema `$ref` dereferencing — which inlines all `$defs` for compatibility with MCP clients that don't handle `$ref` — is now controlled by the `dereference_schemas` constructor kwarg ([#3141](https://github.com/PrefectHQ/fastmcp/issues/3141)). Default is `True` (dereference on) because the non-compliant clients are popular and the failure mode is silent breakage that server authors can't diagnose. Opt out when you know your clients handle `$ref` and want smaller schemas:
|
||||
|
||||
```python
|
||||
mcp = FastMCP("my-server", dereference_schemas=False)
|
||||
|
|
@ -125,7 +125,7 @@ The `_deprecated_settings` attribute and `.settings` property are also removed.
|
|||
|
||||
### Breaking: `ui=` Renamed to `app=`
|
||||
|
||||
The MCP Apps decorator parameter has been renamed from `ui=ToolUI(...)` / `ui=ResourceUI(...)` to `app=AppConfig(...)` ([#3117](https://github.com/prefecthq/fastmcp/pull/3117)). `ToolUI` and `ResourceUI` are consolidated into a single `AppConfig` class. Wire format is unchanged. See the MCP Apps section under beta2 for full details.
|
||||
The MCP Apps decorator parameter has been renamed from `ui=ToolUI(...)` / `ui=ResourceUI(...)` to `app=AppConfig(...)` ([#3117](https://github.com/PrefectHQ/fastmcp/pull/3117)). `ToolUI` and `ResourceUI` are consolidated into a single `AppConfig` class. Wire format is unchanged. See the MCP Apps section under beta2 for full details.
|
||||
## 3.0.0beta2
|
||||
|
||||
### CLI: `fastmcp list` and `fastmcp call`
|
||||
|
|
@ -179,11 +179,11 @@ Documentation: [Client CLI](/clients/cli)
|
|||
|
||||
### CLI: Expanded Reload File Watching
|
||||
|
||||
The `--reload` flag now watches a comprehensive set of file types, making it suitable for MCP apps with frontend bundles ([#3028](https://github.com/prefecthq/fastmcp/pull/3028)). Previously limited to `.py` files, it now watches JavaScript, TypeScript, HTML, CSS, config files, and media assets.
|
||||
The `--reload` flag now watches a comprehensive set of file types, making it suitable for MCP apps with frontend bundles ([#3028](https://github.com/PrefectHQ/fastmcp/pull/3028)). Previously limited to `.py` files, it now watches JavaScript, TypeScript, HTML, CSS, config files, and media assets.
|
||||
|
||||
### CLI: fastmcp install stdio
|
||||
|
||||
The new `fastmcp install stdio` command generates full `uv run` commands for running FastMCP servers over stdio ([#3032](https://github.com/prefecthq/fastmcp/pull/3032)).
|
||||
The new `fastmcp install stdio` command generates full `uv run` commands for running FastMCP servers over stdio ([#3032](https://github.com/PrefectHQ/fastmcp/pull/3032)).
|
||||
|
||||
```bash
|
||||
# Generate command for a server
|
||||
|
|
@ -244,7 +244,7 @@ Documentation: [CIMD Authentication](/clients/auth/cimd), [OAuth Proxy CIMD conf
|
|||
|
||||
### Pre-Registered OAuth Clients
|
||||
|
||||
The `OAuth` client helper now accepts `client_id` and `client_secret` parameters for servers where the client is already registered ([#3086](https://github.com/prefecthq/fastmcp/pull/3086)). This bypasses Dynamic Client Registration entirely — useful when DCR is disabled, or when the server has pre-provisioned credentials for your application.
|
||||
The `OAuth` client helper now accepts `client_id` and `client_secret` parameters for servers where the client is already registered ([#3086](https://github.com/PrefectHQ/fastmcp/pull/3086)). This bypasses Dynamic Client Registration entirely — useful when DCR is disabled, or when the server has pre-provisioned credentials for your application.
|
||||
|
||||
```python
|
||||
from fastmcp import Client
|
||||
|
|
@ -267,7 +267,7 @@ Documentation: [Pre-Registered Clients](/clients/auth/oauth#pre-registered-clien
|
|||
|
||||
### CLI: `fastmcp generate-cli`
|
||||
|
||||
`fastmcp generate-cli` connects to any MCP server, reads its tool schemas, and writes a standalone Python CLI script where every tool becomes a typed subcommand with flags, help text, and tab completion ([#3065](https://github.com/prefecthq/fastmcp/pull/3065)). The insight is that MCP tool schemas already contain everything a CLI framework needs — parameter names, types, descriptions, required/optional status — so the generator maps JSON Schema directly into [cyclopts](https://cyclopts.readthedocs.io/) commands.
|
||||
`fastmcp generate-cli` connects to any MCP server, reads its tool schemas, and writes a standalone Python CLI script where every tool becomes a typed subcommand with flags, help text, and tab completion ([#3065](https://github.com/PrefectHQ/fastmcp/pull/3065)). The insight is that MCP tool schemas already contain everything a CLI framework needs — parameter names, types, descriptions, required/optional status — so the generator maps JSON Schema directly into [cyclopts](https://cyclopts.readthedocs.io/) commands.
|
||||
|
||||
```bash
|
||||
# Generate from any server spec
|
||||
|
|
@ -287,7 +287,7 @@ Documentation: [Generate CLI](/clients/generate-cli)
|
|||
|
||||
### CLI: Goose Integration
|
||||
|
||||
New `fastmcp install goose` command that generates a `goose://extension?...` deeplink URL and opens it, prompting Goose to install the server as a STDIO extension ([#3040](https://github.com/prefecthq/fastmcp/pull/3040)). Goose requires `uvx` rather than `uv run`, so the command builds the appropriate invocation automatically.
|
||||
New `fastmcp install goose` command that generates a `goose://extension?...` deeplink URL and opens it, prompting Goose to install the server as a STDIO extension ([#3040](https://github.com/PrefectHQ/fastmcp/pull/3040)). Goose requires `uvx` rather than `uv run`, so the command builds the appropriate invocation automatically.
|
||||
|
||||
```bash
|
||||
fastmcp install goose server.py
|
||||
|
|
@ -298,7 +298,7 @@ Also adds a full integration guide at [Goose Integration](/integrations/goose).
|
|||
|
||||
### ResponseLimitingMiddleware
|
||||
|
||||
New middleware for controlling tool response sizes, preventing large outputs from overwhelming LLM context windows ([#3072](https://github.com/prefecthq/fastmcp/pull/3072)). Text responses are truncated at UTF-8 character boundaries; structured responses (tools with `output_schema`) raise `ToolError` since truncation would corrupt the schema.
|
||||
New middleware for controlling tool response sizes, preventing large outputs from overwhelming LLM context windows ([#3072](https://github.com/PrefectHQ/fastmcp/pull/3072)). Text responses are truncated at UTF-8 character boundaries; structured responses (tools with `output_schema`) raise `ToolError` since truncation would corrupt the schema.
|
||||
|
||||
```python
|
||||
from fastmcp.server.middleware.response_limiting import ResponseLimitingMiddleware
|
||||
|
|
@ -324,7 +324,7 @@ Documentation: [Middleware](/servers/middleware)
|
|||
|
||||
### Background Task Context (SEP-1686)
|
||||
|
||||
`Context` now works transparently in background tasks running in Docket workers ([#2905](https://github.com/prefecthq/fastmcp/pull/2905)). Previously, tools running as background tasks couldn't use `ctx.elicit()` because there was no active request context. Now, when a tool executes in a Docket worker, `Context` detects this via its `task_id` and routes elicitation through Redis-based coordination: the task sets its status to `input_required`, sends a `notifications/tasks/updated` notification with elicitation metadata, and waits for the client to respond via `tasks/sendInput`.
|
||||
`Context` now works transparently in background tasks running in Docket workers ([#2905](https://github.com/PrefectHQ/fastmcp/pull/2905)). Previously, tools running as background tasks couldn't use `ctx.elicit()` because there was no active request context. Now, when a tool executes in a Docket worker, `Context` detects this via its `task_id` and routes elicitation through Redis-based coordination: the task sets its status to `input_required`, sends a `notifications/tasks/updated` notification with elicitation metadata, and waits for the client to respond via `tasks/sendInput`.
|
||||
|
||||
```python
|
||||
@mcp.tool(task=True)
|
||||
|
|
@ -342,7 +342,7 @@ async def interactive_task(ctx: Context) -> str:
|
|||
|
||||
### `require_auth` Removed
|
||||
|
||||
The `require_auth` authorization check introduced in beta1 has been removed in favor of scope-based authorization via `require_scopes` ([#3103](https://github.com/prefecthq/fastmcp/pull/3103)). Since configuring an `AuthProvider` already rejects unauthenticated requests at the transport level, `require_auth` was redundant — `require_scopes` provides the same guarantee with better granularity. The beta1 Component Authorization section has been updated to reflect this.
|
||||
The `require_auth` authorization check introduced in beta1 has been removed in favor of scope-based authorization via `require_scopes` ([#3103](https://github.com/PrefectHQ/fastmcp/pull/3103)). Since configuring an `AuthProvider` already rejects unauthenticated requests at the transport level, `require_auth` was redundant — `require_scopes` provides the same guarantee with better granularity. The beta1 Component Authorization section has been updated to reflect this.
|
||||
|
||||
### MCP Apps (SDK Compatibility)
|
||||
|
||||
|
|
@ -420,7 +420,7 @@ Implementation: `src/fastmcp/server/apps.py` (models and constants), with integr
|
|||
|
||||
### Provider-Based Architecture
|
||||
|
||||
v3.0 introduces a provider-based component system that replaces v2's static-only registration ([#2622](https://github.com/prefecthq/fastmcp/pull/2622)). Providers dynamically source tools, resources, templates, and prompts at runtime.
|
||||
v3.0 introduces a provider-based component system that replaces v2's static-only registration ([#2622](https://github.com/PrefectHQ/fastmcp/pull/2622)). Providers dynamically source tools, resources, templates, and prompts at runtime.
|
||||
|
||||
**Core abstraction** (`src/fastmcp/server/providers/base.py`):
|
||||
```python
|
||||
|
|
@ -514,7 +514,7 @@ main.add_provider(provider)
|
|||
|
||||
### Transforms
|
||||
|
||||
Transforms modify components (tools, resources, prompts) as they flow from providers to clients ([#2836](https://github.com/prefecthq/fastmcp/pull/2836)). They use a middleware pattern where each transform receives a `call_next` callable to continue the chain.
|
||||
Transforms modify components (tools, resources, prompts) as they flow from providers to clients ([#2836](https://github.com/PrefectHQ/fastmcp/pull/2836)). They use a middleware pattern where each transform receives a `call_next` callable to continue the chain.
|
||||
|
||||
**Built-in transforms** (`src/fastmcp/server/transforms/`):
|
||||
|
||||
|
|
@ -679,7 +679,7 @@ Works at both server and provider level. Supports:
|
|||
|
||||
#### Per-Session Visibility
|
||||
|
||||
Server-level visibility changes affect all connected clients. For per-session control, use `Context` methods that apply rules only to the current session ([#2917](https://github.com/prefecthq/fastmcp/pull/2917)):
|
||||
Server-level visibility changes affect all connected clients. For per-session control, use `Context` methods that apply rules only to the current session ([#2917](https://github.com/PrefectHQ/fastmcp/pull/2917)):
|
||||
|
||||
```python
|
||||
from fastmcp import FastMCP
|
||||
|
|
@ -838,7 +838,7 @@ The `@` is always present (even for unversioned components) to enable unambiguou
|
|||
|
||||
### Type-Safe Canonical Results
|
||||
|
||||
v3.0 introduces type-safe result classes that provide explicit control over component responses while supporting MCP runtime metadata: `ToolResult` ([#2736](https://github.com/prefecthq/fastmcp/pull/2736)), `ResourceResult` ([#2734](https://github.com/prefecthq/fastmcp/pull/2734)), and `PromptResult` ([#2738](https://github.com/prefecthq/fastmcp/pull/2738)).
|
||||
v3.0 introduces type-safe result classes that provide explicit control over component responses while supporting MCP runtime metadata: `ToolResult` ([#2736](https://github.com/PrefectHQ/fastmcp/pull/2736)), `ResourceResult` ([#2734](https://github.com/PrefectHQ/fastmcp/pull/2734)), and `PromptResult` ([#2738](https://github.com/PrefectHQ/fastmcp/pull/2738)).
|
||||
|
||||
#### ToolResult
|
||||
|
||||
|
|
@ -936,7 +936,7 @@ Requires Docket server for task scheduling and result polling.
|
|||
|
||||
### Decorators Return Functions
|
||||
|
||||
v3.0 changes what decorators (`@tool`, `@resource`, `@prompt`) return ([#2856](https://github.com/prefecthq/fastmcp/pull/2856)). Decorators now return the original function unchanged, rather than transforming it into a component object.
|
||||
v3.0 changes what decorators (`@tool`, `@resource`, `@prompt`) return ([#2856](https://github.com/PrefectHQ/fastmcp/pull/2856)). Decorators now return the original function unchanged, rather than transforming it into a component object.
|
||||
|
||||
**v3 behavior (default):**
|
||||
```python
|
||||
|
|
@ -968,7 +968,7 @@ Environment variable: `FASTMCP_DECORATOR_MODE=object`
|
|||
|
||||
### CLI Auto-Reload
|
||||
|
||||
The `--reload` flag enables file watching with automatic server restarts for development ([#2816](https://github.com/prefecthq/fastmcp/pull/2816)).
|
||||
The `--reload` flag enables file watching with automatic server restarts for development ([#2816](https://github.com/PrefectHQ/fastmcp/pull/2816)).
|
||||
|
||||
```bash
|
||||
# Watch for changes and restart
|
||||
|
|
@ -997,7 +997,7 @@ fastmcp dev inspector server.py # Includes --reload by default
|
|||
|
||||
### Component Authorization
|
||||
|
||||
v3.0 introduces callable-based authorization for tools, resources, and prompts ([#2855](https://github.com/prefecthq/fastmcp/pull/2855)).
|
||||
v3.0 introduces callable-based authorization for tools, resources, and prompts ([#2855](https://github.com/PrefectHQ/fastmcp/pull/2855)).
|
||||
|
||||
**Component-level auth**:
|
||||
|
||||
|
|
@ -1053,7 +1053,7 @@ v3.0 introduces `FileSystemProvider`, a fundamentally different approach to orga
|
|||
|
||||
**The problem it solves**: Traditional servers require coordination between files—either tool files import the server (creating coupling) or the server imports all tool modules (creating a registry bottleneck). FileSystemProvider removes this coupling entirely.
|
||||
|
||||
**Usage** ([#2823](https://github.com/prefecthq/fastmcp/pull/2823)):
|
||||
**Usage** ([#2823](https://github.com/PrefectHQ/fastmcp/pull/2823)):
|
||||
|
||||
```python
|
||||
from fastmcp import FastMCP
|
||||
|
|
@ -1076,7 +1076,7 @@ def greet(name: str) -> str:
|
|||
```
|
||||
|
||||
Features:
|
||||
- **Standalone decorators**: `@tool`, `@resource`, `@prompt` from `fastmcp.tools`, `fastmcp.resources`, `fastmcp.prompts` ([#2832](https://github.com/prefecthq/fastmcp/pull/2832))
|
||||
- **Standalone decorators**: `@tool`, `@resource`, `@prompt` from `fastmcp.tools`, `fastmcp.resources`, `fastmcp.prompts` ([#2832](https://github.com/PrefectHQ/fastmcp/pull/2832))
|
||||
- **Reload mode**: `FileSystemProvider("mcp/", reload=True)` re-scans on every request for development
|
||||
- **Package support**: Directories with `__init__.py` support relative imports
|
||||
- **Warning deduplication**: Broken imports warn once per file modification
|
||||
|
|
@ -1087,7 +1087,7 @@ Documentation: [FileSystemProvider](/servers/providers/filesystem)
|
|||
|
||||
### SkillsProvider
|
||||
|
||||
v3.0 introduces `SkillsProvider` for exposing agent skills as MCP resources ([#2944](https://github.com/prefecthq/fastmcp/pull/2944)). Skills are directories containing instructions and supporting files that teach AI assistants how to perform tasks—used by Claude Code, Cursor, VS Code Copilot, and other AI coding tools.
|
||||
v3.0 introduces `SkillsProvider` for exposing agent skills as MCP resources ([#2944](https://github.com/PrefectHQ/fastmcp/pull/2944)). Skills are directories containing instructions and supporting files that teach AI assistants how to perform tasks—used by Claude Code, Cursor, VS Code Copilot, and other AI coding tools.
|
||||
|
||||
**Usage**:
|
||||
|
||||
|
|
@ -1130,7 +1130,7 @@ Documentation: [Skills Provider](/servers/providers/skills)
|
|||
|
||||
### OpenTelemetry Tracing
|
||||
|
||||
v3.0 adds OpenTelemetry instrumentation for observability into server and client operations ([#2869](https://github.com/prefecthq/fastmcp/pull/2869)).
|
||||
v3.0 adds OpenTelemetry instrumentation for observability into server and client operations ([#2869](https://github.com/PrefectHQ/fastmcp/pull/2869)).
|
||||
|
||||
**Server spans**: Created for tool calls, resource reads, and prompt renders with attributes including component key, provider type, session ID, and auth context.
|
||||
|
||||
|
|
@ -1158,7 +1158,7 @@ Documentation: [Telemetry](/servers/telemetry)
|
|||
|
||||
### Pagination
|
||||
|
||||
v3.0 adds pagination support for list operations when servers expose many components ([#2903](https://github.com/prefecthq/fastmcp/pull/2903)).
|
||||
v3.0 adds pagination support for list operations when servers expose many components ([#2903](https://github.com/PrefectHQ/fastmcp/pull/2903)).
|
||||
|
||||
```python
|
||||
from fastmcp import FastMCP
|
||||
|
|
@ -1184,7 +1184,7 @@ Documentation: [Pagination](/servers/pagination)
|
|||
|
||||
### Composable Lifespans
|
||||
|
||||
Lifespans can be combined with the `|` operator for modular setup/teardown ([#2828](https://github.com/prefecthq/fastmcp/pull/2828)):
|
||||
Lifespans can be combined with the `|` operator for modular setup/teardown ([#2828](https://github.com/PrefectHQ/fastmcp/pull/2828)):
|
||||
|
||||
```python
|
||||
from fastmcp import FastMCP
|
||||
|
|
@ -1225,7 +1225,7 @@ Documentation: [Lifespan](/servers/lifespan)
|
|||
|
||||
### Tool Timeout
|
||||
|
||||
Tools can limit foreground execution time with a `timeout` parameter ([#2872](https://github.com/prefecthq/fastmcp/pull/2872)):
|
||||
Tools can limit foreground execution time with a `timeout` parameter ([#2872](https://github.com/PrefectHQ/fastmcp/pull/2872)):
|
||||
|
||||
```python
|
||||
@mcp.tool(timeout=30.0)
|
||||
|
|
@ -1242,7 +1242,7 @@ Note: This timeout applies to foreground execution only. Background tasks (`task
|
|||
|
||||
### PingMiddleware
|
||||
|
||||
Sends periodic server-to-client pings to keep long-lived connections alive ([#2838](https://github.com/prefecthq/fastmcp/pull/2838)):
|
||||
Sends periodic server-to-client pings to keep long-lived connections alive ([#2838](https://github.com/PrefectHQ/fastmcp/pull/2838)):
|
||||
|
||||
```python
|
||||
from fastmcp import FastMCP
|
||||
|
|
@ -1258,7 +1258,7 @@ The middleware starts a background ping task on first message from each session,
|
|||
|
||||
### Context.transport Property
|
||||
|
||||
Tools can detect which transport is active ([#2850](https://github.com/prefecthq/fastmcp/pull/2850)):
|
||||
Tools can detect which transport is active ([#2850](https://github.com/PrefectHQ/fastmcp/pull/2850)):
|
||||
|
||||
```python
|
||||
from fastmcp import FastMCP, Context
|
||||
|
|
@ -1278,7 +1278,7 @@ Returns `Literal["stdio", "sse", "streamable-http"]` when running, or `None` out
|
|||
|
||||
### Automatic Threadpool for Sync Functions
|
||||
|
||||
Synchronous tools, resources, and prompts now automatically run in a threadpool, preventing event loop blocking during concurrent requests ([#2865](https://github.com/prefecthq/fastmcp/pull/2865)):
|
||||
Synchronous tools, resources, and prompts now automatically run in a threadpool, preventing event loop blocking during concurrent requests ([#2865](https://github.com/PrefectHQ/fastmcp/pull/2865)):
|
||||
|
||||
```python
|
||||
import time
|
||||
|
|
@ -1295,7 +1295,7 @@ Three concurrent calls now execute in parallel (~10s) rather than sequentially (
|
|||
|
||||
### CLI Update Notifications
|
||||
|
||||
The CLI notifies users when a newer FastMCP version is available on PyPI ([#2840](https://github.com/prefecthq/fastmcp/pull/2840)).
|
||||
The CLI notifies users when a newer FastMCP version is available on PyPI ([#2840](https://github.com/PrefectHQ/fastmcp/pull/2840)).
|
||||
|
||||
**Setting**: `FASTMCP_CHECK_FOR_UPDATES`
|
||||
- `"stable"` - Check for stable releases (default)
|
||||
|
|
@ -1332,7 +1332,7 @@ These constructor parameters have been **removed** (not just deprecated) as of r
|
|||
|
||||
#### WSTransport Removed
|
||||
|
||||
The deprecated `WSTransport` client transport has been removed ([#2826](https://github.com/prefecthq/fastmcp/pull/2826)). Use `StreamableHttpTransport` instead.
|
||||
The deprecated `WSTransport` client transport has been removed ([#2826](https://github.com/PrefectHQ/fastmcp/pull/2826)). Use `StreamableHttpTransport` instead.
|
||||
|
||||
#### Decorators Return Functions
|
||||
|
||||
|
|
@ -1411,7 +1411,7 @@ def my_prompt() -> Message:
|
|||
|
||||
#### Auth Provider Environment Variables Removed
|
||||
|
||||
Auth providers no longer auto-load from environment variables ([#2752](https://github.com/prefecthq/fastmcp/pull/2752)):
|
||||
Auth providers no longer auto-load from environment variables ([#2752](https://github.com/PrefectHQ/fastmcp/pull/2752)):
|
||||
|
||||
```python
|
||||
# v2.x - auto-loaded from FASTMCP_SERVER_AUTH_GITHUB_*
|
||||
|
|
@ -1429,7 +1429,7 @@ See `docs/development/v3-notes/auth-provider-env-vars.mdx` for rationale.
|
|||
|
||||
#### Server Banner Environment Variable
|
||||
|
||||
`FASTMCP_SHOW_CLI_BANNER` → `FASTMCP_SHOW_SERVER_BANNER` ([#2771](https://github.com/prefecthq/fastmcp/pull/2771))
|
||||
`FASTMCP_SHOW_CLI_BANNER` → `FASTMCP_SHOW_SERVER_BANNER` ([#2771](https://github.com/PrefectHQ/fastmcp/pull/2771))
|
||||
|
||||
Now applies to all server startup methods, not just the CLI.
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
"footer": {
|
||||
"socials": {
|
||||
"discord": "https://discord.gg/uu8dJCgttd",
|
||||
"github": "https://github.com/prefecthq/fastmcp",
|
||||
"github": "https://github.com/PrefectHQ/fastmcp",
|
||||
"website": "https://www.prefect.io",
|
||||
"x": "https://x.com/fastmcp"
|
||||
}
|
||||
|
|
@ -72,7 +72,7 @@
|
|||
}
|
||||
],
|
||||
"primary": {
|
||||
"href": "https://github.com/prefecthq/fastmcp",
|
||||
"href": "https://github.com/PrefectHQ/fastmcp",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -25,10 +25,10 @@ uv add --upgrade fastmcp
|
|||
If you pin versions in a requirements file or `pyproject.toml`, update your pin to `fastmcp>=3.0.0,<4`.
|
||||
|
||||
<Info>
|
||||
**New repository home.** As part of the v3 release, FastMCP's GitHub repository has moved from `jlowin/fastmcp` to [`prefecthq/fastmcp`](https://github.com/prefecthq/fastmcp) under [Prefect](https://prefect.io)'s stewardship. GitHub automatically redirects existing clones and bookmarks, so nothing breaks — but you can update your local remote whenever convenient:
|
||||
**New repository home.** As part of the v3 release, FastMCP's GitHub repository has moved from `jlowin/fastmcp` to [`PrefectHQ/fastmcp`](https://github.com/PrefectHQ/fastmcp) under [Prefect](https://prefect.io)'s stewardship. GitHub automatically redirects existing clones and bookmarks, so nothing breaks — but you can update your local remote whenever convenient:
|
||||
|
||||
```bash
|
||||
git remote set-url origin https://github.com/prefecthq/fastmcp.git
|
||||
git remote set-url origin https://github.com/PrefectHQ/fastmcp.git
|
||||
```
|
||||
|
||||
If you reference the repository URL in dependency specifications (e.g., `git+https://github.com/jlowin/fastmcp.git`), update those to the new location.
|
||||
|
|
@ -78,7 +78,7 @@ BREAKING CHANGES (will crash at import or runtime):
|
|||
|
||||
12. OAUTH STORAGE: Default OAuth client storage changed from DiskStore to FileTreeStore due to pickle deserialization vulnerability in diskcache (CVE-2025-69872). Clients using default storage will re-register automatically on first connection. If using DiskStore explicitly, switch to FileTreeStore or add pip install 'py-key-value-aio[disk]'.
|
||||
|
||||
13. REPO MOVE: GitHub repository moved from jlowin/fastmcp to prefecthq/fastmcp. Update git remotes and dependency URLs that reference the old location.
|
||||
13. REPO MOVE: GitHub repository moved from jlowin/fastmcp to PrefectHQ/fastmcp. Update git remotes and dependency URLs that reference the old location.
|
||||
|
||||
14. BACKGROUND TASKS: FastMCP's background task system (SEP-1686) is now an optional dependency. If the code uses task=True or TaskConfig, add pip install "fastmcp[tasks]".
|
||||
|
||||
|
|
@ -121,7 +121,7 @@ The full list of removed kwargs and their replacements:
|
|||
|
||||
**OAuth storage backend changed (diskcache CVE)**
|
||||
|
||||
The default OAuth client storage has moved from `DiskStore` to `FileTreeStore` to address a pickle deserialization vulnerability in diskcache ([CVE-2025-69872](https://github.com/prefecthq/fastmcp/issues/3166)).
|
||||
The default OAuth client storage has moved from `DiskStore` to `FileTreeStore` to address a pickle deserialization vulnerability in diskcache ([CVE-2025-69872](https://github.com/PrefectHQ/fastmcp/issues/3166)).
|
||||
|
||||
If you were using the default storage (i.e., not passing an explicit `client_storage`), clients will need to re-register on their first connection after upgrading. This happens automatically — no user action required, and it's the same flow that already occurs whenever a server restarts with in-memory storage.
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ FastMCP includes a `contrib` package that holds community-contributed modules. T
|
|||
|
||||
Contrib modules provide additional features, integrations, or patterns that complement the core FastMCP library. They offer a way for the community to share useful extensions while keeping the core library focused and maintainable.
|
||||
|
||||
The available modules can be viewed in the [contrib directory](https://github.com/prefecthq/fastmcp/tree/main/src/fastmcp/contrib).
|
||||
The available modules can be viewed in the [contrib directory](https://github.com/PrefectHQ/fastmcp/tree/main/src/fastmcp/contrib).
|
||||
|
||||
## Usage
|
||||
|
||||
|
|
|
|||
|
|
@ -100,5 +100,5 @@ async def test_add(
|
|||
```
|
||||
|
||||
<Tip>
|
||||
The [FastMCP Repository contains thousands of tests](https://github.com/prefecthq/fastmcp/tree/main/tests) for the FastMCP Client and Server. Everything from connecting to remote MCP servers, to testing tools, resources, and prompts is covered, take a look for inspiration!
|
||||
The [FastMCP Repository contains thousands of tests](https://github.com/PrefectHQ/fastmcp/tree/main/tests) for the FastMCP Client and Server. Everything from connecting to remote MCP servers, to testing tools, resources, and prompts is covered, take a look for inspiration!
|
||||
</Tip>
|
||||
|
|
@ -491,7 +491,7 @@ def get_repo_info(owner: str, repo: str) -> str:
|
|||
With these two templates defined, clients can request a variety of resources:
|
||||
- `weather://london/current` → Returns weather for London
|
||||
- `weather://paris/current` → Returns weather for Paris
|
||||
- `repos://prefecthq/fastmcp/info` → Returns info about the prefecthq/fastmcp repository
|
||||
- `repos://PrefectHQ/fastmcp/info` → Returns info about the PrefectHQ/fastmcp repository
|
||||
- `repos://prefecthq/prefect/info` → Returns info about the prefecthq/prefect repository
|
||||
|
||||
### RFC 6570 URI Templates
|
||||
|
|
@ -532,7 +532,7 @@ def get_path_content(filepath: str) -> str:
|
|||
def get_template_file(owner: str, path: str) -> dict:
|
||||
"""Retrieves a file from a specific repository and path, but
|
||||
only if the resource ends with `template.py`"""
|
||||
# Can match repo://prefecthq/fastmcp/src/resources/template.py
|
||||
# Can match repo://PrefectHQ/fastmcp/src/resources/template.py
|
||||
return {
|
||||
"owner": owner,
|
||||
"path": path + "/template.py",
|
||||
|
|
|
|||
|
|
@ -744,7 +744,7 @@ def get_config() -> ToolResult:
|
|||
```
|
||||
|
||||
<Tip>
|
||||
For reusable serialization across multiple tools, create a wrapper decorator that returns `ToolResult`. This lets you compose serializers with other behaviors (logging, validation, caching) and keeps the serialization visible at the tool definition. See [examples/custom_tool_serializer_decorator.py](https://github.com/prefecthq/fastmcp/blob/main/examples/custom_tool_serializer_decorator.py) for a complete implementation.
|
||||
For reusable serialization across multiple tools, create a wrapper decorator that returns `ToolResult`. This lets you compose serializers with other behaviors (logging, validation, caching) and keeps the serialization visible at the tool definition. See [examples/custom_tool_serializer_decorator.py](https://github.com/PrefectHQ/fastmcp/blob/main/examples/custom_tool_serializer_decorator.py) for a complete implementation.
|
||||
</Tip>
|
||||
|
||||
## Error Handling
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ tag: NEW
|
|||
<Update label="FastMCP 3.0.0rc1" description="February 12, 2026" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP v3.0.0rc1: RC-ing is Believing"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v3.0.0rc1"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v3.0.0rc1"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 3 RC1 means we believe the API is stable. Beta 2 drew a wave of real-world adoption — production deployments, migration reports, integration testing — and the feedback overwhelmingly confirmed that the architecture works. This release closes gaps that surfaced under load: auth flows that needed to be async, background tasks that needed reliable notification delivery, and APIs still carrying beta-era naming. If nothing unexpected surfaces, this is what 3.0.0 looks like.
|
||||
|
|
@ -28,7 +28,7 @@ FastMCP 3 RC1 means we believe the API is stable. Beta 2 drew a wave of real-wor
|
|||
<Update label="FastMCP 3.0.0b2" description="February 7, 2026" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP v3.0.0b2: 2 Fast 2 Beta"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v3.0.0b2"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v3.0.0b2"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Beta 2 reflects the huge number of people that kicked the tires on Beta 1. Seven new contributors landed changes, and early migration reports went smoother than expected. Most of Beta 2 is refinement — fixing what people found, filling gaps from real usage, hardening edges — but a few new features landed along the way.
|
||||
|
|
@ -50,7 +50,7 @@ Beta 2 reflects the huge number of people that kicked the tires on Beta 1. Seven
|
|||
<Update label="FastMCP 3.0.0b1" description="January 20, 2026" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 3.0.0b1: This Beta Work"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v3.0.0b1"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v3.0.0b1"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 3.0 rebuilds the framework around three primitives: components, providers, and transforms. Providers source components dynamically—from decorators, filesystems, OpenAPI specs, remote servers, or anywhere else. Transforms modify components as they flow to clients. The features that required specialized subsystems in v2 now compose naturally from these building blocks.
|
||||
|
|
@ -70,7 +70,7 @@ FastMCP 3.0 rebuilds the framework around three primitives: components, provider
|
|||
<Update label="FastMCP 2.14.5" description="February 3, 2026" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.14.5: Sealed Docket"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.14.5"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.14.5"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Fixes a memory leak in the memory:// docket broker where cancelled tasks accumulated instead of being cleaned up. Bumps pydocket to ≥0.17.2.
|
||||
|
|
@ -80,7 +80,7 @@ Fixes a memory leak in the memory:// docket broker where cancelled tasks accumul
|
|||
<Update label="FastMCP 2.14.4" description="January 22, 2026" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.14.4: Package Deal"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.14.4"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.14.4"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Fixes a fresh install bug where the packaging library was missing as a direct dependency, plus backports $ref dereferencing in tool schemas and a task capabilities location fix.
|
||||
|
|
@ -90,7 +90,7 @@ Fixes a fresh install bug where the packaging library was missing as a direct de
|
|||
<Update label="FastMCP 2.14.3" description="January 12, 2026" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.14.3: Time After Timeout"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.14.3"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.14.3"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Sometimes five seconds just isn't enough. This release fixes an HTTP transport bug that was cutting connections short, along with OAuth and Redis fixes, better ASGI support, and CLI update notifications so you never miss a beat.
|
||||
|
|
@ -104,7 +104,7 @@ Sometimes five seconds just isn't enough. This release fixes an HTTP transport b
|
|||
<Update label="FastMCP 2.14.2" description="December 31, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.14.2: Port Authority"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.14.2"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.14.2"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
A wave of community contributions arrives safely in the 2.x line. Important backports from 3.0 improve OpenAPI 3.1 compatibility, MCP spec compliance for output schemas and elicitation, and correct a subtle base_url fallback issue.
|
||||
|
|
@ -118,7 +118,7 @@ A wave of community contributions arrives safely in the 2.x line. Important back
|
|||
<Update label="FastMCP 2.14.1" description="December 15, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.14.1: 'Tis a Gift to Be Sample"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.14.1"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.14.1"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.14.1 introduces sampling with tools (SEP-1577), enabling servers to pass tools to `ctx.sample()` for agentic workflows where the LLM can automatically execute tool calls in a loop.
|
||||
|
|
@ -132,7 +132,7 @@ FastMCP 2.14.1 introduces sampling with tools (SEP-1577), enabling servers to pa
|
|||
<Update label="FastMCP 2.14.0" description="December 11, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.14.0: Task and You Shall Receive"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.14.0"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.14.0"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.14 begins adopting the MCP 2025-11-25 specification, introducing protocol-native background tasks that enable long-running operations to report progress without blocking clients.
|
||||
|
|
@ -148,7 +148,7 @@ FastMCP 2.14 begins adopting the MCP 2025-11-25 specification, introducing proto
|
|||
<Update label="FastMCP 2.13.3" description="December 3, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.13.3: Pin-ish Line"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.13.3"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.13.3"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Pins `mcp<1.23` as a precaution due to MCP SDK changes related to the 11/25/25 protocol update that break certain FastMCP patches and workarounds. FastMCP 2.14 introduces proper support for the updated protocol.
|
||||
|
|
@ -158,7 +158,7 @@ Pins `mcp<1.23` as a precaution due to MCP SDK changes related to the 11/25/25 p
|
|||
<Update label="FastMCP 2.13.2" description="December 1, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.13.2: Refreshing Changes"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.13.2"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.13.2"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Polishes the authentication stack with improvements to token refresh, scope handling, and multi-instance deployments.
|
||||
|
|
@ -174,7 +174,7 @@ Polishes the authentication stack with improvements to token refresh, scope hand
|
|||
<Update label="FastMCP 2.13.1" description="November 15, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.13.1: Heavy Meta"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.13.1"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.13.1"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Introduces meta parameter support for `ToolResult`, enabling tools to return supplementary metadata alongside results for patterns like OpenAI's Apps SDK.
|
||||
|
|
@ -190,7 +190,7 @@ Introduces meta parameter support for `ToolResult`, enabling tools to return sup
|
|||
<Update label="FastMCP 2.13.0" description="October 25, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.13.0: Cache Me If You Can"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.13.0"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.13.0"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
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.
|
||||
|
|
@ -208,7 +208,7 @@ FastMCP 2.13 "Cache Me If You Can" represents a fundamental maturation of the fr
|
|||
<Update label="FastMCP 2.12.5" description="October 17, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.12.5: Safety Pin"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.12.5"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.12.5"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Pins MCP SDK version below 1.17 to ensure the `.well-known` payload appears in the expected location when using FastMCP auth providers with composite applications.
|
||||
|
|
@ -218,7 +218,7 @@ Pins MCP SDK version below 1.17 to ensure the `.well-known` payload appears in t
|
|||
<Update label="FastMCP 2.12.4" description="September 26, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.12.4: OIDC What You Did There"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.12.4"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.12.4"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.12.4 adds comprehensive OIDC support and expands authentication options with AWS Cognito and Descope providers. The release also includes improvements to logging middleware, URL handling for nested resources, persistent OAuth client registration storage, and various fixes to the experimental OpenAPI parser.
|
||||
|
|
@ -234,7 +234,7 @@ FastMCP 2.12.4 adds comprehensive OIDC support and expands authentication option
|
|||
<Update label="FastMCP 2.12.3" description="September 17, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.12.3: Double Time"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.12.3"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.12.3"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.12.3 focuses on performance and developer experience improvements. This release includes optimized auth provider imports that reduce server startup time, enhanced OIDC authentication flows, and automatic inline snapshot creation for testing.
|
||||
|
|
@ -244,7 +244,7 @@ FastMCP 2.12.3 focuses on performance and developer experience improvements. Thi
|
|||
<Update label="FastMCP 2.12.2" description="September 3, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.12.2: Perchance to Stream"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.12.2"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.12.2"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Hotfix for streamable-http transport validation in fastmcp.json configuration files, resolving a parsing error when CLI arguments were merged against the configuration spec.
|
||||
|
|
@ -254,7 +254,7 @@ Hotfix for streamable-http transport validation in fastmcp.json configuration fi
|
|||
<Update label="FastMCP 2.12.1" description="September 3, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.12.1: OAuth to Joy"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.12.1"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.12.1"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.12.1 strengthens OAuth proxy implementation with improved client storage reliability, PKCE forwarding, configurable token endpoint authentication methods, and expanded scope handling based on extensive community testing.
|
||||
|
|
@ -264,7 +264,7 @@ FastMCP 2.12.1 strengthens OAuth proxy implementation with improved client stora
|
|||
<Update label="FastMCP 2.12" description="August 31, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.12: Auth to the Races"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.12.0"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.12.0"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.12 represents one of our most significant releases to date. After extensive testing and iteration with the community, we're shipping major improvements to authentication, configuration, and MCP feature adoption.
|
||||
|
|
@ -280,7 +280,7 @@ FastMCP 2.12 represents one of our most significant releases to date. After exte
|
|||
<Update label="FastMCP 2.11" description="August 1, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.11: Auth to a Good Start"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.11.0"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.11.0"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.11 brings enterprise-ready authentication and dramatic performance improvements.
|
||||
|
|
@ -298,7 +298,7 @@ This release emphasizes speed and simplicity while setting the foundation for fu
|
|||
<Update label="FastMCP 2.10" description="July 2, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.10: Great Spec-tations"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.10.0"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.10.0"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.10 achieves full compliance with the 6/18/2025 MCP specification update, introducing powerful new communication patterns.
|
||||
|
|
@ -358,7 +358,7 @@ Lastly, to ensure maximum compatibility with the ecosystem, we've made the pragm
|
|||
|
||||
<Update label="FastMCP 2.7" description="June 6, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.7: Pare Programming" href="https://github.com/prefecthq/fastmcp/releases/tag/v2.7.0"
|
||||
title="FastMCP 2.7: Pare Programming" href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.7.0"
|
||||
img="assets/updates/release-2-7.png"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -254,5 +254,5 @@ Install the Anthropic handler with `pip install fastmcp[anthropic]`.
|
|||
Tool execution happens on the server side. The client's role is to pass tools to the LLM and return the LLM's response (which may include tool use requests). The server then executes the tools and may send follow-up sampling requests with tool results.
|
||||
|
||||
<Tip>
|
||||
To implement a custom sampling handler, see the [handler source code](https://github.com/prefecthq/fastmcp/tree/main/src/fastmcp/client/sampling/handlers) as a reference.
|
||||
To implement a custom sampling handler, see the [handler source code](https://github.com/PrefectHQ/fastmcp/tree/main/src/fastmcp/client/sampling/handlers) as a reference.
|
||||
</Tip>
|
||||
|
|
@ -47,7 +47,7 @@ Discover exemplary MCP servers and implementations created by our community. The
|
|||
|
||||
### Community Examples
|
||||
|
||||
Have you built something interesting with FastMCP? We'd love to feature high-quality examples here! Start a [discussion on GitHub](https://github.com/prefecthq/fastmcp/discussions) to share your project.
|
||||
Have you built something interesting with FastMCP? We'd love to feature high-quality examples here! Start a [discussion on GitHub](https://github.com/PrefectHQ/fastmcp/discussions) to share your project.
|
||||
|
||||
## Contributing
|
||||
|
||||
|
|
@ -56,7 +56,7 @@ To get your project featured:
|
|||
1. Ensure your project demonstrates best practices
|
||||
2. Include comprehensive documentation
|
||||
3. Add clear usage examples
|
||||
4. Open a discussion in our [GitHub Discussions](https://github.com/prefecthq/fastmcp/discussions)
|
||||
4. Open a discussion in our [GitHub Discussions](https://github.com/PrefectHQ/fastmcp/discussions)
|
||||
|
||||
We review submissions regularly and feature projects that provide value to the FastMCP community.
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ To contribute to FastMCP, you'll need to set up a development environment with a
|
|||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://github.com/prefecthq/fastmcp.git
|
||||
git clone https://github.com/PrefectHQ/fastmcp.git
|
||||
cd fastmcp
|
||||
|
||||
# Install all dependencies including dev tools
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ FastMCP includes a `contrib` package that holds community-contributed modules. T
|
|||
|
||||
Contrib modules provide additional features, integrations, or patterns that complement the core FastMCP library. They offer a way for the community to share useful extensions while keeping the core library focused and maintainable.
|
||||
|
||||
The available modules can be viewed in the [contrib directory](https://github.com/prefecthq/fastmcp/tree/main/src/fastmcp/contrib).
|
||||
The available modules can be viewed in the [contrib directory](https://github.com/PrefectHQ/fastmcp/tree/main/src/fastmcp/contrib).
|
||||
|
||||
## Usage
|
||||
|
||||
|
|
|
|||
|
|
@ -100,5 +100,5 @@ async def test_add(
|
|||
```
|
||||
|
||||
<Tip>
|
||||
The [FastMCP Repository contains thousands of tests](https://github.com/prefecthq/fastmcp/tree/main/tests) for the FastMCP Client and Server. Everything from connecting to remote MCP servers, to testing tools, resources, and prompts is covered, take a look for inspiration!
|
||||
The [FastMCP Repository contains thousands of tests](https://github.com/PrefectHQ/fastmcp/tree/main/tests) for the FastMCP Client and Server. Everything from connecting to remote MCP servers, to testing tools, resources, and prompts is covered, take a look for inspiration!
|
||||
</Tip>
|
||||
|
|
@ -415,7 +415,7 @@ def get_repo_info(owner: str, repo: str) -> dict:
|
|||
With these two templates defined, clients can request a variety of resources:
|
||||
- `weather://london/current` → Returns weather for London
|
||||
- `weather://paris/current` → Returns weather for Paris
|
||||
- `repos://prefecthq/fastmcp/info` → Returns info about the prefecthq/fastmcp repository
|
||||
- `repos://PrefectHQ/fastmcp/info` → Returns info about the PrefectHQ/fastmcp repository
|
||||
- `repos://prefecthq/prefect/info` → Returns info about the prefecthq/prefect repository
|
||||
|
||||
### RFC 6570 URI Templates
|
||||
|
|
@ -456,7 +456,7 @@ def get_path_content(filepath: str) -> str:
|
|||
def get_template_file(owner: str, path: str) -> dict:
|
||||
"""Retrieves a file from a specific repository and path, but
|
||||
only if the resource ends with `template.py`"""
|
||||
# Can match repo://prefecthq/fastmcp/src/resources/template.py
|
||||
# Can match repo://PrefectHQ/fastmcp/src/resources/template.py
|
||||
return {
|
||||
"owner": owner,
|
||||
"path": path + "/template.py",
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ async def wrapped_cpu_task(data: str) -> str:
|
|||
return await anyio.to_thread.run_sync(cpu_intensive_task, data)
|
||||
```
|
||||
|
||||
Alternative approaches include using `asyncio.get_event_loop().run_in_executor()` or other threading techniques to manage blocking operations without impacting server responsiveness. For example, here's a recipe for using the `asyncer` library (not included in FastMCP) to create a decorator that wraps synchronous functions, courtesy of [@hsheth2](https://github.com/prefecthq/fastmcp/issues/864#issuecomment-3103678258):
|
||||
Alternative approaches include using `asyncio.get_event_loop().run_in_executor()` or other threading techniques to manage blocking operations without impacting server responsiveness. For example, here's a recipe for using the `asyncer` library (not included in FastMCP) to create a decorator that wraps synchronous functions, courtesy of [@hsheth2](https://github.com/PrefectHQ/fastmcp/issues/864#issuecomment-3103678258):
|
||||
|
||||
<CodeGroup>
|
||||
```python Decorator Recipe
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ tag: NEW
|
|||
<Update label="FastMCP 2.14.5" description="February 3, 2026" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.14.5: Sealed Docket"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.14.5"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.14.5"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Fixes a memory leak in the memory:// docket broker where cancelled tasks accumulated instead of being cleaned up. Bumps pydocket to ≥0.17.2.
|
||||
|
|
@ -18,7 +18,7 @@ Fixes a memory leak in the memory:// docket broker where cancelled tasks accumul
|
|||
<Update label="FastMCP 2.14.4" description="January 22, 2026" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.14.4: Package Deal"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.14.4"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.14.4"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Fixes a fresh install bug where the packaging library was missing as a direct dependency, plus backports $ref dereferencing in tool schemas and a task capabilities location fix.
|
||||
|
|
@ -28,7 +28,7 @@ Fixes a fresh install bug where the packaging library was missing as a direct de
|
|||
<Update label="FastMCP 2.14.3" description="January 12, 2026" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.14.3: Time After Timeout"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.14.3"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.14.3"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Sometimes five seconds just isn't enough. This release fixes an HTTP transport bug that was cutting connections short, along with OAuth and Redis fixes, better ASGI support, and CLI update notifications so you never miss a beat.
|
||||
|
|
@ -38,7 +38,7 @@ Sometimes five seconds just isn't enough. This release fixes an HTTP transport b
|
|||
<Update label="FastMCP 2.14.2" description="December 31, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.14.2: Port Authority"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.14.2"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.14.2"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.14.2 brings a wave of community contributions safely into the 2.x line. A variety of important fixes backported from 3.0 work improve OpenAPI 3.1 compatibility, MCP spec compliance for output schemas and elicitation, and correct a subtle base_url fallback issue. The CLI now gently reminds you that FastMCP 3.0 is on the horizon.
|
||||
|
|
@ -48,7 +48,7 @@ FastMCP 2.14.2 brings a wave of community contributions safely into the 2.x line
|
|||
<Update label="FastMCP 2.14.1" description="December 15, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.14.1: 'Tis a Gift to Be Sample"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.14.1"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.14.1"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.14.1 introduces sampling with tools (SEP-1577), enabling servers to pass tools to `ctx.sample()` for agentic workflows where the LLM can automatically execute tool calls in a loop.
|
||||
|
|
@ -62,7 +62,7 @@ FastMCP 2.14.1 introduces sampling with tools (SEP-1577), enabling servers to pa
|
|||
<Update label="FastMCP 2.14.0" description="December 11, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.14.0: Task and You Shall Receive"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.14.0"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.14.0"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.14 begins adopting the MCP 2025-11-25 specification, introducing protocol-native background tasks that enable long-running operations to report progress without blocking clients.
|
||||
|
|
@ -78,7 +78,7 @@ FastMCP 2.14 begins adopting the MCP 2025-11-25 specification, introducing proto
|
|||
<Update label="FastMCP 2.13.3" description="December 3, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.13.3: Pin-ish Line"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.13.3"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.13.3"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Pins `mcp<1.23` as a precaution due to MCP SDK changes related to the 11/25/25 protocol update that break certain FastMCP patches and workarounds. FastMCP 2.14 introduces proper support for the updated protocol.
|
||||
|
|
@ -88,7 +88,7 @@ Pins `mcp<1.23` as a precaution due to MCP SDK changes related to the 11/25/25 p
|
|||
<Update label="FastMCP 2.13.2" description="December 1, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.13.2: Refreshing Changes"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.13.2"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.13.2"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Polishes the authentication stack with improvements to token refresh, scope handling, and multi-instance deployments.
|
||||
|
|
@ -104,7 +104,7 @@ Polishes the authentication stack with improvements to token refresh, scope hand
|
|||
<Update label="FastMCP 2.13.1" description="November 15, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.13.1: Heavy Meta"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.13.1"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.13.1"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Introduces meta parameter support for `ToolResult`, enabling tools to return supplementary metadata alongside results for patterns like OpenAI's Apps SDK.
|
||||
|
|
@ -120,7 +120,7 @@ Introduces meta parameter support for `ToolResult`, enabling tools to return sup
|
|||
<Update label="FastMCP 2.13.0" description="October 25, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.13.0: Cache Me If You Can"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.13.0"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.13.0"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
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.
|
||||
|
|
@ -138,7 +138,7 @@ FastMCP 2.13 "Cache Me If You Can" represents a fundamental maturation of the fr
|
|||
<Update label="FastMCP 2.12.5" description="October 17, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.12.5: Safety Pin"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.12.5"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.12.5"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Pins MCP SDK version below 1.17 to ensure the `.well-known` payload appears in the expected location when using FastMCP auth providers with composite applications.
|
||||
|
|
@ -148,7 +148,7 @@ Pins MCP SDK version below 1.17 to ensure the `.well-known` payload appears in t
|
|||
<Update label="FastMCP 2.12.4" description="September 26, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.12.4: OIDC What You Did There"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.12.4"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.12.4"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.12.4 adds comprehensive OIDC support and expands authentication options with AWS Cognito and Descope providers. The release also includes improvements to logging middleware, URL handling for nested resources, persistent OAuth client registration storage, and various fixes to the experimental OpenAPI parser.
|
||||
|
|
@ -164,7 +164,7 @@ FastMCP 2.12.4 adds comprehensive OIDC support and expands authentication option
|
|||
<Update label="FastMCP 2.12.3" description="September 17, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.12.3: Double Time"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.12.3"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.12.3"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.12.3 focuses on performance and developer experience improvements. This release includes optimized auth provider imports that reduce server startup time, enhanced OIDC authentication flows, and automatic inline snapshot creation for testing.
|
||||
|
|
@ -174,7 +174,7 @@ FastMCP 2.12.3 focuses on performance and developer experience improvements. Thi
|
|||
<Update label="FastMCP 2.12.2" description="September 3, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.12.2: Perchance to Stream"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.12.2"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.12.2"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
Hotfix for streamable-http transport validation in fastmcp.json configuration files, resolving a parsing error when CLI arguments were merged against the configuration spec.
|
||||
|
|
@ -184,7 +184,7 @@ Hotfix for streamable-http transport validation in fastmcp.json configuration fi
|
|||
<Update label="FastMCP 2.12.1" description="September 3, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.12.1: OAuth to Joy"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.12.1"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.12.1"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.12.1 strengthens OAuth proxy implementation with improved client storage reliability, PKCE forwarding, configurable token endpoint authentication methods, and expanded scope handling based on extensive community testing.
|
||||
|
|
@ -194,7 +194,7 @@ FastMCP 2.12.1 strengthens OAuth proxy implementation with improved client stora
|
|||
<Update label="FastMCP 2.12" description="August 31, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.12: Auth to the Races"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.12.0"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.12.0"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.12 represents one of our most significant releases to date. After extensive testing and iteration with the community, we're shipping major improvements to authentication, configuration, and MCP feature adoption.
|
||||
|
|
@ -210,7 +210,7 @@ FastMCP 2.12 represents one of our most significant releases to date. After exte
|
|||
<Update label="FastMCP 2.11" description="August 1, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.11: Auth to a Good Start"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.11.0"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.11.0"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.11 brings enterprise-ready authentication and dramatic performance improvements.
|
||||
|
|
@ -228,7 +228,7 @@ This release emphasizes speed and simplicity while setting the foundation for fu
|
|||
<Update label="FastMCP 2.10" description="July 2, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.10: Great Spec-tations"
|
||||
href="https://github.com/prefecthq/fastmcp/releases/tag/v2.10.0"
|
||||
href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.10.0"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
FastMCP 2.10 achieves full compliance with the 6/18/2025 MCP specification update, introducing powerful new communication patterns.
|
||||
|
|
@ -288,7 +288,7 @@ Lastly, to ensure maximum compatibility with the ecosystem, we've made the pragm
|
|||
|
||||
<Update label="FastMCP 2.7" description="June 6, 2025" tags={["Releases"]}>
|
||||
<Card
|
||||
title="FastMCP 2.7: Pare Programming" href="https://github.com/prefecthq/fastmcp/releases/tag/v2.7.0"
|
||||
title="FastMCP 2.7: Pare Programming" href="https://github.com/PrefectHQ/fastmcp/releases/tag/v2.7.0"
|
||||
img="assets/updates/release-2-7.png"
|
||||
cta="Read the release notes"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ async def demo():
|
|||
# Rich text with links and mentions
|
||||
await client.call_tool("post", {
|
||||
"text": "Check out FastMCP by @alternatebuild.dev",
|
||||
"links": [{"text": "FastMCP", "url": "https://github.com/prefecthq/fastmcp"}],
|
||||
"links": [{"text": "FastMCP", "url": "https://github.com/PrefectHQ/fastmcp"}],
|
||||
"mentions": [{"handle": "alternatebuild.dev", "display_text": "@alternatebuild.dev"}]
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ async def main(enable_posting: bool = False):
|
|||
"links": [
|
||||
{
|
||||
"text": "FastMCP",
|
||||
"url": "https://github.com/prefecthq/fastmcp",
|
||||
"url": "https://github.com/PrefectHQ/fastmcp",
|
||||
}
|
||||
],
|
||||
"mentions": [
|
||||
|
|
@ -206,7 +206,7 @@ async def main(enable_posting: bool = False):
|
|||
"links": [
|
||||
{
|
||||
"text": "everything",
|
||||
"url": "https://github.com/prefecthq/fastmcp",
|
||||
"url": "https://github.com/PrefectHQ/fastmcp",
|
||||
}
|
||||
],
|
||||
},
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
},
|
||||
"environment": {
|
||||
"dependencies": [
|
||||
"atproto_mcp@git+https://github.com/prefecthq/fastmcp.git#subdirectory=examples/atproto_mcp"
|
||||
"atproto_mcp@git+https://github.com/PrefectHQ/fastmcp.git#subdirectory=examples/atproto_mcp"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
"entrypoint": "src/smart_home/hub.py",
|
||||
"environment": {
|
||||
"dependencies": [
|
||||
"smart_home@git+https://github.com/prefecthq/fastmcp.git#subdirectory=examples/smart_home"
|
||||
"smart_home@git+https://github.com/PrefectHQ/fastmcp.git#subdirectory=examples/smart_home"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
"entrypoint": "src/smart_home/lights/server.py",
|
||||
"environment": {
|
||||
"dependencies": [
|
||||
"smart_home@git+https://github.com/prefecthq/fastmcp.git#subdirectory=examples/smart_home"
|
||||
"smart_home@git+https://github.com/PrefectHQ/fastmcp.git#subdirectory=examples/smart_home"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5,7 +5,7 @@ description = "Add your description here"
|
|||
readme = "README.md"
|
||||
authors = [{ name = "zzstoatzz", email = "thrast36@gmail.com" }]
|
||||
requires-python = ">=3.12"
|
||||
dependencies = ["fastmcp@git+https://github.com/prefecthq/fastmcp.git", "phue2"]
|
||||
dependencies = ["fastmcp@git+https://github.com/PrefectHQ/fastmcp.git", "phue2"]
|
||||
|
||||
[project.scripts]
|
||||
smart-home = "smart_home.__main__:main"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# /// script
|
||||
# dependencies = [
|
||||
# "smart_home@git+https://github.com/prefecthq/fastmcp.git#subdirectory=examples/smart_home",
|
||||
# "smart_home@git+https://github.com/PrefectHQ/fastmcp.git#subdirectory=examples/smart_home",
|
||||
# "fastmcp",
|
||||
# ]
|
||||
# ///
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ fastmcp = "fastmcp.cli:app"
|
|||
|
||||
[project.urls]
|
||||
Homepage = "https://gofastmcp.com"
|
||||
Repository = "https://github.com/prefecthq/fastmcp"
|
||||
Repository = "https://github.com/PrefectHQ/fastmcp"
|
||||
Documentation = "https://gofastmcp.com"
|
||||
|
||||
[build-system]
|
||||
|
|
|
|||
|
|
@ -161,4 +161,4 @@ If you encounter any issues or wish to contribute, please feel free to open an i
|
|||
|
||||
## 📄 License
|
||||
|
||||
This module follows the license of the main [FastMCP](https://github.com/prefecthq/fastmcp) project.
|
||||
This module follows the license of the main [FastMCP](https://github.com/PrefectHQ/fastmcp) project.
|
||||
|
|
@ -193,7 +193,7 @@ def _lifespan_proxy(
|
|||
if not fastmcp_server._lifespan_result_set:
|
||||
raise RuntimeError(
|
||||
"FastMCP server has a lifespan defined but no lifespan result is set, which means the server's context manager was not entered. "
|
||||
+ " Are you running the server in a way that supports lifespans? If so, please file an issue at https://github.com/prefecthq/fastmcp/issues."
|
||||
+ " Are you running the server in a way that supports lifespans? If so, please file an issue at https://github.com/PrefectHQ/fastmcp/issues."
|
||||
)
|
||||
|
||||
yield fastmcp_server._lifespan_result
|
||||
|
|
|
|||
|
|
@ -555,7 +555,7 @@ async def test_cancelled_context_entry_waiter_does_not_close_active_session(
|
|||
async def test_concurrent_client_context_managers():
|
||||
"""
|
||||
Test that concurrent client usage doesn't cause cross-task cancel scope issues.
|
||||
https://github.com/prefecthq/fastmcp/pull/643
|
||||
https://github.com/PrefectHQ/fastmcp/pull/643
|
||||
"""
|
||||
# Create a simple server
|
||||
server = FastMCP("Test Server")
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ from fastmcp.client import Client
|
|||
class TestSessionTaskErrorPropagation:
|
||||
"""Tests for ensuring session task errors propagate to client calls.
|
||||
|
||||
Regression tests for https://github.com/prefecthq/fastmcp/issues/2595
|
||||
Regression tests for https://github.com/PrefectHQ/fastmcp/issues/2595
|
||||
where the client would hang indefinitely when the session task failed
|
||||
(e.g., due to HTTP 4xx/5xx errors) instead of raising an exception.
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ class TestParallelCalls:
|
|||
|
||||
|
||||
class TestKeepAlive:
|
||||
# https://github.com/prefecthq/fastmcp/issues/581
|
||||
# https://github.com/PrefectHQ/fastmcp/issues/581
|
||||
|
||||
@pytest.fixture
|
||||
def stdio_script(self, tmp_path):
|
||||
|
|
|
|||
|
|
@ -943,7 +943,7 @@ class TestProxyServer:
|
|||
self, mcp_server: FastMCP, recording_middleware: RecordingMiddleware
|
||||
):
|
||||
"""Tests that tags on remote FastMCP servers are visible to middleware
|
||||
via proxy. See https://github.com/prefecthq/fastmcp/issues/1300"""
|
||||
via proxy. See https://github.com/PrefectHQ/fastmcp/issues/1300"""
|
||||
proxy_server = FastMCP.as_proxy(mcp_server, name="Proxy Server")
|
||||
|
||||
TAGS = []
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ class TestCustomRouteForwarding:
|
|||
class TestDeeplyNestedMount:
|
||||
"""Test deeply nested mount scenarios (3+ levels deep).
|
||||
|
||||
This tests the fix for https://github.com/prefecthq/fastmcp/issues/2583
|
||||
This tests the fix for https://github.com/PrefectHQ/fastmcp/issues/2583
|
||||
where tools/resources/prompts mounted more than 2 levels deep would fail
|
||||
to invoke even though they were correctly listed.
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@ async def test_task_cancellation_interrupts_running_coroutine(endpoint_server):
|
|||
coroutine receives CancelledError rather than continuing to completion.
|
||||
Requires pydocket >= 0.16.2.
|
||||
|
||||
See: https://github.com/prefecthq/fastmcp/issues/2679
|
||||
See: https://github.com/PrefectHQ/fastmcp/issues/2679
|
||||
"""
|
||||
started = asyncio.Event()
|
||||
was_interrupted = asyncio.Event()
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ async def test_transformed_tool_filtering():
|
|||
async def test_transformed_tool_structured_output_without_annotation():
|
||||
"""Test that transformed tools generate structured output when original tool has no return annotation.
|
||||
|
||||
Ref: https://github.com/prefecthq/fastmcp/issues/1369
|
||||
Ref: https://github.com/PrefectHQ/fastmcp/issues/1369
|
||||
"""
|
||||
from fastmcp.client import Client
|
||||
|
||||
|
|
@ -218,7 +218,7 @@ async def test_tool_transform_config_enabled_true_overrides_earlier_disable():
|
|||
async def test_openapi_path_params_not_duplicated_in_description():
|
||||
"""Path parameter details should live in inputSchema, not the description.
|
||||
|
||||
Regression test for https://github.com/prefecthq/fastmcp/issues/3130 — hiding
|
||||
Regression test for https://github.com/PrefectHQ/fastmcp/issues/3130 — hiding
|
||||
a path param via ToolTransform left stale references in the description
|
||||
because the description was generated before transforms ran. The fix is to
|
||||
keep parameter docs in inputSchema only, where transforms can control them.
|
||||
|
|
|
|||
|
|
@ -836,7 +836,7 @@ async def test_multi_server_config_transport(tmp_path: Path):
|
|||
"""
|
||||
Tests that MCPConfigTransport properly handles multi-server configurations.
|
||||
|
||||
Related to https://github.com/prefecthq/fastmcp/issues/2802 - verifies the
|
||||
Related to https://github.com/PrefectHQ/fastmcp/issues/2802 - verifies the
|
||||
refactored architecture creates composite servers correctly.
|
||||
"""
|
||||
server_script = inspect.cleandoc("""
|
||||
|
|
|
|||
|
|
@ -405,7 +405,7 @@ class TestCompressSchema:
|
|||
"Invalid schema for function 'X': In context=('properties', 'Y'),
|
||||
'additionalProperties' is required to be supplied and to be false"
|
||||
|
||||
See: https://github.com/prefecthq/fastmcp/issues/3008
|
||||
See: https://github.com/PrefectHQ/fastmcp/issues/3008
|
||||
"""
|
||||
# Schema representing a Pydantic model with extra="forbid"
|
||||
schema = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue