[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "swiss-electricity-mcp" version = "0.2.5" description = "MCP server for Swiss electricity data — Energiedashboard (BFE), ElCom tariffs, consumption" readme = "README.md" requires-python = ">=3.11" license = { text = "MIT" } authors = [{ name = "Hayal Oezkan" }] keywords = [ "mcp", "model-context-protocol", "llm", "swiss-open-data", "electricity", "energy", "elcom", "bfe", "tariffs", "sustainability", ] classifiers = [ "Development Status :: 4 - Beta", "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", "Topic :: Scientific/Engineering", ] dependencies = [ "mcp[cli]>=2.0.0,<3", "httpx>=0.27.0", "pydantic>=2.6.0", # mcp 1.x pulled pydantic-settings in transitively; mcp 2.x dropped it, so # the Settings object this server imports needs an explicit dependency. "pydantic-settings>=2.0", "structlog>=24.1.0,<27", ] [project.optional-dependencies] dev = [ "pytest>=8.0.0", "pytest-asyncio>=0.23.0", "respx>=0.21.0", # Exakt gepinnt, nicht `>=`: ruff ist ein Gate, kein Hilfsmittel. Eine # andere Version meldet Abweichungen an Code, den niemand angefasst hat. # # Diese Zeile ist die Quelle. `.pre-commit-config.yaml` traegt dieselbe # Zahl ein zweites Mal, weil pre-commit pyproject.toml nicht lesen kann — # beide zusammen bumpen. Die Workflows pinnen NICHT selbst: Ein solcher # Schritt liefe nach dem Install und wuerde diese Zeile ueberschreiben. # scripts/check_version_sync.py prueft beides: Gleichstand der zwei # Stellen und Abwesenheit eines eigenen CI-Pins. "ruff==0.16.3", ] otel = [ "opentelemetry-sdk>=1.25.0", "opentelemetry-exporter-otlp-proto-http>=1.25.0", "opentelemetry-instrumentation-httpx>=0.46b0", ] [project.scripts] swiss-electricity-mcp = "swiss_electricity_mcp.__main__:main" [project.urls] Homepage = "https://github.com/malkreide/swiss-electricity-mcp" Repository = "https://github.com/malkreide/swiss-electricity-mcp" Issues = "https://github.com/malkreide/swiss-electricity-mcp/issues" Portfolio = "https://github.com/malkreide/swiss-public-data-mcp" [tool.hatch.build.targets.wheel] packages = ["src/swiss_electricity_mcp"] [tool.pytest.ini_options] asyncio_mode = "auto" markers = ["live: tests that hit live APIs (excluded from CI)"] testpaths = ["tests"] [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "I", "W", "UP", "B"] ignore = ["E501"]