[project] name = "fastmcp-slim" dynamic = ["version", "optional-dependencies"] description = "The dependency-slim FastMCP package." authors = [{ name = "Jeremiah Lowin" }] 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,<1"] apps = ["prefab-ui>=0.18.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.18"] 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", ]