fastmcp/fastmcp_slim/pyproject.toml
zzstoatzz 275a5e2d56 auth: build ATProtoProvider on atproto-oauth and OAuthProxy callback hooks
The provider no longer carries its own AT Protocol client: the new
`atproto` extra installs atproto-oauth, which handles resolution, PAR,
DPoP, token exchange, re-verification and revocation. OAuthProxy's
upstream callback now calls two overridable steps, the callback's
transaction ID and the code exchange, so the provider plugs into them
instead of replacing the callback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017uN3zXKrzsKxYKNmkNK9Dz
2026-09-26 21:18:25 -05:00

112 lines
3.1 KiB
TOML

[project]
name = "fastmcp-slim"
dynamic = ["version", "optional-dependencies"]
description = "The dependency-slim FastMCP package."
authors = [{ name = "Jeremiah Lowin" }, { name = "Nate Nowack" }]
dependencies = [
"mcp-types>=2.0.0,<3.0.0",
"platformdirs>=4.0.0",
"pydantic[email]>=2.12.0",
"pydantic-settings>=2.0.0",
"python-dotenv>=1.1.0",
"rich>=13.9.4",
"typing-extensions>=4.0.0",
]
requires-python = ">=3.10"
readme = "README.md"
license = "Apache-2.0"
keywords = [
"mcp",
"mcp server",
"mcp client",
"model context protocol",
"fastmcp",
"llm",
"agent",
]
classifiers = [
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Typing :: Typed",
]
[project.urls]
Homepage = "https://gofastmcp.com"
Repository = "https://github.com/PrefectHQ/fastmcp"
Documentation = "https://gofastmcp.com"
[project.scripts]
fastmcp = "fastmcp.cli:app"
[build-system]
requires = ["hatchling", "uv-dynamic-versioning>=0.7.0"]
build-backend = "hatchling.build"
[tool.hatch.version]
source = "uv-dynamic-versioning"
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.build.targets.wheel]
packages = ["fastmcp"]
[tool.uv-dynamic-versioning]
vcs = "git"
style = "pep440"
bump = true
fallback-version = "0.0.0"
[tool.hatch.metadata.hooks.uv-dynamic-versioning.optional-dependencies]
anthropic = ["anthropic>=0.48.0,<2"]
apps = ["prefab-ui>=0.18.0"]
atproto = ["atproto-oauth>=0.1.0"]
# PyJWT floor: transitive via msal; CVE-2026-32597 affects <= 2.11.0
azure = ["azure-identity>=1.16.0", "PyJWT>=2.12.0"]
client = [
"fastmcp-slim[mcp]=={{ version }}",
"authlib>=1.6.11",
"py-key-value-aio[filetree,keyring,memory]>=0.4.4,<0.5.0",
]
code-mode = ["pydantic-monty==0.0.21"]
jev = ["typesafe-sdk>=0.5.7"]
gemini = ["google-genai>=1.18.0", "jsonref>=1.1.0"]
mcp = [
"exceptiongroup>=1.2.2",
# FastMCP uses httpx2 exclusively: the MCP SDK boundary (client transports,
# client auth) requires it, and all FastMCP-owned HTTP (server auth provider
# upstream calls, OpenAPI provider, version check, etc.) uses it too.
"httpx2>=2.5.0",
"mcp>=2.0.0,<3.0.0",
"opentelemetry-api>=1.28.0",
# starlette floor: transitive via mcp (which only requires >=0.27).
# Pin past CVE-2026-48710, which was patched in 1.0.1.
"starlette>=1.0.1",
]
openai = ["openai>=1.102.0"]
server = [
"fastmcp-slim[mcp]=={{ version }}",
"authlib>=1.6.11",
"cyclopts>=4.0.0",
"griffelib>=2.0.0",
"jsonref>=1.1.0",
"jsonschema-path>=0.3.4",
"joserfc>=1.5.0",
"openapi-pydantic>=0.5.1",
"packaging>=24.0",
"py-key-value-aio[filetree,keyring,memory]>=0.4.4,<0.5.0",
"pyperclip>=1.9.0",
"python-multipart>=0.0.26",
"pyyaml>=6.0,<7.0",
"uncalled-for>=0.4.0",
"uvicorn>=0.35",
"watchfiles>=1.0.0",
"websockets>=15.0.1",
]