[project] name = "mcpmc" version = "1.0.0" description = "MCPMC Expert System - Model Context Protocol Multi-Context Platform" authors = [ {name = "MCPMC Team"} ] requires-python = ">=3.13" dependencies = [ "fastapi==0.116.1", "fastmcp>=2.12.2", "pydantic==2.11.7", "sqlalchemy==2.0.43", "procrastinate[psycopg2]>=3.5.2", "asyncpg>=0.29.0", "uvicorn[standard]>=0.32.1", "python-multipart>=0.0.12", "python-jose[cryptography]>=3.3.0", "passlib[bcrypt]>=1.7.4", "httpx>=0.28.1", "aiosqlite>=0.20.0", ] [project.scripts] mcpmc = "mcpmc.mcpmc:main" [dependency-groups] dev = [ "pytest>=8.4.0", "pytest-asyncio>=1.1.0", "pytest-html>=4.1.0", "pytest-cov>=4.0.0", "ruff>=0.8.4", "watchfiles>=0.21.0", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/mcpmc"] [tool.ruff] line-length = 88 target-version = "py313" [tool.ruff.lint] select = ["E", "F", "I", "N", "W", "UP", "B", "C4", "ICN", "PIE", "T20", "RET"] ignore = ["E501"] [tool.pytest.ini_options] addopts = [ "-v", "--tb=short", "--html=reports/test_report.html", "--self-contained-html", "--cov=src", "--cov-report=html:reports/coverage_html", "--capture=no", "--log-cli-level=INFO", "--log-cli-format=%(asctime)s [%(levelname)8s] %(name)s: %(message)s", "--log-cli-date-format=%Y-%m-%d %H:%M:%S" ] testpaths = ["src/backend/tests"] markers = [ "unit: Unit tests", "integration: Integration tests", "smoke: Smoke tests for basic functionality", "performance: Performance and benchmarking tests", "agent: Expert agent system tests" ]