obsidian-dev-memory
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 VaultDeveloper 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+
Локальный каталог хранилища Obsidian
Git в
PATH, только если нужны автоматические снимки репозитория
Установка
git clone https://github.com/jmjava/obsidian-mcp.git
cd obsidian-mcp
uv syncuv 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 | Назначение |
| Читает |
| Добавляет раздел с меткой времени в сегодняшнюю заметку о сессии |
| Записывает постоянную заметку о решении |
| Заменяет краткую заметку о состоянии проекта |
| Локальный поиск по именам файлов и тексту в памяти проекта |
| Читает один Markdown-файл относительно хранилища |
| Добавляет в |
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 Server → spring-authorization-server).
Пример рабочего процесса
Откройте проект в Cursor или VS Code.
Перед значительной работой ассистент вызывает
get_project_context.После значимой реализации он вызывает
capture_work_session.Когда принято архитектурное решение, он вызывает
record_decision.Когда общий статус меняется, он вызывает
update_project_state.Откройте хранилище в 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.
Устранение неполадок
Симптом | Что проверить |
Сервер завершается сразу |
|
Инструменты не появляются в Cursor |
|
Инструменты не появляются в Copilot |
|
| Передавайте пути относительно хранилища, например |
Имя файла решения уже существовало | Сервер записал |
Раздел Git отсутствует в сессии |
|
Неожиданный шум в stdout | Только MCP JSON-RPC должен использовать stdout; логи — в stderr |
Лицензия
MIT. См. LICENSE.
This server cannot be installed
Maintenance
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
AlicenseNot gradedqualityCmaintenanceProvides 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- AlicenseNot gradedqualityCmaintenanceProvides 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.8Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides 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.1MIT
- AlicenseNot gradedqualityBmaintenanceProvides persistent, searchable memory and knowledge capture for AI-assisted development, enabling agents to retain decisions, bugs, and patterns across sessions and projects.MIT
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…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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