[project]
name = "hot-memory-mcp"
version = "0.7.4"
description = "Engram-inspired memory MCP server with hot cache and pattern mining"
readme = "README.md"
license = "MIT"
requires-python = ">=3.10"
authors = [
{ name = "Memory MCP Contributors" }
]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
]
dependencies = [
"fastmcp>=2.0,<3", # Pin to v2 for stability until v3 is released
"sqlite-vec>=0.1,<1", # Pre-1.0 package - pin to avoid breaking changes
"sentence-transformers>=3.0,<4", # Major version bound for stability
"pydantic>=2.0,<3",
"pydantic-settings>=2.0,<3",
"loguru>=0.7,<1",
"click>=8.0,<9",
"rich>=13.0,<14",
"fastapi>=0.100,<1", # Web dashboard
"uvicorn[standard]>=0.20,<1", # ASGI server for dashboard
"jinja2>=3.0,<4", # Template engine for dashboard
"transformers>=4.0,<5", # NER-based entity extraction for pattern mining
# Apple Silicon gets MLX by default for 10x faster embeddings
"mlx-embeddings>=0.0.5; sys_platform == 'darwin' and platform_machine == 'arm64'",
]
[project.optional-dependencies]
mlx = ["mlx-embeddings>=0.0.5"] # Explicit MLX install (for non-arm64 macs experimenting)
[project.scripts]
memory-mcp = "memory_mcp.server:main"
memory-mcp-cli = "memory_mcp.cli:main"
[project.urls]
Homepage = "https://github.com/michael-denyer/memory-mcp"
Repository = "https://github.com/michael-denyer/memory-mcp"
Issues = "https://github.com/michael-denyer/memory-mcp/issues"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/memory_mcp"]
[tool.pytest.ini_options]
testpaths = ["tests"]
pythonpath = ["src"]
[tool.ruff]
line-length = 100
target-version = "py310"
[tool.ruff.lint]
select = ["E", "F", "I", "N", "W"]
[tool.mypy]
ignore_missing_imports = true
no_strict_optional = true
# Disable attribute checking for mixin classes - mypy can't understand
# that mixins will be combined with Storage class at runtime
[[tool.mypy.overrides]]
module = "memory_mcp.storage.*"
disable_error_code = ["attr-defined", "misc"]
[dependency-groups]
dev = [
"pytest>=9.0.2",
"pre-commit>=3.0",
"ruff>=0.14,<0.15",
"pytest-randomly>=4.0.1",
]