[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "lobbywatch-mcp" version = "0.3.6" description = "MCP server for the Lobbywatch.ch lobby database — conflicts of interest of Swiss parliamentarians" readme = "README.md" requires-python = ">=3.11" license = "MIT" authors = [ { name = "malkreide" }, ] keywords = [ "mcp", "model-context-protocol", "llm", "swiss-open-data", "lobbywatch", "lobbying", "transparency", "parlament", ] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Database :: Front-Ends", "Topic :: Sociology", ] dependencies = [ "mcp[cli]>=2.0.0,<3", "httpx>=0.27.0", "pydantic>=2.7.0", "rapidfuzz>=3.9.0", "structlog>=24.0,<27", ] [project.optional-dependencies] dev = [ "pytest>=8.0", "pytest-asyncio>=0.23", "respx>=0.21", "ruff==0.16.4", ] # Observability extras (audit OBS-006). Pull in OpenTelemetry SDK + OTLP # exporter + httpx instrumentation only for cloud/HTTP deployments that # actually send traces somewhere. obs = [ "opentelemetry-api>=1.20", "opentelemetry-sdk>=1.20", "opentelemetry-exporter-otlp-proto-http>=1.20", "opentelemetry-instrumentation-httpx>=0.45b0", ] [project.scripts] lobbywatch-mcp = "lobbywatch_mcp.__main__:main" [project.urls] Homepage = "https://github.com/malkreide/lobbywatch-mcp" Repository = "https://github.com/malkreide/lobbywatch-mcp" Issues = "https://github.com/malkreide/lobbywatch-mcp/issues" "Data Source" = "https://lobbywatch.ch" Portfolio = "https://github.com/malkreide" [tool.hatch.build.targets.wheel] packages = ["src/lobbywatch_mcp"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] markers = [ "live: tests that hit the real Lobbywatch endpoints (skipped in CI)", ] [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "W", "I", "B", "UP", "N"] ignore = ["E501"] [tool.ruff.format] quote-style = "double"