[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "db-connect-mcp" version = "0.10.2" description = "Multi-database MCP server for PostgreSQL, MySQL, and ClickHouse" readme = "README.md" requires-python = ">=3.10" license = { text = "MIT" } authors = [{ name = "Yuri Gui", email = "yugui923@users.noreply.github.com" }] keywords = [ "mcp", "database", "postgresql", "mysql", "clickhouse", "claude", "analysis", "data-exploration", ] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Database", "Topic :: Software Development :: Libraries :: Python Modules", "Framework :: AsyncIO", ] dependencies = [ "mcp>=2.2.0,<3.0.0", # 2026-07-28 protocol; retains legacy client support "jsonschema>=4.26.0", # MCP v2 low-level handlers require explicit input validation "pydantic>=2.13.4,<3.0.0", "orjson>=3.11.9", # Fix for deeply nested structures "sqlalchemy[asyncio]>=2.0.51", "python-dotenv>=1.2.2", "asyncpg>=0.31.0", "aiomysql>=0.3.2", # CVE-2025-62611: arbitrary file access fix "clickhouse-connect>=1.6.0", "paramiko>=5.0.0,<6.0.0", "pyjwt[crypto]>=2.13.0", # CVE-2026-32597: crit header bypass fix "httpx>=0.28.1", # For JWKS fetching and token introspection "starlette>=1.3.1", # CVE-2025-62727: Range header DoS fix "urllib3>=2.7.0", # CVE-2025-66418, CVE-2025-66471, CVE-2026-21441: decompression bomb fixes "python-multipart>=0.0.32", # CVE-2026-24486: path traversal fix "cryptography>=49.0.0", # CVE-2026-26007, CVE-2026-34073: ECC + DNS constraint fixes ] [project.urls] Homepage = "https://github.com/yugui923/db-connect-mcp" Repository = "https://github.com/yugui923/db-connect-mcp" Issues = "https://github.com/yugui923/db-connect-mcp/issues" [project.scripts] db-connect-mcp = "db_connect_mcp.server:cli_entry" [dependency-groups] dev = [ "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "pytest-cov>=7.1.0", "pytest-timeout>=2.4.0", "black>=26.5.1", # CVE-2026-32274: cache path traversal fix "ruff>=0.16.0", "pyright>=1.1.411", "hatchling>=1.31.0", "pytest-xdist>=3.8.0", "httpx>=0.28.1", "tomli>=2.4.1", ] [tool.hatch.build.targets.sdist] only-include = ["src/db_connect_mcp"] [tool.hatch.build.targets.wheel] packages = ["src/db_connect_mcp"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] [tool.coverage.run] source = ["src/db_connect_mcp"] relative_files = true omit = ["tests/*", "**/__pycache__/*"] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:", "if TYPE_CHECKING:", "class .*\\bProtocol\\):", "@(abc\\.)?abstractmethod", ]