[project]
name = "stravinsky"
version = "0.4.38"
description = "MCP Bridge for Claude Code with Multi-Model Support. Install globally: claude mcp add --scope user stravinsky -- uvx stravinsky. Add to CLAUDE.md: See https://pypi.org/project/stravinsky/"
readme = "README.md"
requires-python = ">=3.11,<3.14"
license = {text = "MIT"}
authors = [
    {name = "Stravinsky Team"}
]
keywords = ["mcp", "claude", "gemini", "openai", "oauth"]

dependencies = [
    "mcp>=1.2.1",
    "pydantic>=2.0.0",
    "httpx>=0.24.0",
    "python-dotenv>=1.0.0",
    "google-auth-oauthlib>=1.0.0",
    "google-auth>=2.20.0",
    "google-genai>=0.2.0",
    "openai>=1.0.0",
    "cryptography>=41.0.0",
    "rich>=13.0.0",
    "aiofiles>=23.1.0",
    "psutil>=5.9.0",
    "keyring>=25.7.0",
    "jedi>=0.19.2",
    "ruff>=0.14.10",
    "tenacity>=8.5.0",
    "watchdog~=5.0.0",
    "plyer>=2.1.0",
    "pygls>=1.3.0",
    "lsprotocol>=2023.0.0",
    "jedi-language-server>=0.41.0",
    "ollama>=0.6.1",
    "chromadb>=0.6.0",
    "pathspec>=0.12.0",
]

[project.urls]
Repository = "https://github.com/GratefulDave/stravinsky"
Issues = "https://github.com/GratefulDave/stravinsky/issues"

[project.optional-dependencies]
semantic = [
    "chromadb>=0.5.0",
]
dev = [
    "pytest>=8.0.0",
    "pytest-asyncio>=0.23.0",
    "ruff>=0.4.0",
    "mypy>=1.10.0",
]

[project.scripts]
stravinsky = "mcp_bridge.server:main"
stravinsky-auth = "mcp_bridge.auth.cli:main"
stravinsky-sessions = "mcp_bridge.cli.session_report:main"
stravinsky-install-hooks = "mcp_bridge.cli.install_hooks:main"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["mcp_bridge"]

[tool.ruff]
line-length = 100
target-version = "py311"

[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B", "SIM"]
ignore = ["E501"]

[tool.mypy]
python_version = "3.11"
strict = true
warn_return_any = true
warn_unused_ignores = true

[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
