[build-system] requires = ["hatchling>=1.27,<2"] build-backend = "hatchling.build" [project] name = "tinyfish-guided-research-mcp" version = "1.0.0" description = "Auditable deep-research MCP server powered by TinyFish Search and Fetch" readme = "README.md" requires-python = ">=3.11" license = {text = "MIT"} authors = [{name = "MohdSaleh"}] dependencies = [ "fastmcp>=4.0.3,<5", "mcp>=2,<3", "httpx>=0.28,<1", "pydantic>=2.10,<3", "psycopg[binary]>=3.2,<4", ] [project.optional-dependencies] observability = [ "opentelemetry-sdk>=1.30,<2", "opentelemetry-exporter-otlp>=1.30,<2", ] dev = [ "pytest>=9.0.3,<10", "pytest-anyio>=0.0.0", "ruff>=0.12,<1", "pyright>=1.1.400,<2", "pip-audit>=2.8,<3", "build>=1.2,<2", ] [project.scripts] tinyfish-guided-research-mcp = "tinyfish_research_mcp.server:main" tinyfish-research-mcp = "tinyfish_research_mcp.server:main" [tool.hatch.build.targets.wheel] packages = ["src/tinyfish_research_mcp"] [tool.ruff] target-version = "py311" line-length = 110 [tool.ruff.lint] # Keep the release gate focused on correctness. Formatting is enforced separately # by `ruff format`, while type-modernization preferences are intentionally not # made release blockers. select = ["E", "F", "ASYNC"] ignore = ["E501"] [tool.pyright] include = ["src", "tests"] pythonVersion = "3.11" typeCheckingMode = "basic" reportMissingImports = "warning" [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-q"