[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "au-weather-mcp" version = "0.4.10" description = "MCP server for Australian weather + air quality. 45 curated locations + postcode/place-name lookup. Current observations, 16-day forecasts, 80+ years of historical data, air quality (PM2.5 / AQI), and multi-location comparison. Sourced via Open-Meteo (aggregates Bureau of Meteorology data under licence)." readme = "README.md" requires-python = ">=3.11" license = { text = "MIT" } authors = [{ name = "Harry Vass" }] keywords = [ "mcp", "model-context-protocol", "claude", "fastmcp", "weather", "bom", "bureau-of-meteorology", "open-meteo", "forecast", "climate", "australia", "australian", "public-data", "government-data", "air-quality", ] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Scientific/Engineering :: Atmospheric Science", "Topic :: Scientific/Engineering :: Information Analysis", "Typing :: Typed", ] dependencies = [ "fastmcp>=2.0,<4", "httpx>=0.27", "pydantic>=2.7", "rapidfuzz>=3.9", "aiosqlite>=0.20", "PyYAML>=6.0", ] [project.optional-dependencies] dev = [ "pytest>=8", "pytest-asyncio>=0.23", "respx>=0.21", ] [project.scripts] au-weather-mcp = "au_weather_mcp.server:main" [project.urls] Homepage = "https://ausdata.io" Documentation = "https://ausdata.io/sources/au-weather/" Repository = "https://github.com/Bigred97/au-weather-mcp" Issues = "https://github.com/Bigred97/au-weather-mcp/issues" Changelog = "https://github.com/Bigred97/au-weather-mcp/blob/main/CHANGELOG.md" PyPI = "https://pypi.org/project/au-weather-mcp/" [tool.hatch.build.targets.wheel] packages = ["src/au_weather_mcp"] [tool.pytest.ini_options] asyncio_mode = "auto" markers = ["live: hits the real Open-Meteo API"] addopts = "-m 'not live'" testpaths = ["tests"] pythonpath = ["src"] [tool.ruff] line-length = 100 [tool.ruff.lint.per-file-ignores] "tests/*" = ["E741", "F841", "F401"]