[project] name = "rcsb-mcp" version = "0.15.0" description = "An MCP server for interrogating PDB structures — search, inspect, and cross-reference across the RCSB Search, Data, and Sequence Coordinates APIs" readme = "README.md" requires-python = ">=3.10" dependencies = [ # Upper bound is load-bearing: mcp 2.0.0 (2026-07-28) DELETED mcp.server.fastmcp # (renamed to mcp.server.mcpserver, FastMCP -> MCPServer), so an unpinned resolve # breaks `from mcp.server.fastmcp import FastMCP` in server.py at import time — # red CI, and in the image a container that dies before it binds its port. # Lift it only together with the 2.x migration. "mcp>=1.2.0,<2", "httpx>=0.27", "uvicorn>=0.30", "jinja2>=3.1", "pydantic>=2.0", # Imported directly by attribute_types for TypedDict, which pydantic requires # to come from here on Python < 3.12. Declared rather than leaned on as a # pydantic transitive. "typing-extensions>=4.12", ] [project.optional-dependencies] # Shared store for the short report link (…/r/) so it resolves across replicas. # Only needed for multi-replica HTTP deployment; install with `.[redis]`. Without it, # short links fall back to the self-contained …/r?d= link (see report/store.py). redis = ["redis>=5.0"] [dependency-groups] # Test deps. Declared here (not left to a manual venv install) so `uv sync` / `uv run` # keep them installed — otherwise a sync evicts pytest and the suite stops collecting. # pyflakes backs tests/test_static_names.py (undefined-name / unused-import tripwire). dev = ["pytest>=8", "pyflakes>=3"] [project.scripts] rcsb-mcp = "rcsb_mcp.server:main" # `hatch test` (CI) builds its own env and ignores [dependency-groups] — without this, # tests/test_static_names.py dies collecting on `import pyflakes`. Keep the pin in sync # with the dev group above. (Hatch envs have no dependency-groups option as of 1.14.) [tool.hatch.envs.hatch-test] extra-dependencies = ["pyflakes>=3"] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/rcsb_mcp"]