mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-09 07:09:11 +02:00
* Archive v3 docs under /v3 and publish v4 as the primary version * Label primary docs version v4.0.0 (alpha 1) * Add What's New in v4 page; fix upgrade-guide phrasing; point banner at What's New * Rewrite What's New around v4's new capabilities, not the sampling deprecation * Lead What's New with the SDK v2 engine swap and the SEPs it brings * State ships now (link Session State); tasks arrive next alpha * Exclude docs/v3 frozen snapshots from doc-example import validation
88 lines
2.7 KiB
Text
88 lines
2.7 KiB
Text
---
|
|
title: Bearer Token Authentication
|
|
sidebarTitle: Bearer Auth
|
|
description: Authenticate your FastMCP client with a Bearer token.
|
|
icon: key
|
|
---
|
|
|
|
import { VersionBadge } from "/snippets/version-badge.mdx"
|
|
|
|
<VersionBadge version="2.6.0" />
|
|
|
|
<Tip>
|
|
Bearer Token authentication is only relevant for HTTP-based transports.
|
|
</Tip>
|
|
|
|
You can configure your FastMCP client to use **bearer authentication** by supplying a valid access token. This is most appropriate for service accounts, long-lived API keys, CI/CD, applications where authentication is managed separately, or other non-interactive authentication methods.
|
|
|
|
A Bearer token is a JSON Web Token (JWT) that is used to authenticate a request. It is most commonly used in the `Authorization` header of an HTTP request, using the `Bearer` scheme:
|
|
|
|
```http
|
|
Authorization: Bearer <token>
|
|
```
|
|
|
|
|
|
## Client Usage
|
|
|
|
The most straightforward way to use a pre-existing Bearer token is to provide it as a string to the `auth` parameter of the `fastmcp.Client` or transport instance. FastMCP will automatically format it correctly for the `Authorization` header and bearer scheme.
|
|
|
|
<Tip>
|
|
If you're using a string token, do not include the `Bearer` prefix. FastMCP will add it for you.
|
|
</Tip>
|
|
|
|
```python {5}
|
|
from fastmcp import Client
|
|
|
|
async with Client(
|
|
"https://your-server.fastmcp.app/mcp",
|
|
auth="<your-token>",
|
|
) as client:
|
|
await client.ping()
|
|
```
|
|
|
|
You can also supply a Bearer token to a transport instance, such as `StreamableHttpTransport` or `SSETransport`:
|
|
|
|
```python {6}
|
|
from fastmcp import Client
|
|
from fastmcp.client.transports import StreamableHttpTransport
|
|
|
|
transport = StreamableHttpTransport(
|
|
"http://your-server.fastmcp.app/mcp",
|
|
auth="<your-token>",
|
|
)
|
|
|
|
async with Client(transport) as client:
|
|
await client.ping()
|
|
```
|
|
|
|
## `BearerAuth` Helper
|
|
|
|
If you prefer to be more explicit and not rely on FastMCP to transform your string token, you can use the `BearerAuth` class yourself, which implements the `httpx.Auth` interface.
|
|
|
|
```python {6}
|
|
from fastmcp import Client
|
|
from fastmcp.client.auth import BearerAuth
|
|
|
|
async with Client(
|
|
"https://your-server.fastmcp.app/mcp",
|
|
auth=BearerAuth(token="<your-token>"),
|
|
) as client:
|
|
await client.ping()
|
|
```
|
|
|
|
## Custom Headers
|
|
|
|
If the MCP server expects a custom header or token scheme, you can manually set the client's `headers` instead of using the `auth` parameter by setting them on your transport:
|
|
|
|
```python {5}
|
|
from fastmcp import Client
|
|
from fastmcp.client.transports import StreamableHttpTransport
|
|
|
|
async with Client(
|
|
transport=StreamableHttpTransport(
|
|
"https://your-server.fastmcp.app/mcp",
|
|
headers={"X-API-Key": "<your-token>"},
|
|
),
|
|
) as client:
|
|
await client.ping()
|
|
```
|