[project] name = "pcp-mcp" version = "1.5.1" description = "MCP server for Performance Co-Pilot" readme = "README.md" license = "MIT" authors = [{ name = "Major Hayden", email = "major@mhtx.net" }] requires-python = ">=3.10" keywords = ["mcp", "pcp", "performance-co-pilot", "monitoring", "model-context-protocol"] classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: System :: Monitoring", "Typing :: Typed", ] dependencies = [ "cachetools>=5.0", "fastmcp>=3.1", "httpx>=0.27", "pydantic-settings>=2.0.0", "typing_extensions>=4.0; python_version < '3.11'", ] [project.urls] Homepage = "https://github.com/major/pcp-mcp" Repository = "https://github.com/major/pcp-mcp" [project.scripts] pcp-mcp = "pcp_mcp:main" [build-system] requires = ["uv_build>=0.9.18"] build-backend = "uv_build" [dependency-groups] dev = [ "pytest>=8", "pytest-cov>=6", "pytest-asyncio>=0.25", "respx>=0.22", "ty>=0.0.12", "ruff>=0.9", "radon>=6", "pytest-randomly>=4.0.1", "mkdocs-material>=9.5", "mkdocstrings[python]>=0.27", "commitizen>=4.0", ] [tool.uv.build-backend] module-name = "pcp_mcp" [tool.ruff] target-version = "py310" line-length = 100 [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "SIM", "ASYNC", "D"] ignore = [ "D100", # Missing docstring in public module "D104", # Missing docstring in public package "D105", # Missing docstring in magic method "D107", # Missing docstring in __init__ "UP045", # Optional[X] vs X | None - Pydantic needs Optional in Annotated params ] [tool.ruff.lint.per-file-ignores] "tests/**/*.py" = ["D"] [tool.ruff.lint.pydocstyle] convention = "google" [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" testpaths = ["tests"] addopts = "--cov=pcp_mcp --cov-report=term-missing" [tool.coverage.run] source = ["src/pcp_mcp"] branch = true [tool.coverage.report] exclude_lines = [ "pragma: no cover", "if TYPE_CHECKING:", "raise NotImplementedError", ] [tool.ty.environment] python-version = "3.14" python-platform = "linux" extra-paths = ["src"] [tool.pyright] pythonVersion = "3.10" pythonPlatform = "Linux" venvPath = "." venv = ".venv" typeCheckingMode = "standard" [tool.commitizen] name = "cz_conventional_commits" version_provider = "pep621" tag_format = "v$version" update_changelog_on_bump = true changelog_file = "CHANGELOG.md" changelog_incremental = true bump_message = "bump: version $current_version → $new_version"