[project] name = "primer-mcp" version = "0.1.4" description = "A Jira-lite MCP server that guides planning-first workflows for AI-assisted development — tickets as markdown files, your AI agent as the interface." readme = "README.md" license = { file = "LICENSE" } authors = [{ name = "Ivan Lai" }] requires-python = ">=3.12" keywords = ["mcp", "planning", "tickets", "ai-agents", "markdown"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: Software Development", ] dependencies = [ "mcp", "pydantic", "python-frontmatter", "pyyaml", "networkx", ] [project.urls] Homepage = "https://github.com/ivanlai/primer-mcp" Repository = "https://github.com/ivanlai/primer-mcp" Issues = "https://github.com/ivanlai/primer-mcp/issues" [project.scripts] primer-mcp = "primer_mcp.__main__:main" [dependency-groups] dev = [ "pytest", "ruff", "mypy", "types-pyyaml", "types-networkx>=3.6.1.20260728", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/primer_mcp"] # The sdist otherwise ships the whole repo. Tests and docs belong there — a # source build should be verifiable — but these two do not. [tool.hatch.build.targets.sdist] exclude = [ "primer/", # this project's own ticket store: project management, not software ".claude/", # local agent settings, carries absolute paths from the dev machine "docs/", # design docs — stale once the code is the source of truth ] [tool.ruff] line-length = 100 target-version = "py312" [tool.mypy] strict = true files = ["src"] [[tool.mypy.overrides]] module = "frontmatter" ignore_missing_imports = true [tool.pytest.ini_options] testpaths = ["tests"]