[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "african-speech-mcp" version = "2.0.0" description = "Quality-aware read-only MCP server for Wolof speech corpus selection" readme = "README.md" requires-python = ">=3.11" license = "Apache-2.0" license-files = ["LICENSE"] authors = [{ name = "Papa Sega Wade" }] keywords = ["mcp", "speech", "african-languages", "wolof", "asr", "corpus"] classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "License :: OSI Approved :: Apache Software License", ] dependencies = [ "mcp>=2.1.0,<3", "httpx>=0.27,<1", "pydantic>=2.8,<3", "pydantic-settings>=2.4,<3", "loguru>=0.7.2,<1", "typer>=0.12,<1", ] [project.optional-dependencies] dev = [ "build>=1.2", "pytest>=8.0", "pytest-asyncio>=0.23", "ruff>=0.5", ] [project.scripts] african-speech-mcp = "african_speech_mcp.cli:app" [project.urls] Homepage = "https://github.com/papasega/african-speech-mcp" Repository = "https://github.com/papasega/african-speech-mcp" [tool.hatch.build.targets.wheel] packages = ["src/african_speech_mcp"] [tool.hatch.build.targets.wheel.force-include] "assets/wolof-audit-2026.csv" = "african_speech_mcp/data/wolof-audit-2026.csv" "assets/wolof-audit-2026.md" = "african_speech_mcp/data/wolof-audit-2026.md" [tool.hatch.build.targets.sdist] include = [ "/LICENSE", "/README.md", "/CHANGELOG.md", "/assets/wolof-audit-2026.csv", "/assets/wolof-audit-2026.md", "/pyproject.toml", "/server.json", "/src", "/tests", ] [tool.ruff] line-length = 100 target-version = "py311" src = ["src", "tests"] [tool.ruff.lint] # B008 is a false positive for Typer: Option() in defaults is the documented API. ignore = ["B008"] [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "function" testpaths = ["tests"]