[build-system] requires = ["hatchling>=1.27.0", "hatch-vcs>=0.4.0"] build-backend = "hatchling.build" [project] name = "odsbox-jaquel-mcp" dynamic = ["version"] description = "ASAM ODS MCP Server - Query and analyze measurement data from ASAM ODS servers in AI agent systems." readme = "README.md" requires-python = ">=3.13" license = {text = "Apache-2.0"} authors = [ {name = "Andreas K", email = "totonga@gmail.com"} ] keywords = [ "mcp", "jaquel", "odsbox", "asam", "ods", "measurement", "data access", "data science", "data analysis" ] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.13", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Scientific/Engineering :: Information Analysis", "Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator", "Topic :: System :: Monitoring", "Topic :: Database :: Front-Ends", ] dependencies = [ "fastmcp>=3.2.4,<4.0.0", "odsbox[oidc]>=1.2.0,<2.0.0", "pip-system-certs", "matplotlib<4.0.0", "Jinja2>=3.0,<4.0.0", "keyring>=25.0.0,<26.0.0", ] [dependency-groups] dev = [ "pytest>=7.0", "pytest-asyncio>=1.2.0", "ruff>=0.4", "mypy>=1.0", "build>=0.8.0", "pandas-stubs>=2.3", "python-semantic-release>=10.5.3", "pre-commit>=3.0", ] [project.scripts] odsbox-jaquel-mcp = "odsbox_jaquel_mcp.__main__:main" [project.urls] Homepage = "https://github.com/totonga/odsbox-jaquel-mcp/tree/main#readme" Documentation = "https://github.com/totonga/odsbox-jaquel-mcp/tree/main#readme" Repository = "https://github.com/totonga/odsbox-jaquel-mcp" Tracker = "https://github.com/totonga/odsbox-jaquel-mcp/issues" Changelog = "https://github.com/totonga/odsbox-jaquel-mcp/blob/main/CHANGELOG.md" [tool.ruff] line-length = 119 target-version = "py313" [tool.ruff.lint] select = ["E", "W", "F", "I"] ignore = ["E203"] [tool.ruff.format] quote-style = "double" indent-style = "space" [tool.hatch.version] source = "vcs" [tool.mypy] python_version = "3.13" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = false ignore_missing_imports = true follow_imports = "skip" no_site_packages = true files = ["odsbox_jaquel_mcp", "tests", "run_tests.py"] exclude = "(^build/|^dist/|^.*\\.egg-info/|^\\.venv/|^\\.git/|^\\.mypy_cache/|^\\.pytest_cache/|^\\.ruff_cache/)" [tool.pytest.ini_options] testpaths = ["tests"] python_files = "test_*.py" python_classes = "Test*" python_functions = "test_*" addopts = "-v --tb=short" markers = [ "integration: marks tests as integration tests (requires live ODS server)", "unit: marks tests as unit tests", ] asyncio_mode = "auto" [tool.hatch.build.targets.wheel] packages = ["odsbox_jaquel_mcp"] [tool.semantic_release] version_variables = ["server.json:version"] version_pattern = "v{version}" build_command = "" publish_cmd = "uv pip install twine && uv run twine upload dist/* --skip-existing" changelog_file = "CHANGELOG.md" branch = "main" hvcs = "github" commit_subject = "chore(release): version {version}" upload_to_pypi = true upload_to_vcs_release = true remove_dist = true allow_zero_version = false