[build-system] requires = ["setuptools>=68"] build-backend = "setuptools.build_meta" [project] # Distribution name: green-agent is taken on PyPI; green-mcp is free and matches the command # users mount. The import packages (green_mcp, green_agent) and console scripts are unchanged. name = "green-mcp" version = "0.1.2" description = "Pluggable MCP server measuring two efficiency axes — CPU energy (uProf/RAPL/powermetrics) and LLM tokens — and refactoring code to be cheaper while preserving behavior" readme = "README.md" license = "MIT" requires-python = ">=3.10" # Core deps = the Green MCP Server only (stdlib + mcp). This keeps the server installable as a # standalone adapter for any IDE WITHOUT pulling the Claude Agent SDK (DEC-031). The bundled # agent needs the SDK, so it lives in the optional `agent` extra. dependencies = [ "mcp>=1.0", ] [project.optional-dependencies] # The bundled green-agent CLI (Claude Agent SDK). Not needed to mount green-mcp in an IDE. agent = [ "claude-agent-sdk>=0.1.0", ] # Static/dynamic analysis toolchain — not yet wired into a measurement axis (Roadmap). analysis = [ "ruff>=0.4", "radon>=6.0", "psutil>=5.9", ] dev = [ "claude-agent-sdk>=0.1.0", "pytest>=8", "pytest-asyncio>=0.23", "build>=1.0", ] [project.scripts] green-agent = "green_agent.cli:main" green-mcp = "green_mcp.server:main" [tool.setuptools.packages.find] where = ["src"] [tool.pytest.ini_options] testpaths = ["tests"] asyncio_mode = "auto" markers = ["integration: real-hardware tests (uProf round-trip); deselected by default"] addopts = "-m 'not integration'" [tool.ruff] line-length = 100 src = ["src", "tests"]