Skip to main content
Glama
jmjava
by jmjava

Obsidian Developer Memory MCP

Локальный сервер Model Context Protocol, который даёт ИИ-ассистентам для кодирования, таким как Cursor и GitHub Copilot, постоянную инженерную память.

Память хранится в виде обычных Markdown-файлов в хранилище Obsidian. Obsidian не должен быть запущен. Нет ни плагина сообщества, ни API-ключа Obsidian.

Тот же stdio MCP-сервер работает и с Cursor, и с GitHub Copilot / VS Code.

Архитектура

Cursor Agent --------------------\
                                  \
                                   > MCP stdio server
                                  /        |
GitHub Copilot / VS Code --------/         v
                               obsidian-dev-memory
                                        |
                                        v
                               Obsidian Markdown Vault
Developer opens spring-auth in Cursor
        |
        v
Cursor calls get_project_context("spring-auth")
        |
        v
AI sees current project state + recent decisions
        |
        v
Developer and AI implement feature
        |
        v
AI calls capture_work_session(...)
        |
        +--> session note
        |
        +--> Git branch/SHA recorded
        |
        v
Durable architecture choice?
        |
       yes
        |
        v
record_decision(...)

Related MCP server: LumenCore

Почему напрямую Markdown?

Хранилище — источник истины. Заметки остаются читаемыми и редактируемыми в Obsidian, git или любом текстовом редакторе. Сервер никогда не зависит от запущенного Obsidian, не обращается к размещённому API памяти и не пишет в проприетарную базу данных.

Требования

  • Python 3.12+

  • uv

  • Локальный каталог хранилища Obsidian

  • Git в PATH, только если нужны автоматические снимки репозитория

Установка

git clone https://github.com/jmjava/obsidian-mcp.git
cd obsidian-mcp
uv sync

uv sync устанавливает официальный MCP Python SDK и пакет проекта.

Конфигурация

Обязательно:

export OBSIDIAN_VAULT_PATH="$HOME/Documents/ObsidianVault"

Необязательно:

export OBSIDIAN_MEMORY_ROOT="AI Memory"

OBSIDIAN_MEMORY_ROOT по умолчанию равен AI Memory. Конфигурация MCP редактора может передавать эти переменные напрямую. Проект включает .env.example для документации; сервер не загружает .env-файлы автоматически.

Запуск сервера

export OBSIDIAN_VAULT_PATH="/tmp/example-vault"
mkdir -p "$OBSIDIAN_VAULT_PATH"

uv run python -m obsidian_dev_memory

или:

uv run obsidian-dev-memory

Процесс общается по MCP через stdio. Не пишите журналы приложения в stdout; диагностика идёт в stderr.

Настройка Cursor

Конфигурация Cursor уровня проекта находится в .cursor/mcp.json и использует текущий формат mcpServers. Переносимый шаблон — в config/cursor.mcp.json.example:

{
  "mcpServers": {
    "obsidian-dev-memory": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/obsidian-dev-memory-mcp",
        "run",
        "python",
        "-m",
        "obsidian_dev_memory"
      ],
      "env": {
        "OBSIDIAN_VAULT_PATH": "/ABSOLUTE/PATH/TO/OBSIDIAN/VAULT"
      }
    }
  }
}

Этот репозиторий также включает .cursor/rules/obsidian-memory.mdc, который сообщает Cursor, когда читать и записывать память.

Машинно-специфичные файлы .cursor/mcp.json создаются установщиком и не фиксируются здесь.

Настройка GitHub Copilot / VS Code

Конфигурация Copilot / VS Code рабочей области находится в .vscode/mcp.json и использует текущий формат servers. Переносимый шаблон — в config/vscode.mcp.json.example:

{
  "servers": {
    "obsidian-dev-memory": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/obsidian-dev-memory-mcp",
        "run",
        "python",
        "-m",
        "obsidian_dev_memory"
      ],
      "env": {
        "OBSIDIAN_VAULT_PATH": "/ABSOLUTE/PATH/TO/OBSIDIAN/VAULT"
      }
    }
  }
}

.github/copilot-instructions.md даёт Copilot то же поведение с памятью, что и Cursor.

Использование установщика

Подключите этот сервер к другому проекту разработки:

./scripts/install-project.sh \
  --project /home/user/src/example \
  --vault /home/user/Documents/ObsidianVault

Необязательно:

./scripts/install-project.sh \
  --project /home/user/src/example \
  --vault /home/user/Documents/ObsidianVault \
  --server /path/to/obsidian-dev-memory-mcp

Если --server опущен, скрипт определяет этот репозиторий по своему собственному расположению.

Установщик создаёт или обновляет:

  • <project>/.cursor/mcp.json

  • <project>/.cursor/rules/obsidian-memory.mdc

  • <project>/.vscode/mcp.json

  • <project>/.github/copilot-instructions.md

Он понятно завершается с ошибкой, если целевой проект или хранилище отсутствует, и объединяет MCP JSON, чтобы несвязанные серверы не были уничтожены.

Инструменты MCP

Tool

Назначение

get_project_context

Читает Project State.md плюс самые свежие заметки о сессиях и решениях

capture_work_session

Добавляет раздел с меткой времени в сегодняшнюю заметку о сессии

record_decision

Записывает постоянную заметку о решении

update_project_state

Заменяет краткую заметку о состоянии проекта

search_memory

Локальный поиск по именам файлов и тексту в памяти проекта

read_note

Читает один Markdown-файл относительно хранилища

append_daily_note

Добавляет в Daily/YYYY-MM-DD.md

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

record_decision записывает YYYY-MM-DD-<decision-slug>.md. Если такой файл уже существует, сервер добавляет числовой суффикс (-2, -3, ...) вместо перезаписи.

capture_work_session принимает необязательный repository_path. Когда этот путь является Git-репозиторием, заметка записывает имя репозитория, ветку, короткий SHA, состояние dirty и краткий список изменённых файлов. Полные диффы никогда не записываются. Путь, не являющийся Git-репозиторием, игнорируется.

Структура хранилища

AI Memory/
└── Projects/
    └── <project-slug>/
        ├── Project State.md
        ├── Sessions/
        │   └── YYYY-MM-DD.md
        └── Decisions/
            └── YYYY-MM-DD-<decision-slug>.md

Daily/
└── YYYY-MM-DD.md

Папка AI Memory учитывает OBSIDIAN_MEMORY_ROOT. Логические имена проектов преобразуются в slug (Spring Authorization Serverspring-authorization-server).

Пример рабочего процесса

  1. Откройте проект в Cursor или VS Code.

  2. Перед значительной работой ассистент вызывает get_project_context.

  3. После значимой реализации он вызывает capture_work_session.

  4. Когда принято архитектурное решение, он вызывает record_decision.

  5. Когда общий статус меняется, он вызывает update_project_state.

  6. Откройте хранилище в Obsidian в любое время, чтобы читать или редактировать те же файлы.

Модель безопасности

  • Все пути к заметкам должны разрешаться внутри OBSIDIAN_VAULT_PATH.

  • Абсолютные пути, обход через ../ и обнаруживаемые выходы через симлинки отклоняются.

  • Записи атомарны (tempfile + os.replace) там, где это возможно.

  • Инструменты не являются универсальным файловым API.

  • Значения, похожие на секреты (ключи, токены, JWT, приватные ключи, присваивания password=), заменяются на [redacted-secret] перед записью.

  • Правила Cursor и инструкции Copilot предписывают ассистенту никогда не сохранять пароли, API-ключи, токены, JWT, приватные ключи, содержимое .env, учётные данные баз данных, производственные секреты или чувствительные данные клиентов.

Тестирование

Тесты используют временные каталоги, никогда — ваше реальное хранилище.

uv run pytest

Более широкая локальная проверка:

export OBSIDIAN_VAULT_PATH="$HOME/Documents/ObsidianVault"
./scripts/smoke-test.sh

Смоук-тест проверяет переменную окружения, каталог хранилища, импорт пакета, создание сервера и набор pytest.

Устранение неполадок

Симптом

Что проверить

Сервер завершается сразу

OBSIDIAN_VAULT_PATH задан и каталог существует

Инструменты не появляются в Cursor

.cursor/mcp.json проекта присутствует; перезагрузите окно; uv в PATH

Инструменты не появляются в Copilot

.vscode/mcp.json рабочей области использует ключ верхнего уровня servers, а не mcpServers

Path traversal is not allowed

Передавайте пути относительно хранилища, например AI Memory/Projects/spring-auth/Project State.md

Имя файла решения уже существовало

Сервер записал YYYY-MM-DD-<slug>-2.md вместо перезаписи

Раздел Git отсутствует в сессии

repository_path не указан или не является Git-репозиторием; это не критично

Неожиданный шум в stdout

Только MCP JSON-RPC должен использовать stdout; логи — в stderr

Лицензия

MIT. См. LICENSE.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides persistent memory for AI coding assistants, storing and retrieving architectural decisions, patterns, and solutions across sessions using semantic search, while also offering git integration for commit messages and code expertise mapping.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides AI coding assistants with persistent project memory to retain architectural decisions, code patterns, and domain knowledge across sessions. It stores data locally in a SQLite database, allowing agents to remember, recall, and manage project-specific context using full-text search.
    8
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides persistent long-term memory for AI assistants with tag-based retrieval, wiki-style linking, and source references, storing memories as markdown files with SQLite index.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides persistent, searchable memory and knowledge capture for AI-assisted development, enabling agents to retain decisions, bugs, and patterns across sessions and projects.
    MIT

View all related MCP servers

Related MCP Connectors

  • Token-efficient MCP memory for Markdown vaults. Tiered search, GraphRAG, AI memories.

  • Persistent memory for AI agents. Search, store, and recall across sessions.

  • Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…

View all MCP Connectors

Latest Blog Posts

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/jmjava/obsidian-mcp'

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