basicmachines-co/basic-memory

basicmachines-co/basic-memory

от basicmachines-co
Basic Memory — MCP-сервер для постоянной памяти AI. Хранит заметки в Markdown с графом знаний и семантическим поиском. AI и человек пишут в одни файлы, контекст не теряется. Доступен локально или о...

License: AGPL v3 PyPI version Python 3.12+ Tests Ruff Ask DeepWiki

Skip the install — try Basic Memory in the cloud

Claude, Codex, or Cursor connected in 30 seconds. No Python, no JSON, no terminal. $15.00/mo locked in for life (12.50/mo yearly pricing). 7-day free trial — cancel any time before day 7 if it's not for you. Beta pricing — sign up now and your rate never goes up. OSS users: code BMFOSS takes another 20% off for 3 months.

Start free trial →

Basic Memory Teams is now available!

Give your team a single, shared cloud workspace. Knowledge isn't confined to one person — anything a teammate writes is immediately available to everyone else and to their AI assistants. Edit a note together in real time, hand work off between humans and agents, and build one connected knowledge base instead of scattered copies. Same pricing - start with one user and add more as needed.


Basic Memory

Your AI never forgets again.

Pick up right where you left off — in Claude, Codex, Cursor, ChatGPT, or anything that speaks MCP. Your knowledge lives as Markdown files that both you and your AI can read, write, and search.

Инструменты были проиндексированы:
basic_memory_diagnosticsтолько чтение

Возвращает диagnostику версии, системы и конфигурации для Basic Memory. Предоставляет: - версию пакета Basic Memory - версию Python и сведения о платформе - путь к файлу конфигурации и его содеРжимое (секреты скрыты) Помогает выявлять и устранять неполадки при установке и собировать информацiiю для обращений в поддержку. Только для чтения, никогда не выдает секреты и API-ключи.

Базовая диагностика памяти

Параметры

Без параметров.

build_contextтолько чтение

Создаёт контекст из URI вида memory://, чтобы естественно продолжать диалоги. Используйте это, чтобы продолжить предыдущие обсуждения или изучить смежные темы. Формат Memory URL: - Используйте пути вида "folder/note" или "memory://folder/note" - Сопоставление с шаблоном: "folder/" соответствует всем заметкам в папке. - Допустимые символы: буквы, цифры, дефисы, подчёркивания, прямые слэши. - Избегайте: двойных слэшей (//), угловых скобок (<>), кавычек, вертикальной черты (|). - Примеры: "specs/search", "projects/basic-memory", "notes/" Временные диапазоны поддерживают естественный язык, например: - "2 days ago", "last week", "today", "3 months ago" - Или стандартные форматы, например "7d", "24h" Варианты формата: - "json" (по умолчанию): структурированный JSON, исключая внутренние поля. - "text": компактный Markdown-текст для LLM. Обращается к API базы знаний Basic Memory: см. https://docs.basicmemory.com/concepts/memory-urls

Build Context

Параметры
  • depthstring | integer | null

    How many relation hops to traverse (1-3 recommended for performance)

  • max_relatedinteger

    Maximum total related results to return (default: 10, maximum: 100)

  • output_formatenum

    Response format - "json" for structured JSON dict, "text" for compact markdown text

  • pageinteger

    Page number of results to return (default: 1)

  • page_sizeinteger

    Number of primary results to return per page (default: 10, maximum: 50)

  • projectstring | null

    Project name to build context from. Optional - server will resolve using hierarchy. If unknown, use list_memory_projects() to discover available projects.

  • project_idstring | null

    Project external_id (UUID). Prefer this over project when known — it routes to the exact project regardless of name collisions across cloud workspaces. Takes precedence over project. Get from list_memory_projects().

  • timeframestring | null

    How far back to look. Supports natural language like "2 days ago", "last week"

  • urlstringобязательный

    memory:// URI pointing to discussion content (e.g. memory://specs/search)

create_memory_project

Создаёт новый проект Basic Memory. Создаёт новый проект с указанными именем и путём. Каталог проекта создаётся, если его не существует. Опционально устанавливает новый проект в качестве проекта по умолчанию.

Создать Memory Project

Параметры
  • output_formatenum

    "text" returns the existing human-readable result text. "json" returns structured project creation metadata.

  • project_namestringобязательный

    Name for the new project (must be unique)

  • project_pathstringобязательный

    File system path where the project will be stored

  • set_defaultboolean

    Whether to set this project as the default (optional, defaults to False)

  • workspacestring | null

    Optional cloud workspace selector to create the project in. Slug is preferred for AI callers, but tenant_id and unique name are also accepted. When omitted, the connection's default workspace is used. Discover values via list_workspaces. A workspace selector implies cloud routing: without cloud credentials the call fails fast instead of silently creating a local project (#954).

delete_note

Удаляет заметку или директорию по заголовку, постоянной ссылке или пути

Удаляет заметку

Параметры
  • identifierstringобязательный

    For files: note title or permalink to delete. For directories: the directory path (e.g., "docs", "projects/2025"). Can be a title like "Meeting Notes" or permalink like "notes/meeting-notes"

  • is_directoryboolean

    If True, deletes an entire directory and all its contents. When True, identifier should be a directory path (without file extensions). Defaults to False.

  • output_formatenum

    "text" preserves existing behavior (bool/string). "json" returns machine-readable deletion metadata.

  • projectstring | null

    Project name to delete from. Optional - server will resolve using hierarchy. If unknown, use list_memory_projects() to discover available projects.

  • project_idstring | null

    Project external_id (UUID). Prefer this over project when known — it routes to the exact project regardless of name collisions across cloud workspaces. Takes precedence over project. Get from list_memory_projects().

delete_project

Удаляет проект Basic Memory. Убирает проект из конфигурации и записей базы данных Basic Memory. По умолчанию файлы заметок проекта сохраняются: локальные проекты оставляют файлы на диске, облачные проекты оставляют файлы в облачном хранилище. Передайте delete_notes=True, чтобы также удалить сами файлы заметок.

Удаляет проект

Параметры
  • delete_notesboolean

    Also delete the project's note files (from local disk for local projects, from cloud storage for cloud projects). Defaults to False, which only stops tracking the project.

  • project_namestringобязательный

    Name of the project to delete

  • workspacestring | null

    Optional cloud workspace selector to delete the project from. Slug is preferred for AI callers, but tenant_id and unique name are also accepted. When omitted, the connection's default workspace is used. A workspace selector implies cloud routing: without cloud credentials the call fails fast, matching create_memory_project behavior (#954).

edit_note

Редактирует существующую заметку Markdown с помощью различных операций: append, prepend, find_replace, replace_section, insert_before_section или insert_after_section. Передаёт метаданные для слияния полей YAML frontmatter независимо от операции.

Редактирует заметку

Параметры
  • contentstringобязательный

    The content to add or use for replacement

  • expected_replacementsinteger | null

    For find_replace operation - the expected number of replacements (validation will fail if actual doesn't match)

  • find_textstring | null

    For find_replace operation - the text to find and replace

  • identifierstringобязательный

    The exact title, permalink, or memory:// URL of the note to edit. Must be an exact match - fuzzy matching is not supported for edit operations. Use search_notes() or read_note() first to find the correct identifier if uncertain.

  • metadataobject | null

    Optional dict of frontmatter fields to merge, independent of operation. Provided keys overwrite existing frontmatter values (or are added if new); unrelated frontmatter keys and the note body are left untouched. Can be combined with any operation in the same call. title, type, and permalink are ignored since those have their own dedicated handling. Key deletion is not supported.

  • operationenumобязательный

    The editing operation to perform: - "append": Add content to the end of the note (creates the note if it doesn't exist) - "prepend": Add content to the beginning of the note (creates the note if it doesn't exist) - "find_replace": Replace occurrences of find_text with content (note must exist) - "replace_section": Replace a markdown section identified by its header (note must exist). By default the section spans through the next heading of the same or higher level, so its subsections are replaced too; see replace_subsections. - "insert_before_section": Insert content before a section heading without consuming it (note must exist) - "insert_after_section": Insert content after a section heading without consuming it (note must exist)

  • output_formatenum

    "text" returns the existing markdown summary. "json" returns machine-readable edit metadata.

  • projectstring | null

    Project name to edit in. Optional - server will resolve using hierarchy. Use "workspace/project" to route to a project in a specific cloud workspace. If unknown, use list_memory_projects() to discover available projects.

  • project_idstring | null

    Project external_id (UUID). Prefer this over project when known — it routes to the exact project regardless of name collisions across cloud workspaces. Takes precedence over project. Get from list_memory_projects().

  • replace_subsectionsboolean | null

    For replace_section operation. Default (true): the section spans everything through the next heading of the same or higher level in the original note, so replacing "## Section" also replaces its "###" subsections — the replacement content may freely introduce new headings. Set to false to replace only the immediate content under the header, stopping at the next heading of any level and preserving subsections.

  • sectionstring | null

    For replace_section operation - the markdown header to replace content under (e.g., "## Notes", "### Implementation")

  • workspacestring | null

    Workspace slug, name, or tenant_id. When provided with project, routes as workspace/project. Cannot be combined with project_id.

fetchтолько чтение

Извлекает полное содержимое документа результатов поиска.

Извлекает документ

Параметры
  • idstringобязательный

    Document identifier (permalink, title, or memory URL)

list_directoryтолько чтение

Выводит содержимое каталога с фильтрацией и контролем глубины.

List Directory

Параметры
  • depthinteger

    Recursion depth (1-10, default: 1 for immediate children only) Higher values show subdirectory contents recursively

  • dir_namestring

    Directory path to list (default: root "/") Examples: "/", "/projects", "/research/ml"

  • file_name_globstring | null

    Optional glob pattern for filtering file names Examples: ".md", "meeting", "project_"

  • output_formatenum

    "text" for a readable listing or "json" for structured pagination data

  • pageinteger

    One-indexed result page (default: 1)

  • page_sizeinteger

    Number of nodes per page (default: 10, maximum: 200)

  • projectstring | null

    Project name to list directory from. Optional - server will resolve using hierarchy. If unknown, use list_memory_projects() to discover available projects.

  • project_idstring | null

    Project external_id (UUID). Prefer this over project when known — it routes to the exact project regardless of name collisions across cloud workspaces. Takes precedence over project. Get from list_memory_projects().

  • sortenum | null

    Optional file ordering: "title_asc", "title_desc", "updated_asc", or "updated_desc". Directories remain first.

list_memory_projectsтолько чтение

Перечисляет все доступные проекты с их статусом. Показывает проекты как из локальных, так и из облачных источников при наличии облачных учетных данных, объединяя по permalink для единого представления. Каждая запись проекта включает external_id (UUID). Передавайте это значение как параметр project_id в других инструментах, чтобы однозначно обратиться к конкретному проекту в разных облачных рабочих пространствах — полезно, когда одно и то же имя проекта существует в нескольких рабочих пространствах.

List Memory Projects

Параметры
  • output_formatenum

    "text" returns the existing human-readable project list. "json" returns structured project metadata.

list_workspacesтолько чтение

Перечисляет доступные облачные рабочие пространства (tenant_id, type, role и name).

Перечисляет рабочие пространства

Параметры
  • output_formatenum

    "text" returns human-readable workspace list. "json" returns structured workspace metadata.

move_note

Перемещает заметку или директорию в новое место, обновляя базу данных и сохраняя ссылки.

Переместить заметку

Параметры
  • destination_folderstring | null

    Move the note into this folder, preserving the original filename. Mutually exclusive with destination_path. Only for single-file moves.

  • destination_pathstring

    For files: new path relative to project root (e.g., "work/meetings/note.md") For directories: new directory path (e.g., "archive/docs") Mutually exclusive with destination_folder.

  • identifierstringобязательный

    For files: exact entity identifier (title, permalink, or memory:// URL). For directories: the directory path (e.g., "docs", "projects/2025"). Must be an exact match - fuzzy matching is not supported for move operations. Use search_notes() or list_directory() first to find the correct path if uncertain.

  • is_directoryboolean

    If True, moves an entire directory and all its contents. When True, identifier and destination_path should be directory paths (without file extensions). Defaults to False.

  • output_formatenum

    "text" returns existing markdown guidance/success text. "json" returns machine-readable move metadata.

  • projectstring | null

    Project name to move within. Optional - server will resolve using hierarchy. If unknown, use list_memory_projects() to discover available projects.

  • project_idstring | null

    Project external_id (UUID). Prefer this over project when known — it routes to the exact project regardless of name collisions across cloud workspaces. Takes precedence over project. Get from list_memory_projects().

read_contentтолько чтение

Читает необработанное содержимое файла по пути или постоянной ссылке. Пути разрешаются через API базы знаний Basic Memory: см. https://docs.basicmemory.com/local/mcp-tools-local

Читает содержимое

Параметры
  • pathstringобязательный

    The path or permalink to the file. Can be: - A regular file path (docs/example.md) - A memory URL (memory://docs/example) - A permalink (docs/example)

  • projectstring | null

    Project name to read from. Optional - server will resolve using hierarchy. If unknown, use list_memory_projects() to discover available projects.

  • project_idstring | null

    Project external_id (UUID). Prefer this over project when known — it routes to the exact project regardless of name collisions across cloud workspaces. Takes precedence over project. Get from list_memory_projects().

read_noteтолько чтение

Читает заметку Markdown по названию или постоянной ссылке.

Прочитать заметку

Параметры
  • identifierstringобязательный

    The title or permalink of the note to read Can be a full memory:// URL, a permalink, a title, or search text

  • include_frontmatterboolean

    When output_format="json", whether content should include the opening YAML frontmatter block.

  • output_formatenum

    "text" returns markdown content or guidance text. "json" returns a structured object with title/permalink/file_path/content/frontmatter.

  • pageinteger

    Page of fallback-search results to use when the identifier does not resolve to a note directly (default: 1). A direct or exact-title match always returns the full note content — page/page_size never chunk the note itself, and the title-match lookup pages through fixed-size pages of title results until an exact match is found or results are exhausted, regardless of page or page_size.

  • page_sizeinteger

    Number of fallback-search results per page (default: 10). When no match is found, this caps how many related-note suggestions are listed.

  • projectstring | null

    Project name to read from. Optional - server will resolve using the hierarchy above. If unknown, use list_memory_projects() to discover available projects.

  • project_idstring | null

    Project external_id (UUID). Prefer this over project when known — it routes to the exact project regardless of name collisions across cloud workspaces. Takes precedence over project. Get from list_memory_projects().

recent_activityтолько чтение

Получает недавнюю активность для проекта или по всем проектам. Временной интервал поддерживает форматы на естественном языке, например: - "2 дня назад" - "на прошлой неделе" - "вчера" - "сегодня" - "3 недели назад" Или стандартные форматы, например "7d"

Недавняя активность

Параметры
  • depthinteger

    How many relation hops to traverse (1-3 recommended)

  • output_formatenum

    "text" returns human-readable summary text. "json" returns a flat list of recent items.

  • pageinteger

    Page number for pagination (default 1)

  • page_sizeinteger

    Number of items per page (default 10)

  • projectstring | null

    Project name to query. Optional - server will resolve using the hierarchy above. If unknown, use list_memory_projects() to discover available projects.

  • project_idstring | null

    Project external_id (UUID). Prefer this over project when known — it routes to the exact project regardless of name collisions across cloud workspaces. Takes precedence over project. Get from list_memory_projects().

  • timeframestring

    Time window to search. Supports natural language: - Relative: "2 days ago", "last week", "yesterday" - Points in time: "2024-01-01", "January 1st" - Standard format: "7d", "24h"

  • typestring | string[]

    Filter by content type(s). Can be a string or list of strings. Valid options: - "entity" or ["entity"] for knowledge entities - "relation" or ["relation"] for connections between entities - "observation" or ["observation"] for notes and observations Multiple types can be combined: ["entity", "relation"] Case-insensitive: "ENTITY" and "entity" are treated the same. Default is entity-only. Specify other types explicitly to include observations and relations.

schema_diffтолько чтение

Обнаруживает расхождения между определением схемы и фактическим использованием заметок.

Schema Diff

Параметры
  • note_typestringобязательный

    The note type to check for drift (e.g., "person").

  • output_formatenum
  • projectstring | null

    Project name. Optional -- server will resolve.

  • project_idstring | null

    Project external_id (UUID). Prefer this over project when known — it routes to the exact project regardless of name collisions across cloud workspaces. Takes precedence over project. Get from list_memory_projects().

schema_inferтолько чтение

Анализирует существующие заметки и предлагает определение Picoschema.

Извлекает схему

Параметры
  • note_typestringобязательный

    The note type to analyze (e.g., "person", "meeting").

  • output_formatenum
  • projectstring | null

    Project name. Optional -- server will resolve.

  • project_idstring | null

    Project external_id (UUID). Prefer this over project when known — it routes to the exact project regardless of name collisions across cloud workspaces. Takes precedence over project. Get from list_memory_projects().

  • thresholdnumber

    Minimum frequency (0-1) for a field to be suggested as optional. Default 0.25 (25%). Fields above 95% become required.

schema_validateтолько чтение

Проверяет заметки на соответствие их определениям Picoschema.

Проверяет схему

Параметры
  • identifierstring | null

    Specific note to validate (permalink, title, or path). If provided, validates only this note.

  • note_typestring | null

    Note type to batch-validate (e.g., "person", "meeting"). If provided, validates all notes of this type.

  • output_formatenum
  • projectstring | null

    Project name. Optional -- server will resolve.

  • project_idstring | null

    Project external_id (UUID). Prefer this over project when known — it routes to the exact project regardless of name collisions across cloud workspaces. Takes precedence over project. Get from list_memory_projects().

searchтолько чтение

Ищет контент по всей базе знаний.

Ищет в базе знаний

Параметры
  • querystringобязательный

    Search query (full-text syntax supported by search_notes)

search_notesтолько чтение

Ищет по всему содержимому базы знаний с поддержкой расширенного синтаксиса.

Ищет заметки

Параметры
  • after_datestring | null

    Optional date filter for recent content (e.g., "1 week", "2d", "2024-01-01")

  • categoriesstring[] | null

    Optional list of observation categories for exact matching (e.g., ["requirement"]). Pair with entity_types=["observation"] to return only observations whose category matches exactly.

  • entity_typesstring[] | null

    Optional list of entity types to filter by (e.g., ["entity", "observation"])

  • metadata_filtersobject | null

    Optional structured frontmatter filters (e.g., {"status": "in-progress"})

  • min_similaritynumber | null

    Optional float to override the global semantic_min_similarity threshold for this query. E.g., 0.0 to see all vector results, or 0.8 for high precision. Only applies to vector and hybrid search types.

  • note_typesstring[] | null

    Optional list of note types to search (e.g., ["note", "person"])

  • output_formatenum

    "text" preserves existing structured search response behavior. "json" returns a machine-readable dictionary payload.

  • pageinteger

    The page number of results to return (default 1)

  • page_sizeinteger

    The number of results to return per page (default 10)

  • projectstring | null

    Project name to search in. Optional - server will resolve using hierarchy. If unknown, use list_memory_projects() to discover available projects.

  • project_idstring | null

    Project external_id (UUID). Prefer this over project when known — it routes to the exact project regardless of name collisions across cloud workspaces. Takes precedence over project. Get from list_memory_projects().

  • querystring | null

    Optional search query string (supports boolean operators, phrases, patterns). Omit or pass None for filter-only searches using metadata_filters, tags, or status.

  • search_all_projectsboolean

    Optional opt-in to search every accessible project. Ignored when project or project_id is supplied.

  • search_typestring | null

    Type of search to perform, one of: "text", "title", "permalink", "vector", "semantic", "hybrid". Default is dynamic: "hybrid" when semantic search is enabled, otherwise "text".

  • statusstring | null

    Optional status filter (frontmatter status); shorthand for metadata_filters["status"]

  • tagsstring[] | null

    Optional tag filter (frontmatter tags); shorthand for metadata_filters["tags"]. Accepts a list (["a", "b"]) or a comma-separated string ("a,b"), matching the write_note tags convention and the tag: query shorthand.

view_noteтолько чтение

Просмотреть заметку как форматированный артефакт для лучшей читаемости.

Просмотреть примечание

Параметры
  • identifierstringобязательный

    The title or permalink of the note to view

  • projectstring | null

    Project name to read from. Optional - server will resolve using hierarchy. If unknown, use list_memory_projects() to discover available projects.

  • project_idstring | null

    Project external_id (UUID). Prefer this over project when known — it routes to the exact project regardless of name collisions across cloud workspaces. Takes precedence over project. Get from list_memory_projects().

write_note

Создаёт заметку в Markdown. Если заметка уже существует, по умолчанию возвращает ошибку: передайте overwrite=True, чтобы заменить.

Пишет заметку

Параметры
  • contentstringобязательный

    Markdown content for the note, can include observations and relations

  • directorystringобязательный

    Directory path relative to project root where the file should be saved. Use forward slashes (/) as separators. Use "/" or "" to write to project root. Examples: "notes", "projects/2025", "research/ml", "/" (root)

  • metadataobject | null

    Optional dict of extra frontmatter fields merged into entity_metadata. Useful for schema notes or any note that needs custom YAML frontmatter beyond title/type/tags. Nested dicts are supported.

  • note_typestring

    Type of note to create (stored in frontmatter). Defaults to "note". Can be "guide", "report", "config", "person", etc.

  • output_formatenum

    "text" returns the existing markdown summary. "json" returns machine-readable metadata.

  • overwriteboolean | null

    If True, replace existing note on conflict. If False, error on conflict. If None (default), consult write_note_overwrite_default config setting.

  • projectstring | null

    Project name to write to. Optional - server will resolve using the hierarchy above. Use "workspace/project" to route to a project in a specific cloud workspace. A bare name that exists in multiple workspaces resolves to the default workspace, so use the qualified form (or project_id) to disambiguate. If unknown, use list_memory_projects() to discover available projects and their qualified names.

  • project_idstring | null

    Project external_id (UUID). Prefer this over project when known — it routes to the exact project regardless of name collisions across cloud workspaces. Takes precedence over project. Get from list_memory_projects().

  • tagsstring[] | string | null

    Tags to categorize the note. Can be a list of strings, a comma-separated string, or None. Note: If passing from external MCP clients, use a string format (e.g. "tag1,tag2,tag3")

  • titlestringобязательный

    The title of the note

  • workspacestring | null

    Workspace slug, name, or tenant_id. When provided with project, routes as workspace/project. Cannot be combined with project_id.

Похожие MCP-сервера

aitytech/agentkits-memory

aitytech/agentkits-memory

MCP сервер AgentKits Memory даёт AI-ассистентам постоянную память: сохраняет решения, паттерны и ошибки между сессиями. Всё хранится локально в SQLite, легко интегрируется с Claude Code, Cursor и д...

TypeScript64
timmx7/acheron-mcp-server

timmx7/acheron-mcp-server

MCP сервер Acheron даёт постоянную память, общую между Claude Chat, Code и Cowork. Сохраняй решения, ищи заметки и просматривай историю — всё локально, без облака. Полезен всем, кто хочет не терять контекст между сессиями.

TypeScript6
hifriendbot/cogmemai-mcp

hifriendbot/cogmemai-mcp

MCP сервер CogmemAi добавляет AI-ассистентам (Claude Code, Cursor и др.) постоянную семантическую память с точностью 95% (LongMemEval). Автономно фиксирует решения, проактивно вспоминает контекст — знания не теряются между сессиями и командами.

TypeScript7
Cartisien/engram-mcp

Cartisien/engram-mcp

MCP-сервер для постоянной семантической памяти AI-агентов. Хранит воспоминания в SQLite, ищет по смыслу через локальные эмбеддинги Ollama — без облака и API-ключей. Пять инструментов: remember, rec...

TypeScript1
bitbonsai/mcp-obsidian

bitbonsai/mcp-obsidian

MCPVault — AI-мост для Obsidian по стандарту MCP. Подключает Claude, ChatGPT и других ассистентов к вашим заметкам с безопасным доступом и защитой frontmatter. Без привязки к одному провайдеру.

TypeScript1656
yuchen20/memory-plus

yuchen20/memory-plus

Memory-Plus - MCP сервер с локальным RAG для записи и поиска заметок и контекста. Визуализация связей между воспоминаниями. Полезен для долговременной памяти ассистентов.

Python56
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин