[project]
name = "chess_mcp"
version = "0.1.0"
description = "MCP server for Chess.com API integration"
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
"mcp[cli]>=1.21.0",
"httpx>=0.28.0",
"python-dotenv>=1.0.0",
"structlog>=23.0.0",
"fastmcp>=2.11.3",
]
[project.optional-dependencies]
dev = [
"pytest>=7.0.0",
"pytest-cov>=4.0.0",
"pytest-asyncio>=0.21.0",
"pytest-mock>=3.10.0",
]
[project.scripts]
chess-mcp = "chess_mcp.main:run_server"
[tool.setuptools]
packages = ["chess_mcp"]
package-dir = {"" = "src"}
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = "test_*.py"
python_functions = "test_*"
python_classes = "Test*"
addopts = "-v"
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
[tool.coverage.run]
source = ["src/chess_mcp"]
omit = ["*/__pycache__/*", "*/tests/*", "*/.venv/*", "*/venv/*"]
branch = true
[tool.coverage.report]
fail_under = 90
precision = 2
show_missing = true
exclude_lines = [
"pragma: no cover",
"def __repr__",
"if self.debug:",
"raise NotImplementedError",
"if __name__ == .__main__.:",
"pass",
"raise ImportError",
"if TYPE_CHECKING:",
"@abstractmethod",
]