@sunub/obsidian-mcp-server 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +15 -0
- package/README.md +392 -153
- package/build/cli/AppContainer.d.ts +1 -0
- package/build/cli/AppContainer.js +197 -0
- package/build/cli/AppContainer.js.map +1 -0
- package/build/cli/app.js +7 -0
- package/build/cli/app.js.map +1 -0
- package/build/cli/config/SettingContext.d.ts +1 -0
- package/build/cli/config/SettingContext.js +2 -0
- package/build/cli/config/SettingContext.js.map +1 -0
- package/build/cli/config/mcpServersConfig.d.ts +18 -0
- package/build/cli/config/mcpServersConfig.js +119 -0
- package/build/cli/config/mcpServersConfig.js.map +1 -0
- package/build/cli/config/settingSchema.d.ts +180 -0
- package/build/cli/config/settingSchema.js +128 -0
- package/build/cli/config/settingSchema.js.map +1 -0
- package/build/cli/context/InputContext.d.ts +12 -0
- package/build/cli/context/InputContext.js +10 -0
- package/build/cli/context/InputContext.js.map +1 -0
- package/build/cli/context/KeypressContext.d.ts +30 -0
- package/build/cli/context/KeypressContext.js +200 -0
- package/build/cli/context/KeypressContext.js.map +1 -0
- package/build/cli/context/KeypressContext.util.d.ts +7 -0
- package/build/cli/context/KeypressContext.util.js +474 -0
- package/build/cli/context/KeypressContext.util.js.map +1 -0
- package/build/cli/hooks/useAtCompletion.d.ts +12 -0
- package/build/cli/hooks/useAtCompletion.js +5 -0
- package/build/cli/hooks/useAtCompletion.js.map +1 -0
- package/build/cli/hooks/useCommandCompletion.d.ts +59 -0
- package/build/cli/hooks/useCommandCompletion.js +344 -0
- package/build/cli/hooks/useCommandCompletion.js.map +1 -0
- package/build/cli/hooks/useCompletion.d.ts +22 -0
- package/build/cli/hooks/useCompletion.js +84 -0
- package/build/cli/hooks/useCompletion.js.map +1 -0
- package/build/cli/hooks/useDispatcher.d.ts +6 -0
- package/build/cli/hooks/useDispatcher.js +286 -0
- package/build/cli/hooks/useDispatcher.js.map +1 -0
- package/build/cli/hooks/useFocus.d.ts +2 -0
- package/build/cli/hooks/useFocus.js +3 -0
- package/build/cli/hooks/useFocus.js.map +1 -0
- package/build/cli/hooks/useInputHistory.d.ts +24 -0
- package/build/cli/hooks/useInputHistory.js +159 -0
- package/build/cli/hooks/useInputHistory.js.map +1 -0
- package/build/cli/hooks/useKeyMatchers.d.ts +17 -0
- package/build/cli/hooks/useKeyMatchers.js +13 -0
- package/build/cli/hooks/useKeyMatchers.js.map +1 -0
- package/build/cli/hooks/useKeypress.d.ts +19 -0
- package/build/cli/hooks/useKeypress.js +28 -0
- package/build/cli/hooks/useKeypress.js.map +1 -0
- package/build/cli/hooks/useLlmStream.d.ts +12 -0
- package/build/cli/hooks/useLlmStream.js +365 -0
- package/build/cli/hooks/useLlmStream.js.map +1 -0
- package/build/cli/hooks/useMcpClient.d.ts +10 -0
- package/build/cli/hooks/useMcpClient.js +100 -0
- package/build/cli/hooks/useMcpClient.js.map +1 -0
- package/build/cli/hooks/useMcpManager.d.ts +22 -0
- package/build/cli/hooks/useMcpManager.js +86 -0
- package/build/cli/hooks/useMcpManager.js.map +1 -0
- package/build/cli/hooks/usePromptCompletion.d.ts +19 -0
- package/build/cli/hooks/usePromptCompletion.js +13 -0
- package/build/cli/hooks/usePromptCompletion.js.map +1 -0
- package/build/cli/hooks/useRagContext.d.ts +6 -0
- package/build/cli/hooks/useRagContext.js +83 -0
- package/build/cli/hooks/useRagContext.js.map +1 -0
- package/build/cli/hooks/useShellCompletion.d.ts +18 -0
- package/build/cli/hooks/useShellCompletion.js +10 -0
- package/build/cli/hooks/useShellCompletion.js.map +1 -0
- package/build/cli/hooks/useSlashCompletion.d.ts +21 -0
- package/build/cli/hooks/useSlashCompletion.js +11 -0
- package/build/cli/hooks/useSlashCompletion.js.map +1 -0
- package/build/cli/hooks/useTerminalSize.d.ts +9 -0
- package/build/cli/hooks/useTerminalSize.js +26 -0
- package/build/cli/hooks/useTerminalSize.js.map +1 -0
- package/build/cli/index.js +27 -0
- package/build/cli/index.js.map +1 -0
- package/build/cli/key/keyBindings.d.ts +152 -0
- package/build/cli/key/keyBindings.js +630 -0
- package/build/cli/key/keyBindings.js.map +1 -0
- package/build/cli/key/keyMatchers.d.ts +27 -0
- package/build/cli/key/keyMatchers.js +33 -0
- package/build/cli/key/keyMatchers.js.map +1 -0
- package/build/cli/key/text-buffer-bestcase.js +2754 -0
- package/build/cli/key/text-buffer-bestcase.js.map +1 -0
- package/build/cli/key/text-buffer.js +918 -0
- package/build/cli/key/text-buffer.js.map +1 -0
- package/build/cli/reference/HistoryItemDisplay.d.ts +23 -0
- package/build/cli/reference/HistoryItemDisplay.js +63 -0
- package/build/cli/reference/HistoryItemDisplay.js.map +1 -0
- package/build/cli/reference/InputContext.d.ts +17 -0
- package/build/cli/reference/InputContext.js +16 -0
- package/build/cli/reference/InputContext.js.map +1 -0
- package/build/cli/reference/KerypressContext.d.ts +37 -0
- package/build/cli/reference/KerypressContext.js +791 -0
- package/build/cli/reference/KerypressContext.js.map +1 -0
- package/build/cli/reference/MainContent.d.ts +6 -0
- package/build/cli/reference/MainContent.js +207 -0
- package/build/cli/reference/MainContent.js.map +1 -0
- package/build/cli/reference/UIStateContext.d.ts +188 -0
- package/build/cli/reference/UIStateContext.js +16 -0
- package/build/cli/reference/UIStateContext.js.map +1 -0
- package/build/cli/reference/useGeminiStream.d.ts +42 -0
- package/build/cli/reference/useGeminiStream.js +1404 -0
- package/build/cli/reference/useGeminiStream.js.map +1 -0
- package/build/cli/services/McpClientService.d.ts +32 -0
- package/build/cli/services/McpClientService.js +123 -0
- package/build/cli/services/McpClientService.js.map +1 -0
- package/build/cli/services/McpManager.d.ts +28 -0
- package/build/cli/services/McpManager.js +146 -0
- package/build/cli/services/McpManager.js.map +1 -0
- package/build/cli/theme/builtin/no-color.js +125 -0
- package/build/cli/theme/builtin/no-color.js.map +1 -0
- package/build/cli/theme/builtin/tokyonight-dark.js +146 -0
- package/build/cli/theme/builtin/tokyonight-dark.js.map +1 -0
- package/build/cli/theme/semantic-colors.js +19 -0
- package/build/cli/theme/semantic-colors.js.map +1 -0
- package/build/cli/theme/semantic-tokens.js +77 -0
- package/build/cli/theme/semantic-tokens.js.map +1 -0
- package/build/cli/theme/theme-manager.d.ts +32 -0
- package/build/cli/theme/theme-manager.js +150 -0
- package/build/cli/theme/theme-manager.js.map +1 -0
- package/build/cli/theme/theme.js +333 -0
- package/build/cli/theme/theme.js.map +1 -0
- package/build/cli/tmp.js +27 -0
- package/build/cli/tmp.js.map +1 -0
- package/build/cli/types.d.ts +72 -0
- package/build/cli/types.js +8 -0
- package/build/cli/types.js.map +1 -0
- package/build/cli/ui/ConnectionStatus.d.ts +13 -0
- package/build/cli/ui/ConnectionStatus.js +24 -0
- package/build/cli/ui/ConnectionStatus.js.map +1 -0
- package/build/cli/ui/HelpCommands.d.ts +5 -0
- package/build/cli/ui/HelpCommands.js +11 -0
- package/build/cli/ui/HelpCommands.js.map +1 -0
- package/build/cli/ui/HistoryItemDisplay.d.ts +9 -0
- package/build/cli/ui/HistoryItemDisplay.js +38 -0
- package/build/cli/ui/HistoryItemDisplay.js.map +1 -0
- package/build/cli/ui/InputPrompt-bestcase.d.ts +63 -0
- package/build/cli/ui/InputPrompt-bestcase.js +1301 -0
- package/build/cli/ui/InputPrompt-bestcase.js.map +1 -0
- package/build/cli/ui/InputPrompt.d.ts +12 -0
- package/build/cli/ui/InputPrompt.js +145 -0
- package/build/cli/ui/InputPrompt.js.map +1 -0
- package/build/cli/ui/InputPrompt.tmp.d.ts +7 -0
- package/build/cli/ui/InputPrompt.tmp.js +215 -0
- package/build/cli/ui/InputPrompt.tmp.js.map +1 -0
- package/build/cli/ui/MainContent.d.ts +10 -0
- package/build/cli/ui/MainContent.js +24 -0
- package/build/cli/ui/MainContent.js.map +1 -0
- package/build/cli/ui/MouseContext.d.ts +1 -0
- package/build/cli/ui/MouseContext.js +2 -0
- package/build/cli/ui/MouseContext.js.map +1 -0
- package/build/cli/ui/SuggestionsDisplay.d.ts +25 -0
- package/build/cli/ui/SuggestionsDisplay.js +45 -0
- package/build/cli/ui/SuggestionsDisplay.js.map +1 -0
- package/build/cli/ui/ThinkingIndicator.d.ts +2 -0
- package/build/cli/ui/ThinkingIndicator.js +16 -0
- package/build/cli/ui/ThinkingIndicator.js.map +1 -0
- package/build/cli/ui/layout/DefaultAppLayout.d.ts +2 -0
- package/build/cli/ui/layout/DefaultAppLayout.js +6 -0
- package/build/cli/ui/layout/DefaultAppLayout.js.map +1 -0
- package/build/cli/ui/shared/ExpandableText.d.ts +14 -0
- package/build/cli/ui/shared/ExpandableText.js +19 -0
- package/build/cli/ui/shared/ExpandableText.js.map +1 -0
- package/build/cli/utils/commandUtils.d.ts +11 -0
- package/build/cli/utils/commandUtils.js +16 -0
- package/build/cli/utils/commandUtils.js.map +1 -0
- package/build/cli/utils/debugLogger.d.ts +12 -0
- package/build/cli/utils/debugLogger.js +52 -0
- package/build/cli/utils/debugLogger.js.map +1 -0
- package/build/cli/utils/historyStorage.d.ts +13 -0
- package/build/cli/utils/historyStorage.js +64 -0
- package/build/cli/utils/historyStorage.js.map +1 -0
- package/build/cli/utils/textUtil.d.ts +68 -0
- package/build/cli/utils/textUtil.js +236 -0
- package/build/cli/utils/textUtil.js.map +1 -0
- package/build/config.js +31 -5
- package/build/config.js.map +1 -0
- package/build/db.js +55 -0
- package/build/db.js.map +1 -0
- package/build/index.js +4 -4
- package/build/index.js.map +1 -0
- package/build/tools/create_document_with_properties/index.d.ts +60 -0
- package/build/tools/create_document_with_properties/index.js +6 -0
- package/build/tools/create_document_with_properties/index.js.map +1 -0
- package/build/tools/create_document_with_properties/params.d.ts +66 -0
- package/build/tools/generate_property/index.js +6 -0
- package/build/tools/generate_property/index.js.map +1 -0
- package/build/tools/index.d.ts +184 -0
- package/build/tools/organize_attachments/index.js +6 -0
- package/build/tools/organize_attachments/index.js.map +1 -0
- package/build/tools/organize_attachments/params.d.ts +122 -0
- package/build/tools/vault/index.js +16 -2
- package/build/tools/vault/index.js.map +1 -0
- package/build/tools/vault/params.d.ts +115 -0
- package/build/tools/vault/types/collect_context.d.ts +1340 -0
- package/build/tools/vault/types/list_all.d.ts +387 -0
- package/build/tools/vault/types/read_specific.d.ts +297 -0
- package/build/tools/vault/types/search.d.ts +598 -0
- package/build/tools/vault/utils/actions/collect_context.js +26 -1
- package/build/tools/vault/utils/actions/collect_context.js.map +1 -0
- package/build/tools/vault/utils/actions/index_rag.js +27 -0
- package/build/tools/vault/utils/actions/index_rag.js.map +1 -0
- package/build/tools/vault/utils/actions/list_all.js +1 -0
- package/build/tools/vault/utils/actions/list_all.js.map +1 -0
- package/build/tools/vault/utils/actions/load_memory.js +23 -13
- package/build/tools/vault/utils/actions/load_memory.js.map +1 -0
- package/build/tools/vault/utils/actions/read.js +2 -1
- package/build/tools/vault/utils/actions/read.js.map +1 -0
- package/build/tools/vault/utils/actions/search.js +2 -1
- package/build/tools/vault/utils/actions/search.js.map +1 -0
- package/build/tools/vault/utils/actions/search_semantic.js +54 -0
- package/build/tools/vault/utils/actions/search_semantic.js.map +1 -0
- package/build/tools/vault/utils/actions/stats.js +1 -0
- package/build/tools/vault/utils/actions/stats.js.map +1 -0
- package/build/tools/vault/utils/document.js +1 -0
- package/build/tools/vault/utils/document.js.map +1 -0
- package/build/tools/write_property/index.d.ts +58 -0
- package/build/tools/write_property/index.js +6 -0
- package/build/tools/write_property/index.js.map +1 -0
- package/build/utils/DirectoryWalker.d.ts +6 -0
- package/build/utils/DirectoryWalker.js +7 -0
- package/build/utils/DirectoryWalker.js.map +1 -0
- package/build/utils/Indexer.d.ts +18 -0
- package/build/utils/Indexer.js +5 -9
- package/build/utils/Indexer.js.map +1 -0
- package/build/utils/LLMClient.d.ts +37 -0
- package/build/utils/LLMClient.js +82 -0
- package/build/utils/LLMClient.js.map +1 -0
- package/build/utils/RAGIndexer.d.ts +22 -0
- package/build/utils/RAGIndexer.js +206 -0
- package/build/utils/RAGIndexer.js.map +1 -0
- package/build/utils/RerankerClient.d.ts +27 -0
- package/build/utils/RerankerClient.js +69 -0
- package/build/utils/RerankerClient.js.map +1 -0
- package/build/utils/VaultManger/VaultManager.d.ts +34 -0
- package/build/utils/VaultManger/VaultManager.js +1 -0
- package/build/utils/VaultManger/VaultManager.js.map +1 -0
- package/build/utils/VaultManger/VaultPathError.d.ts +6 -0
- package/build/utils/VaultManger/VaultPathError.js +1 -0
- package/build/utils/VaultManger/VaultPathError.js.map +1 -0
- package/build/utils/VaultManger/index.d.ts +3 -0
- package/build/utils/VaultManger/index.js +1 -0
- package/build/utils/VaultManger/index.js.map +1 -0
- package/build/utils/VaultManger/types.d.ts +16 -0
- package/build/utils/VaultManger/types.js +1 -0
- package/build/utils/VaultManger/types.js.map +1 -0
- package/build/utils/VaultWatcher.d.ts +8 -0
- package/build/utils/VaultWatcher.js +96 -0
- package/build/utils/VaultWatcher.js.map +1 -0
- package/build/utils/VectorDB.d.ts +53 -0
- package/build/utils/VectorDB.js +243 -0
- package/build/utils/VectorDB.js.map +1 -0
- package/build/utils/createToolError.d.ts +2 -0
- package/build/utils/createToolError.js +1 -0
- package/build/utils/createToolError.js.map +1 -0
- package/build/utils/getVaultManager.d.ts +2 -0
- package/build/utils/getVaultManager.js +1 -0
- package/build/utils/getVaultManager.js.map +1 -0
- package/build/utils/processor/LinkExtractor.d.ts +2 -0
- package/build/utils/processor/LinkExtractor.js +1 -0
- package/build/utils/processor/LinkExtractor.js.map +1 -0
- package/build/utils/processor/MatterParser.d.ts +2 -0
- package/build/utils/processor/MatterParser.js +12 -3
- package/build/utils/processor/MatterParser.js.map +1 -0
- package/build/utils/processor/types.d.ts +100 -0
- package/package.json +28 -7
- package/build/server.js +0 -32
- package/build/tools/create_document_with_properties/params.js +0 -32
- package/build/tools/generate_property/params.js +0 -54
- package/build/tools/index.js +0 -12
- package/build/tools/organize_attachments/params.js +0 -60
- package/build/tools/organize_attachments/utils.js +0 -65
- package/build/tools/vault/metrics.js +0 -126
- package/build/tools/vault/params.js +0 -141
- package/build/tools/vault/types/collect_context.js +0 -102
- package/build/tools/vault/types/list_all.js +0 -52
- package/build/tools/vault/types/read_specific.js +0 -40
- package/build/tools/vault/types/search.js +0 -58
- package/build/tools/vault/utils/constants.js +0 -2
- package/build/tools/vault/utils/shared.js +0 -74
- package/build/tools/vault/utils.js +0 -6
- package/build/tools/write_property/params.js +0 -51
- package/build/utils/processor/types.js +0 -27
- package/build/utils/semaphore.js +0 -25
package/README.md
CHANGED
|
@@ -1,257 +1,496 @@
|
|
|
1
1
|
# Obsidian MCP Server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@sunub/obsidian-mcp-server)
|
|
4
4
|
|
|
5
|
-
Obsidian Vault
|
|
5
|
+
`obsidian-mcp-server`는 Obsidian Vault의 Markdown 문서를 AI 에이전트가 조회하고, 검색하고, 요약할 수 있게 해주는 MCP 서버입니다.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
MCP 클라이언트에 연결해 에이전트에게 **토큰 사용량을 제어하면서** Vault 내용을 조회할 수 있게 합니다.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
llama.cpp 기반 로컬 LLM(임베딩·채팅·리랭킹)과 연동하면 **외부 API 없이 완전히 로컬에서** Vault RAG를 구축하고 구동할 수 있습니다.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
- **`VaultManager`**: Vault 내의 모든 문서를 효율적으로 관리하며, 파일 시스템과 상호작용하여 문서의 생성, 수정, 삭제를 처리합니다.
|
|
11
|
+
## 무엇을 할 수 있나
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
- 키워드 기반 노트 검색 (`vault`, `action="search"`)
|
|
14
|
+
- 특정 노트 열람 (`vault`, `action="read"`)
|
|
15
|
+
- Vault 전체 문서 목록 조회 (`vault`, `action="list_all"`)
|
|
16
|
+
- Vault 상태 조회 (`vault`, `action="stats"`)
|
|
17
|
+
- RAG 기반 검색 (`vault`, `action="search_vault_by_semantic"`) - LLM 서버(llama.cpp) 연동 필수
|
|
18
|
+
- 전체 색인 트리거 (`vault`, `action="index_vault_to_vectordb"`)
|
|
19
|
+
- frontmatter 자동 생성 제안 (`generate_property`)
|
|
20
|
+
- frontmatter 실제 반영 (`write_property`)
|
|
21
|
+
- 이미지 첨부파일 정리 (`organize_attachments`)
|
|
15
22
|
|
|
16
|
-
|
|
17
|
-
- **컨텍스트 수집/기억 패킷 생성**: `vault collect_context`로 문서 배치 수집, 압축, continuation 토큰 발급, 메모리 패킷(JSON canonical)을 생성합니다.
|
|
18
|
-
- **저장된 메모리 재호출**: `vault load_memory`로 `memory/context_memory_snapshot.v1.md`를 빠르게 로드해 다음 턴 컨텍스트로 재사용할 수 있습니다.
|
|
19
|
-
- **AI 기반 속성 생성**: `generate_property` 도구는 문서 본문을 분석하여 `title`, `tags`, `summary` 등 적절한 frontmatter 속성을 자동으로 생성합니다.
|
|
20
|
-
- **안전한 속성 업데이트**: `write_property` 도구를 사용하여 생성된 속성을 기존 frontmatter와 병합하여 파일에 안전하게 기록합니다.
|
|
21
|
-
- **첨부 파일 자동 정리**: `organize_attachments` 도구는 문서와 연결된 첨부 파일(예: 이미지)을 자동으로 감지하여 문서 제목에 맞는 폴더로 이동시키고 링크를 업데이트합니다.
|
|
22
|
-
- **통합 워크플로우**: `create_document_with_properties`와 같은 도구를 통해 문서 분석부터 속성 생성, 파일 업데이트까지의 전체 과정을 단일 명령으로 실행합니다.
|
|
23
|
-
- **신뢰성 및 테스트**: `vitest`를 사용한 End-to-End 테스트와 GitHub Actions 기반의 CI/CD 파이프라인을 통해 서버의 안정성과 각 도구 API의 응답 스키마를 검증합니다.
|
|
23
|
+
## 사전 주의사항
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
이 서버는 Vault 내용을 클라이언트에 노출합니다. 운영 환경에서 신중히 사용하세요.
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
- 신뢰할 수 없는 AI 에이전트와 연결하지 마세요.
|
|
28
|
+
- Vault 경로(`VAULT_DIR_PATH`)는 최소 권한으로 제한하세요.
|
|
29
|
+
- 조회량이 큰 Vault는 `maxOutputChars`, `limit`를 조절해 토큰 비용을 통제하세요.
|
|
30
|
+
- `vault` 액션 기본 압축 모드는 `balanced`입니다.
|
|
28
31
|
|
|
29
|
-
###
|
|
30
|
-
|
|
31
|
-
Vault 내 문서를 탐색하고 분석하는 핵심 도구입니다. `action` 파라미터를 통해 다양한 기능을 수행할 수 있습니다.
|
|
32
|
+
### 설정 확인사항
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
- **`search`**: 키워드를 기반으로 문서 제목, 내용, 태그를 검색합니다.
|
|
35
|
-
- **`read`**: 특정 파일의 내용을 읽고 frontmatter와 본문을 반환합니다.
|
|
36
|
-
- **`stats`**: Vault 내 모든 문서의 통계(단어, 글자 수 등)를 제공합니다.
|
|
37
|
-
- **`collect_context`**: 문서를 배치 처리하여 메모리 패킷을 생성하고, 필요 시 `memory/context_memory_snapshot.v1.md`에 저장합니다.
|
|
38
|
-
- **`load_memory`**: 저장된 메모리 노트의 canonical JSON 블록을 파싱하여 빠른 재주입용 payload를 반환합니다.
|
|
34
|
+
**1. Vault 경로: `VAULT_DIR_PATH`에는 반드시 절대 경로를 입력해야 합니다.**
|
|
39
35
|
|
|
40
|
-
|
|
36
|
+
```bash
|
|
37
|
+
# ✅ 올바른 예시 (macOS / Linux)
|
|
38
|
+
VAULT_DIR_PATH="/Users/username/Documents/MyVault"
|
|
41
39
|
|
|
42
|
-
|
|
40
|
+
# ✅ 올바른 예시 (Windows — 역슬래시 이스케이프)
|
|
41
|
+
VAULT_DIR_PATH="C:\\Users\\username\\Documents\\MyVault"
|
|
43
42
|
|
|
44
|
-
|
|
43
|
+
# ✅ 올바른 예시 (WSL)
|
|
44
|
+
VAULT_DIR_PATH="/mnt/c/Users/username/Documents/MyVault"
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
# ❌ 잘못된 예시 — 상대 경로는 서버 시작 시 오류 발생
|
|
47
|
+
VAULT_DIR_PATH="~/Documents/MyVault"
|
|
48
|
+
VAULT_DIR_PATH="./vault"
|
|
49
|
+
```
|
|
47
50
|
|
|
48
|
-
|
|
51
|
+
**2. Node.js 요구사항: Node.js 22 이상이 설치되어 있어야 합니다.**
|
|
49
52
|
|
|
50
|
-
|
|
53
|
+
```bash
|
|
54
|
+
node --version # v22.0.0 이상 확인
|
|
55
|
+
```
|
|
51
56
|
|
|
52
|
-
|
|
57
|
+
---
|
|
53
58
|
|
|
54
|
-
|
|
59
|
+
### 환경변수 전체 설정 예시
|
|
55
60
|
|
|
56
|
-
|
|
61
|
+
MCP 클라이언트 설정(`mcpServers.env`) 또는 셸 환경변수로 주입합니다.
|
|
62
|
+
시맨틱 검색·리랭킹 기능을 사용하지 않을 경우 `VAULT_DIR_PATH`만 필수입니다.
|
|
57
63
|
|
|
58
|
-
|
|
64
|
+
**최소 설정 (기본 도구만 사용)**
|
|
59
65
|
|
|
60
|
-
|
|
61
|
-
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"mcpServers": {
|
|
69
|
+
"obsidian": {
|
|
70
|
+
"command": "npx",
|
|
71
|
+
"args": ["-y", "@sunub/obsidian-mcp-server@latest"],
|
|
72
|
+
"env": {
|
|
73
|
+
"VAULT_DIR_PATH": "/abs/path/to/your/vault"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
62
79
|
|
|
63
|
-
|
|
80
|
+
**전체 설정 (시맨틱 검색 + 리랭킹 포함)**
|
|
64
81
|
|
|
65
|
-
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"mcpServers": {
|
|
85
|
+
"obsidian": {
|
|
86
|
+
"command": "npx",
|
|
87
|
+
"args": ["-y", "@sunub/obsidian-mcp-server@latest"],
|
|
88
|
+
"env": {
|
|
89
|
+
"VAULT_DIR_PATH": "/abs/path/to/your/vault",
|
|
90
|
+
"LOGGING_LEVEL": "info",
|
|
91
|
+
"LLM_API_URL": "http://127.0.0.1:8080",
|
|
92
|
+
"LLM_EMBEDDING_API_URL": "http://127.0.0.1:8081",
|
|
93
|
+
"LLM_EMBEDDING_MODEL": "nomic-embed-text",
|
|
94
|
+
"LLM_CHAT_MODEL": "llama3",
|
|
95
|
+
"LLM_RERANKER_API_URL": "http://127.0.0.1:8082",
|
|
96
|
+
"VAULT_METRICS_LOG_PATH": "/abs/path/to/vault-metrics.ndjson"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
66
102
|
|
|
67
|
-
|
|
68
|
-
- 구성: 사람이 읽는 Markdown 요약 + AI 파싱용 canonical JSON code block
|
|
69
|
-
- 스키마 키: `schema_version`, `generated_at`, `source_hash`, `documents[].doc_hash`, `memory_packet`
|
|
103
|
+
각 변수가 연결되는 서버는 아래와 같습니다:
|
|
70
104
|
|
|
71
|
-
|
|
105
|
+
| 환경변수 | 기본값 | 역할 | 필수 여부 |
|
|
106
|
+
|---|---|---|---|
|
|
107
|
+
| `VAULT_DIR_PATH` | — | Obsidian Vault 절대 경로 | **필수** |
|
|
108
|
+
| `LOGGING_LEVEL` | `info` | 로그 수준 (`debug` / `info` / `warn` / `error`) | 선택 |
|
|
109
|
+
| `LLM_API_URL` | `http://127.0.0.1:8080` | llama-server 채팅 엔드포인트 | 선택 |
|
|
110
|
+
| `LLM_EMBEDDING_API_URL` | `http://127.0.0.1:8081` | llama-server 임베딩 엔드포인트 (벡터 색인 필수) | 선택 |
|
|
111
|
+
| `LLM_EMBEDDING_MODEL` | `nomic-embed-text` | 임베딩 모델명 | 선택 |
|
|
112
|
+
| `LLM_CHAT_MODEL` | `llama3` | 채팅 모델명 | 선택 |
|
|
113
|
+
| `LLM_RERANKER_API_URL` | `http://127.0.0.1:8082` | llama-server 리랭커 엔드포인트 (미설정 시 폴백) | 선택 |
|
|
114
|
+
| `VAULT_METRICS_LOG_PATH` | — | 응답 압축·토큰 메트릭 JSONL 기록 경로 | 선택 |
|
|
72
115
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
| 빠른 토픽 스캔 | `scope`, `maxDocs`, `maxCharsPerDoc`, `compressionMode` | `topic`, `8`, `700`, `aggressive` |
|
|
76
|
-
| 이력서 컨텍스트 구축 | `scope`, `maxDocs`, `maxCharsPerDoc`, `memoryMode`, `compressionMode` | `all`, `20`, `1200`, `both`, `balanced` |
|
|
77
|
-
| 장문 Vault 단계 처리 | `maxDocs`, `maxCharsPerDoc`, `maxOutputChars` | `10`, `900`, `2800` |
|
|
116
|
+
> `LLM_EMBEDDING_API_URL`이 없으면 `search_vault_by_semantic`과 `index_vault_to_vectordb`가 동작하지 않습니다.
|
|
117
|
+
> `LLM_RERANKER_API_URL`에 서버가 없으면 오류 없이 폴백(원래 정렬 유지)됩니다.
|
|
78
118
|
|
|
79
|
-
|
|
119
|
+
## 시작하기 (빠른 설정)
|
|
80
120
|
|
|
81
|
-
|
|
121
|
+
### 1) 공통 요구사항
|
|
82
122
|
|
|
83
|
-
|
|
123
|
+
- 최소 설정은 `VAULT_DIR_PATH` (Vault 절대 경로)입니다.
|
|
124
|
+
- MCP 실행 자체는 배포 패키지 기준으로 맞춰 설명합니다.
|
|
125
|
+
- 배포 패키지(`npx`) 사용 (권장)
|
|
126
|
+
- 로컬 `build/index.js`는 개발/디버깅 목적
|
|
127
|
+
- 로컬 실행은 마지막 섹션(5)에서 분리 안내합니다.
|
|
128
|
+
- Vault 경로가 없으면 시작이 실패합니다.
|
|
129
|
+
- 아래 예시는 복붙으로 바로 사용할 수 있도록 정리했습니다.
|
|
84
130
|
|
|
85
|
-
###
|
|
131
|
+
### 2) 배포 패키지 (`npx`) 설정
|
|
86
132
|
|
|
87
133
|
```json
|
|
88
134
|
{
|
|
89
|
-
"
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
135
|
+
"mcpServers": {
|
|
136
|
+
"obsidian": {
|
|
137
|
+
"command": "npx",
|
|
138
|
+
"args": ["-y", "@sunub/obsidian-mcp-server@latest"],
|
|
139
|
+
"env": {
|
|
140
|
+
"VAULT_DIR_PATH": "/abs/path/to/your/vault",
|
|
141
|
+
"LOGGING_LEVEL": "info"
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
95
145
|
}
|
|
96
146
|
```
|
|
97
147
|
|
|
98
|
-
|
|
148
|
+
CLI 직접 실행:
|
|
99
149
|
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
"action": "collect_context",
|
|
103
|
-
"continuationToken": "<previous_response.batch.continuation_token>",
|
|
104
|
-
"compressionMode": "balanced"
|
|
105
|
-
}
|
|
150
|
+
```bash
|
|
151
|
+
npx -y @sunub/obsidian-mcp-server@latest --vault-path /abs/path/to/your/vault --logging-level info
|
|
106
152
|
```
|
|
107
153
|
|
|
108
|
-
### 3)
|
|
154
|
+
### 3) MCP Client configuration
|
|
109
155
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
156
|
+
클라이언트별 UI가 다르더라도 `command`/`args`/`env`의 기본 형태는 동일합니다.
|
|
157
|
+
|
|
158
|
+
> 배포 패키지 기준 핵심: `command="npx"`, `args=["-y","@sunub/obsidian-mcp-server@latest"]`, `env.VAULT_DIR_PATH`
|
|
159
|
+
|
|
160
|
+
<details>
|
|
161
|
+
<summary>Codex</summary>
|
|
162
|
+
`.codex/config.toml`에 아래처럼 등록합니다.
|
|
163
|
+
|
|
164
|
+
```toml
|
|
165
|
+
[mcp_servers.obsidian]
|
|
166
|
+
command = "npx"
|
|
167
|
+
args = ["-y", "@sunub/obsidian-mcp-server@latest"]
|
|
168
|
+
env = { VAULT_DIR_PATH = "/abs/path/to/your/vault" }
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
</details>
|
|
172
|
+
|
|
173
|
+
<details>
|
|
174
|
+
<summary>Copilot CLI</summary>
|
|
117
175
|
|
|
118
|
-
|
|
176
|
+
1) `copilot` 실행
|
|
177
|
+
2) `/mcp add`
|
|
178
|
+
3) 아래 값 입력
|
|
119
179
|
|
|
120
|
-
|
|
180
|
+
- **Server name:** `obsidian`
|
|
181
|
+
- **Server Type:** `[1] Local`
|
|
182
|
+
- **Command:** `npx -y @sunub/obsidian-mcp-server@latest`
|
|
183
|
+
- **Environment:** `{ "VAULT_DIR_PATH": "/abs/path/to/your/vault" }`
|
|
121
184
|
|
|
122
|
-
|
|
185
|
+
</details>
|
|
123
186
|
|
|
124
|
-
|
|
187
|
+
<details>
|
|
188
|
+
<summary>Copilot / VS Code</summary>
|
|
125
189
|
|
|
126
|
-
|
|
190
|
+
버전별 JSON 키 이름이 다를 수 있으므로(예: `servers`/`mcpServers`), 프로젝트 문서에 맞춰 적용하세요.
|
|
127
191
|
|
|
128
|
-
|
|
192
|
+
```json
|
|
193
|
+
{
|
|
194
|
+
"mcpServers": {
|
|
195
|
+
"obsidian": {
|
|
196
|
+
"command": "npx",
|
|
197
|
+
"args": ["-y", "@sunub/obsidian-mcp-server@latest"],
|
|
198
|
+
"env": { "VAULT_DIR_PATH": "/abs/path/to/your/vault" }
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
</details>
|
|
205
|
+
|
|
206
|
+
<details>
|
|
207
|
+
<summary>Cursor</summary>
|
|
208
|
+
|
|
209
|
+
`Cursor Settings` → `MCP` → `New MCP Server`에서 등록합니다.
|
|
210
|
+
|
|
211
|
+
```json
|
|
212
|
+
{
|
|
213
|
+
"obsidian": {
|
|
214
|
+
"command": "npx",
|
|
215
|
+
"args": ["-y", "@sunub/obsidian-mcp-server@latest"],
|
|
216
|
+
"env": { "VAULT_DIR_PATH": "/abs/path/to/your/vault" }
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
※ 일부 버전은 서버 식별 키명이 다를 수 있으니 설정 화면 안내에 맞춰 붙여넣으세요.
|
|
222
|
+
</details>
|
|
223
|
+
|
|
224
|
+
<details>
|
|
225
|
+
<summary>Gemini CLI</summary>
|
|
226
|
+
|
|
227
|
+
패키지 설치형 예시:
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
gemini mcp add obsidian npx -y @sunub/obsidian-mcp-server@latest --vault-path /abs/path/to/your/vault
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
※ 일부 Gemini 버전은 `--vault-path` 지원이 다를 수 있으므로, `gemini mcp add`의 최신 문서를 확인하세요.
|
|
234
|
+
</details>
|
|
235
|
+
|
|
236
|
+
### 4) 완성 예시 설정
|
|
129
237
|
|
|
130
238
|
```json
|
|
131
239
|
{
|
|
132
240
|
"mcpServers": {
|
|
133
|
-
"obsidian
|
|
241
|
+
"obsidian": {
|
|
134
242
|
"command": "npx",
|
|
135
|
-
"args": [
|
|
243
|
+
"args": [
|
|
244
|
+
"-y",
|
|
245
|
+
"@sunub/obsidian-mcp-server@latest"
|
|
246
|
+
],
|
|
136
247
|
"env": {
|
|
137
|
-
"VAULT_DIR_PATH": "/
|
|
248
|
+
"VAULT_DIR_PATH": "/path/to/obsidian-vault",
|
|
249
|
+
"VAULT_METRICS_LOG_PATH": "/path/to/vault-metrics.ndjson",
|
|
250
|
+
"LOGGING_LEVEL": "info",
|
|
251
|
+
"LLM_API_URL": "http://127.0.0.1:8080",
|
|
252
|
+
"LLM_EMBEDDING_API_URL": "http://127.0.0.1:8081",
|
|
253
|
+
"LLM_EMBEDDING_MODEL": "nomic-embed-text",
|
|
254
|
+
"LLM_CHAT_MODEL": "llama3"
|
|
138
255
|
}
|
|
139
256
|
}
|
|
140
257
|
}
|
|
141
258
|
}
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
#### Gemini
|
|
145
|
-
|
|
146
|
-
`gemini_config.json` 파일에 추가해야할 내용:
|
|
147
|
-
|
|
148
259
|
```json
|
|
149
260
|
{
|
|
150
261
|
"mcpServers": {
|
|
151
|
-
"obsidian
|
|
262
|
+
"obsidian": {
|
|
152
263
|
"command": "npx",
|
|
153
|
-
"args": [
|
|
264
|
+
"args": [
|
|
265
|
+
"-y",
|
|
266
|
+
"@sunub/obsidian-mcp-server@latest"
|
|
267
|
+
],
|
|
154
268
|
"env": {
|
|
155
|
-
"VAULT_DIR_PATH": "/
|
|
269
|
+
"VAULT_DIR_PATH": "/path/to/obsidian-vault",
|
|
270
|
+
"VAULT_METRICS_LOG_PATH": "/path/to/vault-metrics.ndjson",
|
|
271
|
+
"LOGGING_LEVEL": "info",
|
|
272
|
+
"LLM_API_URL": "http://127.0.0.1:8080",
|
|
273
|
+
"LLM_EMBEDDING_API_URL": "http://127.0.0.1:8081",
|
|
274
|
+
"LLM_EMBEDDING_MODEL": "nomic-embed-text",
|
|
275
|
+
"LLM_CHAT_MODEL": "llama3",
|
|
276
|
+
"LLM_RERANKER_API_URL": "http://127.0.0.1:8082"
|
|
156
277
|
}
|
|
157
278
|
}
|
|
158
279
|
}
|
|
159
280
|
}
|
|
160
281
|
```
|
|
161
282
|
|
|
162
|
-
|
|
283
|
+
> 각 변수의 역할과 기본값은 [사전 주의사항 → 환경변수 전체 설정 예시](#환경변수-전체-설정-예시)를 참고하세요.
|
|
163
284
|
|
|
164
|
-
|
|
285
|
+
## 시맨틱 검색 (RAG) 설정
|
|
165
286
|
|
|
166
|
-
|
|
167
|
-
// ✅ 올바른 예시
|
|
168
|
-
"VAULT_DIR_PATH": "/Users/username/Documents/MyVault"
|
|
169
|
-
"VAULT_DIR_PATH": "C:\\Users\\username\\Documents\\MyVault" // Windows
|
|
170
|
-
"VAULT_DIR_PATH": "/mnt/c/Users/username/Documents/MyVault" // WSL
|
|
287
|
+
키워드 검색 외에 **의미 기반 벡터 검색**을 사용하려면 임베딩 서버가 필요합니다.
|
|
171
288
|
|
|
172
|
-
|
|
173
|
-
"VAULT_DIR_PATH": "~/Documents/MyVault" // 상대 경로 사용 불가
|
|
174
|
-
"VAULT_DIR_PATH": "./vault" // 상대 경로 사용 불가
|
|
175
|
-
```
|
|
289
|
+
### 활성화 조건
|
|
176
290
|
|
|
177
|
-
|
|
291
|
+
`LLM_EMBEDDING_API_URL`이 가리키는 서버가 실행 중이어야 합니다.
|
|
292
|
+
없으면 `search_vault_by_semantic`과 `index_vault_to_vectordb`가 동작하지 않고,
|
|
293
|
+
`useRagContext`는 자동으로 키워드 검색으로 폴백됩니다.
|
|
178
294
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
295
|
+
```bash
|
|
296
|
+
# ecosystem.config.cjs 기준 — 임베딩 서버 단독 시작
|
|
297
|
+
pm2 start ecosystem.config.cjs --only llama-embedding-server
|
|
298
|
+
```
|
|
182
299
|
|
|
183
|
-
|
|
300
|
+
### 초기 색인 실행
|
|
184
301
|
|
|
185
|
-
|
|
302
|
+
서버 연결 후 처음 한 번은 전체 색인을 직접 트리거해야 합니다.
|
|
186
303
|
|
|
187
|
-
|
|
304
|
+
```text
|
|
305
|
+
"Vault 전체를 재색인해줘."
|
|
306
|
+
```
|
|
188
307
|
|
|
189
|
-
|
|
190
|
-
# 환경 변수 설정 후 실행
|
|
191
|
-
VAULT_DIR_PATH=/path/to/vault npx -y @sunub/obsidian-mcp-server
|
|
308
|
+
내부 동작:
|
|
192
309
|
|
|
193
|
-
|
|
194
|
-
|
|
310
|
+
```json
|
|
311
|
+
{
|
|
312
|
+
"method": "tools/call",
|
|
313
|
+
"params": {
|
|
314
|
+
"name": "vault",
|
|
315
|
+
"arguments": { "action": "index_vault_to_vectordb" }
|
|
316
|
+
}
|
|
317
|
+
}
|
|
195
318
|
```
|
|
196
319
|
|
|
197
|
-
|
|
320
|
+
이후에는 파일 변경 시 **VaultWatcher가 자동으로 증분 색인**합니다 (mtime 기반).
|
|
198
321
|
|
|
199
|
-
|
|
322
|
+
### 색인 저장 위치
|
|
200
323
|
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
|
|
324
|
+
```
|
|
325
|
+
{VAULT_DIR_PATH}/.obsidian/vector_cache/ ← LanceDB 데이터 디렉터리
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
- 직접 삭제해도 무방합니다. 다음 `index_vault_to_vectordb` 호출 시 재생성됩니다.
|
|
329
|
+
- `LLM_EMBEDDING_MODEL`을 변경하면 서버 시작 시 **자동으로 전체 재색인**이 발생합니다 (INDEX_VERSION 또는 모델명 불일치 감지).
|
|
330
|
+
|
|
331
|
+
### 검색 전략 흐름
|
|
204
332
|
|
|
205
|
-
|
|
206
|
-
|
|
333
|
+
```
|
|
334
|
+
사용자 질문
|
|
335
|
+
│
|
|
336
|
+
▼
|
|
337
|
+
search_vault_by_semantic (벡터 유사도 검색 → 리랭킹)
|
|
338
|
+
│ 결과 없음
|
|
339
|
+
▼
|
|
340
|
+
vault.search (키워드 폴백)
|
|
341
|
+
│ 결과 없음
|
|
342
|
+
▼
|
|
343
|
+
컨텍스트 없이 LLM 응답
|
|
207
344
|
```
|
|
208
345
|
|
|
209
|
-
|
|
346
|
+
<details>
|
|
347
|
+
<summary>청크·토큰 파라미터 (파워유저용)</summary>
|
|
210
348
|
|
|
211
|
-
|
|
349
|
+
| 항목 | 값 | 비고 |
|
|
350
|
+
|---|---|---|
|
|
351
|
+
| 청크 크기 | 500 tokens | tiktoken cl100k 기준 |
|
|
352
|
+
| 청크 오버랩 | 50 tokens | |
|
|
353
|
+
| 임베딩 최대 토큰 | 500 tokens | 초과 시 비례 잘라냄 |
|
|
354
|
+
| 임베딩 접두어 | `search_document: {text}` | nomic-embed-text 형식 |
|
|
355
|
+
| 벡터 차원 | 768 | nomic-embed-text 출력 크기 |
|
|
356
|
+
| IVF-PQ 인덱스 생성 | 256개 문서 이상 | 미만이면 브루트포스로 동작 |
|
|
357
|
+
| 동시 임베딩 요청 | 최대 3 | Semaphore 제한 |
|
|
212
358
|
|
|
213
|
-
|
|
214
|
-
- `mode`
|
|
215
|
-
- `truncated`
|
|
216
|
-
- `doc_count`
|
|
359
|
+
</details>
|
|
217
360
|
|
|
218
|
-
|
|
361
|
+
## 시작 후 빠른 검증
|
|
219
362
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
export VAULT_METRICS_LOG_PATH=.tmp/vault-metrics.jsonl
|
|
363
|
+
연결이 끝나면 아래 3가지만 먼저 확인하세요.
|
|
364
|
+
문서가 안 열리더라도 어디서 실패했는지 바로 좁힐 수 있습니다.
|
|
223
365
|
|
|
224
|
-
|
|
225
|
-
npm run inspector
|
|
366
|
+
1) Vault 상태 확인
|
|
226
367
|
|
|
227
|
-
|
|
228
|
-
|
|
368
|
+
```text
|
|
369
|
+
"Vault 상태를 요약해줘."
|
|
229
370
|
```
|
|
230
371
|
|
|
231
|
-
|
|
372
|
+
예상 내부 동작:
|
|
232
373
|
|
|
233
|
-
|
|
374
|
+
```json
|
|
375
|
+
{
|
|
376
|
+
"method": "tools/call",
|
|
377
|
+
"params": {
|
|
378
|
+
"name": "vault",
|
|
379
|
+
"arguments": { "action": "stats" }
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
```
|
|
234
383
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
384
|
+
정상 동작 시 응답에 `totalFiles`, `isInitialized`, `vaultPath`가 들어갑니다.
|
|
385
|
+
|
|
386
|
+
1) 검색 인덱스 확인
|
|
387
|
+
|
|
388
|
+
```text
|
|
389
|
+
"노트 제목에 'MCP'가 들어간 문서만 5개 찾아줘."
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
예상 내부 동작:
|
|
393
|
+
|
|
394
|
+
```json
|
|
395
|
+
{
|
|
396
|
+
"method": "tools/call",
|
|
397
|
+
"params": {
|
|
398
|
+
"name": "vault",
|
|
399
|
+
"arguments": {
|
|
400
|
+
"action": "search",
|
|
401
|
+
"keyword": "MCP",
|
|
402
|
+
"limit": 5
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
```
|
|
238
407
|
|
|
239
|
-
|
|
240
|
-
npm run lint
|
|
408
|
+
`search`에서 결과가 비어 있으면 인덱싱/경로 또는 키워드 범위를 의심합니다.
|
|
241
409
|
|
|
242
|
-
|
|
243
|
-
|
|
410
|
+
1) 문서 읽기 확인
|
|
411
|
+
|
|
412
|
+
```text
|
|
413
|
+
"특정 노트 하나를 읽어줘."
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
예상 내부 동작:
|
|
417
|
+
|
|
418
|
+
```json
|
|
419
|
+
{
|
|
420
|
+
"method": "tools/call",
|
|
421
|
+
"params": {
|
|
422
|
+
"name": "vault",
|
|
423
|
+
"arguments": {
|
|
424
|
+
"action": "read",
|
|
425
|
+
"filename": "예: 어떤 문서 이름"
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
244
429
|
```
|
|
245
430
|
|
|
246
|
-
|
|
431
|
+
`filename`이 틀리면 `{ "error": "Document not found: ..." }`가 오고, `read` 대신 `list_all`으로 후보를 먼저 확인하면 해결이 빠릅니다.
|
|
432
|
+
|
|
433
|
+
`search`, `list_all`, `load_memory`는 `quiet` 기본값이 `true`라서 기본 응답이 간략해질 수 있습니다.
|
|
434
|
+
필요하면 `quiet: false`, `includeContent: true`, `excerptLength`(또는 `maxOutputChars`)를 함께 써서 상세를 확인하세요.
|
|
435
|
+
|
|
436
|
+
## 사용 예시
|
|
437
|
+
|
|
438
|
+
MCP를 어떻게 호출하는지보다 “무슨 동작을 하려고 하는지”가 더 중요합니다.
|
|
439
|
+
|
|
440
|
+
마크다운 문서에 작성되어 있는 첨부파일을 정리하는 동작 예시 :
|
|
441
|
+
|
|
442
|
+
<https://github.com/user-attachments/assets/eb74ec05-09f7-4632-a22c-666b7e844147>
|
|
443
|
+
|
|
444
|
+
- 특정 문서를 대상으로 문서에 작성되더 있는 이미지 첨부 파일을 정리해달라고 요구할 경우 해당 `images` 폴더 내부에 해당 파일의 이름으로 폴더를 생성하여 정리합니다.
|
|
445
|
+
- 정리된 문서는 기존의 작성되어 있던 문서의 연결이 깨지지 않도록 `images` 폴더를 기준으로 연결을 업데이트 합니다.
|
|
446
|
+
|
|
447
|
+
직접 실행용 질문 예시:
|
|
448
|
+
|
|
449
|
+
- `README.md`에서 `시작하기 (빠른 설정)`의 `MCP Client configuration` 부분만 찾아줘.
|
|
450
|
+
- `docs/tools-usage-guide.md`의 `vault` 설정 예시만 읽고 정리해줘.
|
|
451
|
+
- `docs/tool-reference.md`에서 `vault`의 `collect_context` 파라미터만 찾아줘.
|
|
452
|
+
- `docs/tools-usage-guide.md`에서 `MCP 서버` 설정 블록만 정리해줘.
|
|
453
|
+
|
|
454
|
+
자연어 예시는 아래처럼 구체적으로 쓰면 도구가 더 정확하게 동작합니다.
|
|
455
|
+
|
|
456
|
+
- `"README.md의 시작하기 부분에서 실행 명령 예시만 찾아줘"`
|
|
457
|
+
- `"docs/tools-usage-guide.md에서 vault 관련 사용 예시만 찾아서 비교해줘"`
|
|
458
|
+
- `"docs/tool-reference.md의 vault.read 파라미터 설명만 읽어줘"`
|
|
459
|
+
|
|
460
|
+
`vault`는 사용자 질문을 토대로 내부적으로 매핑되어 호출되며, 실제 흐름은 아래처럼 동작합니다.
|
|
461
|
+
|
|
462
|
+
- `README.md의 시작하기 (빠른 설정)에서 npx 예시만 보여줘`
|
|
463
|
+
→ 핵심 키워드만 추출해 `vault.search`가 먼저 호출됩니다.
|
|
464
|
+
- `docs/tool-reference.md의 collect_context 파라미터만 읽어줘`
|
|
465
|
+
→ 먼저 `vault.read`로 문서의 해당 부분을 읽고, 필요 시 `vault.collect_context`로 정리합니다.
|
|
466
|
+
- `docs/tools-usage-guide.md에서 frontmatter 처리 과정을 읽어줘`
|
|
467
|
+
→ 문서 위치를 `vault.read`로 찾은 뒤 `generate_property`/`write_property`/`create_document_with_properties`를 순차 호출할 수 있습니다.
|
|
468
|
+
|
|
469
|
+
동작하는 도구의 호출 흐름은 [사용 예시(도구 호출 흐름)](docs/tool-call-flows.md)에서 구체 JSON 예시와 함께 확인하세요.
|
|
470
|
+
|
|
471
|
+
## 등록된 도구
|
|
472
|
+
|
|
473
|
+
<!-- BEGIN AUTO GENERATED TOOLS -->
|
|
247
474
|
|
|
248
|
-
|
|
475
|
+
- **Obsidian Tools (8 actions)**
|
|
476
|
+
- [`vault`](docs/tool-reference.md#vault-action)
|
|
477
|
+
- `search`
|
|
478
|
+
- `read`
|
|
479
|
+
- `list_all`
|
|
480
|
+
- `stats`
|
|
481
|
+
- `collect_context`
|
|
482
|
+
- `load_memory`
|
|
483
|
+
- `search_vault_by_semantic`
|
|
484
|
+
- `index_vault_to_vectordb`
|
|
485
|
+
- [`generate_property`](docs/tool-reference.md#generate_property)
|
|
486
|
+
- [`write_property`](docs/tool-reference.md#write_property)
|
|
487
|
+
- [`create_document_with_properties`](docs/tool-reference.md#create_document_with_properties)
|
|
488
|
+
- [`organize_attachments`](docs/tool-reference.md#organize_attachments)
|
|
249
489
|
|
|
250
|
-
|
|
251
|
-
- **린트**: Biome를 사용한 코드 품질 검사
|
|
252
|
-
- **테스트**: Vitest를 통한 E2E 테스트
|
|
253
|
-
- **배포**: 태그 푸시 시 자동으로 npm에 배포
|
|
490
|
+
<!-- END AUTO GENERATED TOOLS -->
|
|
254
491
|
|
|
255
|
-
##
|
|
492
|
+
## 자세한 사용 규약
|
|
256
493
|
|
|
257
|
-
|
|
494
|
+
- 도구 상세 동작, 파라미터 기본값, 실제 응답 형식은 [Tool Reference](docs/tool-reference.md)에서 확인하세요.
|
|
495
|
+
- `vault`는 하나의 MCP tool이고 `action` 값으로 실제 동작이 분기됩니다. 오타가 가장 흔한 실패 원인입니다.
|
|
496
|
+
- 대규모 Vault에서는 `collect_context`를 `scope="all"`, `maxDocs`를 작게 시작해 단계적으로 확장하세요.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const AppContainer: () => import("react/jsx-runtime").JSX.Element;
|