2026-05-06 01:04:47 -07:00
|
|
|
[project]
|
|
|
|
|
name = "iai-mcp"
|
|
|
|
|
version = "0.1.0"
|
|
|
|
|
description = "MCP server providing persistent verbatim memory and ambient capture for MCP-over-stdio hosts (developed against Claude Code)"
|
|
|
|
|
requires-python = ">=3.11,<3.13"
|
|
|
|
|
dependencies = [
|
|
|
|
|
"lancedb>=0.11.0",
|
|
|
|
|
"pyarrow>=16.0.0",
|
|
|
|
|
"sentence-transformers>=3.0.0",
|
2026-05-22 06:11:36 +00:00
|
|
|
"numpy>=2.4.6,<3.0.0",
|
2026-05-06 01:04:47 -07:00
|
|
|
"networkx>=3.3",
|
|
|
|
|
"python-igraph>=0.11",
|
|
|
|
|
"leidenalg>=0.10",
|
|
|
|
|
"anthropic>=0.40.0", # count_tokens API for bench harness
|
|
|
|
|
"tiktoken>=0.7.0", # offline tokeniser fallback for bench/tokens.py when no API key
|
|
|
|
|
"langdetect>=1.0.9", # ISO-639-1 language auto-detect (pure Python, no-cloud)
|
|
|
|
|
"cryptography>=42.0.0", # AES-256-GCM at rest (pyca/cryptography, audited primitive)
|
|
|
|
|
"keyring>=24.0.0", # OS keychain (macOS / Linux Secret Service / Windows Credential Manager)
|
|
|
|
|
"cachetools>=5.3.0", # TTLCache for activation-cascade LRU
|
|
|
|
|
"psutil>=5.9.0", # daemon CPU watchdog + doctor checks
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
[project.optional-dependencies]
|
|
|
|
|
dev = [
|
|
|
|
|
"pytest>=8.0",
|
|
|
|
|
"pytest-cov>=5.0",
|
|
|
|
|
"pytest-rerunfailures>=14.0", # auto-retry test-pollution flakes (daemon/bridge tests)
|
|
|
|
|
"ruff>=0.5.0",
|
|
|
|
|
]
|
|
|
|
|
# Optional: LLMLingua-2 compression for community summaries (~2.3 GB model).
|
|
|
|
|
# Without this extra, compression falls back to passthrough.
|
|
|
|
|
compress = ["llmlingua>=0.2.2", "accelerate>=1.0.0"]
|
|
|
|
|
|
|
|
|
|
[project.scripts]
|
|
|
|
|
iai-mcp-core = "iai_mcp.core:main"
|
|
|
|
|
iai-mcp = "iai_mcp.cli:main"
|
|
|
|
|
|
|
|
|
|
[build-system]
|
|
|
|
|
requires = ["hatchling"]
|
|
|
|
|
build-backend = "hatchling.build"
|
|
|
|
|
|
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
|
|
|
packages = ["src/iai_mcp"]
|
|
|
|
|
|
|
|
|
|
[tool.pytest.ini_options]
|
|
|
|
|
testpaths = ["tests"]
|
|
|
|
|
pythonpath = ["src"]
|
|
|
|
|
# A handful of daemon/bridge tests are sensitive to test-pollution from earlier
|
|
|
|
|
# tests in the same suite (open file descriptors, async loop state) and pass
|
|
|
|
|
# cleanly when run in isolation. Retry up to twice before reporting failure.
|
|
|
|
|
addopts = "--reruns 2 --reruns-delay 1"
|