[project] name = "kaiten-mcp" version = "0.1.0" description = "MCP-сервер для Kaiten: задачи и канбан в Cursor и Claude Code" readme = "README.md" license = "MIT" license-files = ["LICENSE"] authors = [ { name = "evv", email = "evv.bmstu@gmail.com" } ] requires-python = ">=3.12" keywords = [ "kaiten", "mcp", "model-context-protocol", "cursor", "claude", "kanban", "task-management", "ai", ] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Software Development :: Libraries", "Typing :: Typed", ] dependencies = [ "httpx>=0.28.1", "mcp[cli]>=1.9", "pydantic>=2.13.4", "pydantic-settings>=2.14.2", ] [project.urls] Homepage = "https://github.com/evvfebruary/kaiten-mcp" Repository = "https://github.com/evvfebruary/kaiten-mcp" Issues = "https://github.com/evvfebruary/kaiten-mcp/issues" [project.scripts] kaiten-mcp = "kaiten_mcp.__main__:main" kaiten-mcp-benchmark = "kaiten_mcp.benchmark:main" [build-system] requires = ["uv_build>=0.11.19,<0.12.0"] build-backend = "uv_build" [dependency-groups] dev = [ "pytest>=9.1.1", "pytest-asyncio>=1.4.0", "pytest-cov>=7.1.0", "respx>=0.23.1", "ruff>=0.15.22", "ty>=0.0.60", ] [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" testpaths = ["tests"] markers = [ "live: opt-in tests that call the real Kaiten API", ] filterwarnings = [ "ignore::DeprecationWarning", ] [tool.ruff] target-version = "py312" line-length = 100 src = ["src", "tests", "benchmarks"] [tool.ruff.lint] select = [ "E", "F", "I", "UP", "B", "SIM", "RUF", ] [tool.ruff.lint.per-file-ignores] "tests/**" = ["S101"] [tool.ty.environment] python-version = "3.12" [tool.ty.src] include = ["src", "tests", "benchmarks"]