[build-system] requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta" [project] name = "falcon-mcp" version = "0.19.0" description = "CrowdStrike Falcon MCP Server" readme = "README.md" requires-python = ">=3.11" license = {text = "MIT"} authors = [ {name = "CrowdStrike", email = "cloud-integrations@crowdstrike.com"} ] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", ] dependencies = [ "anyio>=4.5", "crowdstrike-falconpy>=1.6.4", "mcp>=1.28.1,<2.0.0", "python-dotenv>=1.1.1", ] [project.optional-dependencies] dev = [ "pytest>=7.0.0", "pytest-asyncio>=0.21.0", "mypy>=1.0.0", "ruff>=0.12.5", "black>=23.0.0", "starlette>=1.3.1", "sse-starlette>=2.0.0", ] [project.scripts] falcon-mcp = "falcon_mcp.server:main" [tool.uv] constraint-dependencies = [ "pyjwt>=2.12.0", "idna>=3.15", "requests>=2.33.0", "cryptography>=50.0.0", ] [tool.black] line-length = 100 target-version = ["py311"] [tool.mypy] python_version = "3.11" warn_return_any = false warn_unused_configs = true disallow_untyped_defs = true disallow_incomplete_defs = true # Ignore missing stubs for third-party libraries ignore_missing_imports = true [[tool.mypy.overrides]] module = "tests.*" disallow_untyped_defs = false disallow_incomplete_defs = false disable_error_code = ["arg-type", "valid-type", "attr-defined", "misc"] [[tool.mypy.overrides]] module = "scripts.*" disallow_untyped_defs = false disallow_incomplete_defs = false [[tool.mypy.overrides]] module = "falcon_mcp.modules.*" # Pydantic Field() overloads cause call-overload errors - ignore them # Union return types cause union-attr errors - code handles these correctly at runtime # These are not actual type errors, just mypy/pydantic typing quirks disable_error_code = ["call-overload", "return-value", "list-item", "arg-type", "union-attr"] disallow_untyped_defs = false [[tool.mypy.overrides]] module = "examples.*" disallow_untyped_defs = false disallow_incomplete_defs = false [tool.ruff] target-version = "py311" line-length = 100 [tool.setuptools.packages.find] include = ["falcon_mcp*"] [tool.pytest.ini_options] testpaths = ["tests"] asyncio_mode = "auto" filterwarnings = [ "ignore::DeprecationWarning:websockets.*:", "ignore::DeprecationWarning:uvicorn.protocols.websockets.*:", ]