mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-18 03:29:11 +02:00
* Add examples/ to ty static-analysis gate * Fix example type errors and stale SDK idioms for ty * Use typing_extensions.TypedDict for the quiz tool-param type Question is a take_quiz parameter, so FastMCP builds a Pydantic schema for it; typing.TypedDict raises PydanticUserError on Python 3.10/3.11 (only 3.12+ accepts it). ty and 3.12 runs miss this, so it slipped in. * Guard get_access_token() None case in huggingface_oauth example Caught by the ty gate this PR adds: the example, merged separately, had never been type-checked against examples/. Matches the existing aws_oauth/keycloak_oauth pattern. * Print actual YAML text in custom serializer example |
||
|---|---|---|
| .. | ||
| client.py | ||
| README.md | ||
| requirements.txt | ||
| server.py | ||
AWS Cognito OAuth Example
Demonstrates FastMCP server protection with AWS Cognito OAuth.
Setup
-
Create an AWS Cognito User Pool and App Client:
- Go to AWS Cognito Console
- Create a new User Pool or use an existing one
- Create an App Client in your User Pool
- Configure the App Client settings:
- Enable "Authorization code grant" flow
- Add Callback URL:
http://127.0.0.1:8000/auth/callback - Configure OAuth scopes (at minimum:
openid)
- Note your User Pool ID, App Client ID, Client Secret, and Cognito Domain Prefix
-
Set environment variables:
export FASTMCP_SERVER_AUTH_AWS_COGNITO_USER_POOL_ID="your-user-pool-id" export FASTMCP_SERVER_AUTH_AWS_COGNITO_AWS_REGION="your-aws-region" export FASTMCP_SERVER_AUTH_AWS_COGNITO_CLIENT_ID="your-app-client-id" export FASTMCP_SERVER_AUTH_AWS_COGNITO_CLIENT_SECRET="your-app-client-secret"Or create a
.envfile:FASTMCP_SERVER_AUTH_AWS_COGNITO_USER_POOL_ID=your-user-pool-id FASTMCP_SERVER_AUTH_AWS_COGNITO_AWS_REGION=your-aws-region FASTMCP_SERVER_AUTH_AWS_COGNITO_CLIENT_ID=your-app-client-id FASTMCP_SERVER_AUTH_AWS_COGNITO_CLIENT_SECRET=your-app-client-secret -
Run the server:
python server.py -
In another terminal, run the client:
python client.py
The client will open your browser for AWS Cognito authentication.