[build-system] requires = ["setuptools>=77"] build-backend = "setuptools.build_meta" [project] name = "gwsadm-mcp" dynamic = ["version"] description = "MCP server for Google Workspace security auditing — login audit, external sharing, daily brief" readme = "README.md" license = "MIT" requires-python = ">=3.10" authors = [ {name = "AIKAWA Shigechika"}, ] keywords = ["google-workspace", "mcp", "model-context-protocol", "security", "audit"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: System Administrators", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Security", ] dependencies = [ "mcp>=1.2,<2", "google-api-python-client>=2.100", "google-auth>=2.23", "google-auth-httplib2>=0.2", ] [project.scripts] gwsadm-mcp = "gwsadm_mcp.__main__:main" [project.urls] Homepage = "https://github.com/shigechika/gwsadm-mcp" Repository = "https://github.com/shigechika/gwsadm-mcp" Issues = "https://github.com/shigechika/gwsadm-mcp/issues" [dependency-groups] dev = [ "pytest", "ruff", ] [tool.setuptools] packages = ["gwsadm_mcp"] [tool.setuptools.dynamic] version = {attr = "gwsadm_mcp.__version__"} [tool.ruff] target-version = "py310" line-length = 120 # The smoke-test engine is shared verbatim with the other servers that use this # harness and is formatted at a narrower width there. Reformatting it here would # make every future sync produce a spurious diff and invite the copies to drift # apart, so it is excluded from *formatting* only — `ruff check` does not consult # this list, so its lint rules still apply. format.exclude = ["scripts/smoke_harness.py"] [tool.ruff.lint] select = ["E", "F", "I", "W", "UP"] [tool.pytest.ini_options] testpaths = ["tests"]