[project] name = "fast-agent-mcp" version = "0.10.48" description = "Code, Build and Evaluate agents - excellent Model and Skills/MCP/ACP/A2A Support" readme = "README.md" license = { file = "LICENSE" } authors = [ { name = "Shaun Smith", email = "fastagent@llmindset.co.uk"}, ] classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent" ] requires-python = ">=3.12,<3.16" dependencies = [ "fastmcp-slim[server]==4.1.3", "mcp==2.3.0", "mcp-types==2.3.0", "pydantic-settings==2.16.1", "pydantic==2.14.1", "pyyaml==6.0.3", "rich==15.0.0", "typer==0.27.3", "anthropic[vertex]==1.17.0", "openai[aiohttp,realtime]==3.37.0", "prompt-toolkit==3.0.53", "aiohttp==3.14.5", "opentelemetry-exporter-otlp-proto-http==1.45.1", "opentelemetry-instrumentation-openai==0.62.4; python_version >= '3.10' and python_version < '4.0'", "opentelemetry-instrumentation-google-genai==1.2b0", "google-genai==2.32.0", "a2a-sdk==1.2.3", "email-validator==2.3.0", "pyperclip==1.11.0", "keyring==25.7.0", "pillow>=13.0.0", "textual-image>=0.14.1", "python-frontmatter==1.3.0", "watchfiles==1.3.0", "agent-client-protocol==0.12.1", "jsonschema==4.26.0", "tiktoken==0.14.0", "uvloop==0.23.0; platform_system != 'Windows'", "ruamel.yaml==0.19.1", "huggingface_hub==2.3.0", "mslex==1.3.0", "starlette==1.9.0", "uritemplate==4.2.0", "filelock==4.2.4", ] [project.optional-dependencies] # For Azure OpenAI with DefaultAzureCredential support, install with: uv pip install fast-agent-mcp[azure] azure = [ "azure-identity>=1.25.3" ] # For AWS Bedrock support, install with: uv pip install fast-agent-mcp[bedrock] bedrock = [ "boto3>=1.43.98" ] # For TensorZero gateway support, install with: uv pip install fast-agent-mcp[tensorzero] tensorzero = [ "tensorzero>=2026.6.0" ] textual = [ "textual>=6.2.1", ] batch-parquet = [ "duckdb>=1.4", ] gepa = [ "gepa>=0.1.1", ] # Trackio's extra is suspended until it supports the security-fixed Pillow >=13. privacy = [ "onnxruntime>=1.25", "tokenizers>=0.22", "numpy>=2", ] privacy-gpu = [ # onnxruntime-gpu>=1.27 targets CUDA 13; its extras install the matching runtime and cuDNN. "onnxruntime-gpu[cuda,cudnn]>=1.27", "tokenizers>=0.22", "numpy>=2", ] # For all provider support, install with: uv pip install fast-agent-mcp[all-providers] all-providers = [ "azure-identity>=1.25.3", "boto3>=1.43.98", "tensorzero>=2026.6.0" ] # Programmatic tool calling (--ptc) sandbox, install with: uv pip install fast-agent-mcp[ptc] ptc = [ "pydantic-monty>=1.4.0", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.hooks.custom] [tool.hatch.metadata] allow-direct-references = true [tool.hatch.build] include = [ "src/fast_agent/**/*.py", "src/fast_agent/resources/**/*", "resources/shared/**/*", "src/fast_agent/py.typed", "examples/**/*", ] [tool.hatch.build.targets.wheel] packages = ["src/fast_agent"] artifacts = [ "src/fast_agent/resources/examples/**/*", ] [tool.pytest.ini_options] asyncio_mode = "strict" asyncio_default_fixture_loop_scope = "function" markers = [ "e2e: tests that connect to external resources (llms)", "integration: marks tests as integration tests", "simulated_endpoints: marks tests that use simulated external endpoints", "unit: marks tests as unit tests" ] # Filter out utcnow depreciation warnings from the boto3 library (if installed) # These filters are ignored if botocore is not installed filterwarnings = [ "ignore:datetime\\.datetime\\.utcnow\\(\\) is deprecated.*:DeprecationWarning:botocore\\.auth", "ignore:datetime\\.datetime\\.utcnow\\(\\) is deprecated.*:DeprecationWarning:botocore\\.endpoint$", ] # Other pytest options can go here too testpaths = ["tests"] [dependency-groups] dev = [ "boto3>=1.43.98", "pre-commit>=4.0.1", "pydantic>=2.10.4", "ruamel.yaml>=0.18.0", "pyyaml>=6.0.2", "ruff==0.17.1", "ty==0.0.90", "pytest>=7.4.0", "pytest-asyncio>=0.21.1", "pytest-cov>=6.1.1", "ipdb>=0.13.13", "zensical==0.0.71", "pytest-xdist>=3.8", "pydantic-monty>=1.4.0", ] [project.scripts] fast-agent = "fast_agent.cli.__main__:main" apply_patch = "fast_agent.patch.cli:main" fast-agent-mcp = "fast_agent.cli.__main__:main" fast-agent-acp = "fast_agent.cli.commands.acp:main" [tool.ruff] line-length = 100 target-version = "py312" extend-exclude = [ "docs/docs/assets/gepa-monty-runs/**/candidate-*/*.monty.py", "skills-repo/**", ] [tool.ruff.lint] select = [ "E", # pycodestyle errors "F", # pyflakes "I", # isort "TCH" # type checking ] extend-select = [ "RUF100", # stale noqa directives "RUF012", # mutable class defaults "B009", # constant getattr "B010", # constant setattr "B904", # exception chaining "B905", # explicit zip strictness "ISC004", # implicit string concatenation in collections "SIM115", # file context management "ASYNC230", # blocking file access in async functions "PLW1510", # explicit subprocess error policy ] ignore=["E501"] # More lenient settings for existing code [tool.ruff.lint.per-file-ignores] "tests/*" = ["ANN"] # Don't require type annotations in tests [tool.uv.workspace] members = [ "publish/fast-agent-acp", "publish/hf-inference-acp", ] [tool.uv.sources] fast-agent-mcp = { workspace = true } fast-agent-acp = { workspace = true } hf-inference-acp = { workspace = true }