pyproject.toml•2.57 kB
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["template_mcp_server"]
[project]
name = "template-mcp-server"
version = "0.1.0"
description = "A template for Model Context Protocol (MCP) server development"
readme = "README.md"
keywords = ["mcp", "template", "server"]
requires-python = ">=3.12,<3.14"
dependencies = [
"fastmcp==2.10.4",
"httpx==0.28.1",
"pydantic==2.11.7",
"pydantic-settings==2.10.1",
"structlog==25.4.0",
"python-dotenv==1.1.1",
"fastapi==0.116.0",
"uvicorn==0.35.0",
"asyncpg==0.30.0",
"psycopg==3.2.3",
"itsdangerous==2.2.0",
"requests-oauthlib==2.0.0",
]
[project.optional-dependencies]
dev = [
"pytest==8.4.1",
"pytest-asyncio==1.0.0",
"pytest-cov==6.2.1",
"ruff==0.12.2",
"mypy==1.16.1",
"pre-commit==4.2.0",
"httpx==0.28.1",
"langchain-google-genai ==2.1.8",
"langchain_mcp_adapters==0.1.8",
"langgraph==0.5.4",
"bandit==1.8.6"
]
[project.scripts]
template-mcp-server = "template_mcp_server.src.main:main"
[project.urls]
Homepage = "https://github.com/redhat-data-and-ai/template-mcp-server"
Repository = "https://github.com/redhat-data-and-ai/template-mcp-server"
Issues = "https://github.com/redhat-data-and-ai/template-mcp-server/issues"
[tool.ruff]
target-version = "py312"
line-length = 88
lint.select = ["E", "W", "F", "I", "F401"]
lint.ignore = ["E501"]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
[tool.ruff.lint.isort]
known-first-party = ["src"]
[tool.mypy]
python_version = "3.12"
ignore_missing_imports = true
disallow_untyped_defs = false
disallow_incomplete_defs = false
check_untyped_defs = false
disallow_untyped_decorators = false
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_no_return = true
warn_unreachable = true
strict_equality = true
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
addopts = [
"--strict-markers",
"--strict-config",
]
markers = ["asyncio"]
[tool.coverage.run]
source = ["src"]
omit = [
"*/tests/*",
"*/test_*",
"*/__pycache__/*",
"*/migrations/*",
]
[tool.coverage.report]
exclude_lines = [
"pragma: no cover",
"def __repr__",
"if self.debug:",
"if settings.DEBUG",
"raise AssertionError",
"raise NotImplementedError",
"if 0:",
"if __name__ == .__main__.:",
"class .*\\bProtocol\\):",
"@(abc\\.)?abstractmethod",
]