Skip to main content
Glama

basic-memory

pyproject.toml3.35 kB
[project] name = "basic-memory" dynamic = ["version"] description = "Local-first knowledge management combining Zettelkasten with knowledge graphs" readme = "README.md" requires-python = ">=3.12.1" license = { text = "AGPL-3.0-or-later" } authors = [ { name = "Basic Machines", email = "hello@basic-machines.co" } ] dependencies = [ "sqlalchemy>=2.0.0", "pyyaml>=6.0.1", "typer>=0.9.0", "aiosqlite>=0.20.0", "greenlet>=3.1.1", "pydantic[email,timezone]>=2.10.3", "icecream>=2.1.3", "mcp>=1.2.0", "pydantic-settings>=2.6.1", "loguru>=0.7.3", "pyright>=1.1.390", "markdown-it-py>=3.0.0", "python-frontmatter>=1.1.0", "rich>=13.9.4", "unidecode>=1.3.8", "dateparser>=1.2.0", "watchfiles>=1.0.4", "fastapi[standard]>=0.115.8", "alembic>=1.14.1", "pillow>=11.1.0", "pybars3>=0.9.7", "fastmcp>=2.10.2", "pyjwt>=2.10.1", "python-dotenv>=1.1.0", "pytest-aio>=1.9.0", "aiofiles>=24.1.0", # Async file I/O ] [project.urls] Homepage = "https://github.com/basicmachines-co/basic-memory" Repository = "https://github.com/basicmachines-co/basic-memory" Documentation = "https://github.com/basicmachines-co/basic-memory#readme" [project.scripts] basic-memory = "basic_memory.cli.main:app" bm = "basic_memory.cli.main:app" [build-system] requires = ["hatchling", "uv-dynamic-versioning>=0.7.0"] build-backend = "hatchling.build" [tool.pytest.ini_options] pythonpath = ["src", "tests"] addopts = "--cov=basic_memory --cov-report term-missing" testpaths = ["tests"] asyncio_mode = "strict" asyncio_default_fixture_loop_scope = "function" [tool.ruff] line-length = 100 target-version = "py312" [tool.uv] dev-dependencies = [ "gevent>=24.11.1", "icecream>=2.1.3", "pytest>=8.3.4", "pytest-cov>=4.1.0", "pytest-mock>=3.12.0", "pytest-asyncio>=0.24.0", "pytest-xdist>=3.0.0", "ruff>=0.1.6", "freezegun>=1.5.5", ] [tool.hatch.version] source = "uv-dynamic-versioning" [tool.uv-dynamic-versioning] vcs = "git" style = "pep440" bump = true fallback-version = "0.0.0" [tool.pyright] include = ["src/"] exclude = ["**/__pycache__"] ignore = ["test/"] defineConstant = { DEBUG = true } reportMissingImports = "error" reportMissingTypeStubs = false pythonVersion = "3.12" [tool.coverage.run] concurrency = ["thread", "gevent"] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "if self.debug:", "if settings.DEBUG", "raise AssertionError", "raise NotImplementedError", "if 0:", "if __name__ == .__main__.:", "class .*\\bProtocol\\):", "@(abc\\.)?abstractmethod", ] # Exclude specific modules that are difficult to test comprehensively omit = [ "*/external_auth_provider.py", # External HTTP calls to OAuth providers "*/supabase_auth_provider.py", # External HTTP calls to Supabase APIs "*/watch_service.py", # File system watching - complex integration testing "*/background_sync.py", # Background processes "*/cli/main.py", # CLI entry point "*/mcp/tools/project_management.py", # Covered by integration tests "*/mcp/tools/sync_status.py", # Covered by integration tests "*/services/migration_service.py", # Complex migration scenarios ] [tool.logfire] ignore_no_config = true

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/basicmachines-co/basic-memory'

If you have feedback or need assistance with the MCP directory API, please join our Discord server