[project] name = "forrt-research-mcp" version = "0.1.2" description = "MCP server for producing verifiable FORRT nanopublication chains — grounded quote verification and compact Science Live constellation projections, for replications and new research alike." readme = "README.md" requires-python = ">=3.10" license = { text = "MIT" } authors = [{ name = "Anne Fouilloux" }] keywords = ["mcp", "replication", "reproducibility", "open-science", "nanopublication", "FORRT", "science-live"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Information Analysis", ] dependencies = [ "mcp>=1.2.0,<2", # 2.0 dropped mcp.server.fastmcp; the server wrapper needs the 1.x SDK "pypdf>=4", # PDF text extraction for verify_quote "rdflib>=7", # parse template nanopubs as RDF, not by regex ] [project.urls] Homepage = "https://github.com/ScienceLiveHub/forrt-research-mcp" Repository = "https://github.com/ScienceLiveHub/forrt-research-mcp" "Replication template" = "https://github.com/ScienceLiveHub/forrt-replication-template" "Science Live" = "https://sciencelive4all.org" [project.scripts] forrt-research-mcp = "forrt_research_mcp.server:main" [project.optional-dependencies] dev = ["pytest>=8"] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/forrt_research_mcp"] # data/ holds the vendored template registry + field snapshot (offline fallback). # Without an explicit list the sdist sweeps the whole working tree — including # any local virtualenv, whose absolute symlinks make `python -m build` fail with # AbsoluteLinkError. That breaks the release workflow on a tag push, and no test # job catches it because only `publish-pypi.yml` builds an sdist. [tool.hatch.build.targets.sdist] include = [ "/src", "/tests", "/README.md", "/LICENSE", "/pyproject.toml", ] [tool.pytest.ini_options] pythonpath = ["src"] testpaths = ["tests"]