[build-system] requires = ["setuptools>=68", "wheel"] build-backend = "setuptools.build_meta" [project] name = "aurora-mcp" version = "0.10.1" description = "Aurora MCP server — glass-box statistical analysis for AI agents: 19 research-grade methods, cited findings, integrity-hashed bundles, zero invented numbers. Now with a calibration engine: measured false-fire rates attached to changepoint findings, verdicts downgraded when the data can't support the claim. Local-first." readme = "README.md" requires-python = ">=3.10" license = { text = "Apache-2.0" } authors = [{ name = "FantasyLab" }] keywords = [ "mcp", "model-context-protocol", "mcp-server", "llm-agents", "statistics", "data-analysis", "anomaly-detection", "forecasting", "change-point-detection", "causal-inference", "verification", "glass-box", "explainable", "local-first", ] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Scientific/Engineering :: Information Analysis", ] # The MCP server pulls in the full Aurora engine — these mirror # requirements.txt minus the Studio web server (flask lives in the # optional [http] extra for the remote-transport shim). dependencies = [ "numpy>=1.24", "pandas>=2.0", "scipy>=1.10", "scikit-learn>=1.3", "statsmodels>=0.14", "ruptures>=1.1", "sympy>=1.12", "matplotlib>=3.7", "pyarrow>=14.0", "openpyxl>=3.1", "requests>=2.31", "mcp>=1.0,<2", ] [project.optional-dependencies] http = ["flask>=3.0", "flask-cors>=4.0"] [project.scripts] aurora-mcp = "aurora_mcp.server:main" [project.urls] Homepage = "https://github.com/FantasyLab-ai/aurora" Repository = "https://github.com/FantasyLab-ai/aurora" Documentation = "https://github.com/FantasyLab-ai/aurora/blob/main/docs/mcp.md" Changelog = "https://github.com/FantasyLab-ai/aurora/blob/main/CHANGELOG.md" [tool.setuptools.packages.find] include = ["aurora_mcp*", "aurora_sdk*", "fantasyai*"] # Runtime data the engine reads at import/analysis time — domain context # libraries, equation translations, knowledge-bank pack manifest. [tool.setuptools.package-data] "*" = ["*.json"] "fantasyai.aurora.synthesis" = ["domain_libraries/*.json", "equation_translations/*.json"] "fantasyai.aurora.knowledge_bank" = ["packs/*.json"] # The calibration corpus ships with its integrity sidecar + manifest — # load_corpus refuses a table it cannot hash-verify. "fantasyai.aurora.calibration" = ["*.json", "*.sha256", "MANIFEST.md"] [tool.pytest.ini_options] testpaths = ["tests"] # Only collect ``test_*.py`` — the ``_run_manual*.py`` and ``_smoke_*.py`` files are # standalone scripts that run their own assertions and would conflict with pytest's # discovery. They're useful when pytest isn't available locally. python_files = ["test_*.py"] python_classes = ["Test*"] python_functions = ["test_*"] addopts = [ "-q", # quiet output "--strict-markers", "--strict-config", "-ra", # short summary of all skip/xfail/fail "--tb=short", ] markers = [ "slow: tests that run a real subprocess (deselect with '-m \"not slow\"')", "integration: end-to-end pipeline tests against real fixture data", ] filterwarnings = [ "ignore::DeprecationWarning", "ignore::PendingDeprecationWarning", ] [tool.aurora] # Project-specific config consumed by tooling. provenance_ledger_filename = "_provenance_ledger.jsonl" priors_count_v1 = 9 fixtures_count_v1 = 3