[project] name = "datagouv-mcp" dynamic = ["version"] description = "Model Context Protocol (MCP) server for interacting with data.gouv.fr datasets and resources via LLM chatbots" authors = [{ name = "data.gouv.fr", email = "opendatateam@data.gouv.fr" }] readme = "README.md" requires-python = ">=3.13,<3.15" dependencies = [ "httpx>=0.28.0", "mcp>=1.25.0,<2", "pyyaml>=6.0", "sentry-sdk>=2.54.0", ] [build-system] requires = ["setuptools>=61.0", "setuptools-scm>=8.0"] build-backend = "setuptools.build_meta" [dependency-groups] dev = [ "pytest>=9.0.0", "pytest-httpx>=0.35.0", "pytest-asyncio>=0.23.0", "ruff>=0.14.0", "ty>=0.0.18", ] [tool.setuptools_scm] [tool.ruff.lint] # Match CI: `ruff check --select I .` — default Ruff select does not include isort (I). extend-select = ["I"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] markers = [ "stress: stress tests requiring a running MCP server (not run by default)", "health_check: health check requiring a running MCP server (not run by default)", ] addopts = "-m 'not stress and not health_check'"