링크된 문서
Obsidian Markdown Notes
Obsidian Markdown Notes
Obsidian Markdown Notes MCP 서버는 Obsidian 볼트 또는 Markdown 노트가 포함된 디렉토리를 읽고 검색할 수 있는 Model Context Protocol 서버입니다. 이 서버를 통해 AI 어시스턴트는 로컬 Markdown 노트 및 지식 베이스에 접근하여 정보를 검색하고 참조할 수 있습니다.
특징
- Obsidian 볼트 또는 Markdown 디렉토리 접근
- 노트 내용 읽기 및 검색
- 노트 메타데이터 및 YAML 프론트매터 분석
- 태그 기반 검색 및 필터링
- 위키링크 및 Obsidian 스타일 링크 파싱
- 텍스트 기반 검색 및 정규표현식 지원
- 경로 기반 노트 필터링
- 노트 내 제목 및 구조 분석
- 이미지 및 첨부 파일 참조 관리
- 최근 수정된 노트 찾기
- 볼트 구조 및 폴더 탐색
- 내장 Obsidian 플러그인 메타데이터 접근
- 다중 볼트 지원
- 파일 시스템 감시 및 변경 감지
API
리소스
obsidian://vault/{vault_id}
- 특정 Obsidian 볼트의 정보와 구조를 제공합니다.
obsidian://vault/{vault_id}/note/{note_path}
- 특정 노트의 내용과 메타데이터를 제공합니다.
obsidian://vault/{vault_id}/tags
- 볼트 내의 모든 태그 목록을 제공합니다.
도구
볼트 관리
list_vaults
사용 가능한 모든 볼트를 나열합니다. - 입력: 없음 - 출력: 볼트 ID, 이름, 경로 등을 포함한 볼트 목록
get_vault_info
특정 볼트의 정보를 조회합니다. - 입력: - vault_id: 볼트 ID 또는 이름 - 출력: 볼트 상세 정보, 폴더 구조, 노트 수 등
list_folders
볼트 내의 폴더를 나열합니다. - 입력: - vault_id: 볼트 ID 또는 이름 - parent_path: (선택적) 상위 폴더 경로 - 출력: 폴더 경로, 이름, 하위 폴더 수 등을 포함한 폴더 목록
노트 관리
list_notes
볼트 내의 노트를 나열합니다. - 입력: - vault_id: 볼트 ID 또는 이름 - folder_path: (선택적) 특정 폴더 경로 - recursive: (선택적) 하위 폴더의 노트도 포함할지 여부 - sort_by: (선택적) 정렬 기준 (name, created, modified) - sort_order: (선택적) 정렬 순서 (asc, desc) - limit: (선택적) 최대 결과 수 - 출력: 노트 경로, 이름, 크기, 수정 시간 등을 포함한 노트 목록
get_note
특정 노트의 내용을 조회합니다. - 입력: - vault_id: 볼트 ID 또는 이름 - note_path: 노트 경로 - include_metadata: (선택적) 메타데이터 포함 여부 - render_markdown: (선택적) Markdown을 HTML로 렌더링할지 여부 - 출력: 노트 내용, 메타데이터, YAML 프론트매터 등
get_note_metadata
특정 노트의 메타데이터만 조회합니다. - 입력: - vault_id: 볼트 ID 또는 이름 - note_path: 노트 경로 - 출력: 노트 메타데이터, YAML 프론트매터, 생성 시간, 수정 시간 등
get_recently_modified_notes
최근에 수정된 노트를 조회합니다. - 입력: - vault_id: 볼트 ID 또는 이름 - days: (선택적) 최근 며칠 내의 노트를 조회할지 (기본값: 7) - limit: (선택적) 최대 결과 수 - 출력: 최근 수정된 노트 목록
검색 및 조회
search_notes
노트 내용을 검색합니다. - 입력: - vault_id: 볼트 ID 또는 이름 - query: 검색 쿼리 - case_sensitive: (선택적) 대소문자 구분 여부 - regex: (선택적) 정규표현식 사용 여부 - include_metadata: (선택적) 메타데이터 검색 포함 여부 - folder_path: (선택적) 검색할 폴더 경로 - limit: (선택적) 최대 결과 수 - 출력: 검색 결과 목록 (노트 경로, 매칭 내용, 컨텍스트 등)
search_by_tag
태그로 노트를 검색합니다. - 입력: - vault_id: 볼트 ID 또는 이름 - tag: 검색할 태그 (# 제외) - exact_match: (선택적) 정확한 태그 일치 여부 - include_subtags: (선택적) 하위 태그 포함 여부 - limit: (선택적) 최대 결과 수 - 출력: 해당 태그가 있는 노트 목록
list_all_tags
볼트의 모든 태그를 나열합니다. - 입력: - vault_id: 볼트 ID 또는 이름 - include_count: (선택적) 태그별 노트 수 포함 여부 - 출력: 태그 목록 및 사용 빈도
find_linked_notes
특정 노트와 연결된 노트를 찾습니다. - 입력: - vault_id: 볼트 ID 또는 이름 - note_path: 노트 경로 - direction: (선택적) 링크 방향 (inbound, outbound, both) - 출력: 연결된 노트 목록
분석 및 구조 조회
analyze_note_structure
노트의 구조를 분석합니다. - 입력: - vault_id: 볼트 ID 또는 이름 - note_path: 노트 경로 - 출력: 제목, 섹션, 목록, 코드 블록 등의 구조 정보
get_vault_graph
볼트의 노트 간 연결 그래프를 생성합니다. - 입력: - vault_id: 볼트 ID 또는 이름 - depth: (선택적) 그래프 깊이 - include_tags: (선택적) 태그를 노드로 포함할지 여부 - 출력: 노트 간 연결 정보를 포함한 그래프 데이터
extract_wiki_links
노트에서 위키링크를 추출합니다. - 입력: - vault_id: 볼트 ID 또는 이름 - note_path: 노트 경로 - resolve_links: (선택적) 링크 경로를 해결할지 여부 - 출력: 위키링크 목록 및 대상 노트 정보
extract_attachments
노트에서 첨부 파일 참조를 추출합니다. - 입력: - vault_id: 볼트 ID 또는 이름 - note_path: 노트 경로 - 출력: 첨부 파일 경로 및 유형 목록
사용 방법
설치 및 구성
- 사전 요구 사항:
- 로컬 Obsidian 볼트 또는 Markdown 노트 디렉토리
-
Python 3.8 이상
-
MCP 서버 설치:
pip install obsidian-markdown-mcp -
Claude Desktop 구성:
{ "mcpServers": { "obsidian-markdown": { "command": "python", "args": ["-m", "obsidian_markdown_mcp"], "env": { "OBSIDIAN_VAULT_PATHS": "/path/to/vault1,/path/to/vault2", "OBSIDIAN_DEFAULT_VAULT": "vault1", "OBSIDIAN_WATCH_CHANGES": "true" } } } } -
구성 옵션:
OBSIDIAN_VAULT_PATHS: 콤마로 구분된 볼트 경로 목록OBSIDIAN_DEFAULT_VAULT: 기본 볼트 이름 또는 IDOBSIDIAN_WATCH_CHANGES: 파일 시스템 변경 감지 활성화 여부 (기본값: true)OBSIDIAN_CACHE_TTL: 캐시 수명(초) (기본값: 60)OBSIDIAN_LOG_LEVEL: 로그 수준 (기본값: INFO)OBSIDIAN_MAX_SEARCH_RESULTS: 검색 결과 최대 수 (기본값: 100)OBSIDIAN_INCLUDE_HIDDEN_FILES: 숨겨진 파일 포함 여부 (기본값: false)
기본 사용 예시
-
사용 가능한 볼트 목록 확인:
list_vaults() -
볼트 구조 탐색:
get_vault_info({ vault_id: "my_vault" }) -
폴더 내 노트 나열:
list_notes({ vault_id: "my_vault", folder_path: "Projects", recursive: true, sort_by: "modified", sort_order: "desc" }) -
특정 노트 내용 조회:
get_note({ vault_id: "my_vault", note_path: "Projects/ProjectA/Meeting Notes.md", include_metadata: true }) -
노트 내용 검색:
search_notes({ vault_id: "my_vault", query: "machine learning algorithms", case_sensitive: false, include_metadata: true }) -
태그로 노트 검색:
search_by_tag({ vault_id: "my_vault", tag: "project/active", include_subtags: true }) -
볼트의 모든 태그 나열:
list_all_tags({ vault_id: "my_vault", include_count: true }) -
최근 수정된 노트 조회:
get_recently_modified_notes({ vault_id: "my_vault", days: 3, limit: 10 }) -
노트 구조 분석:
analyze_note_structure({ vault_id: "my_vault", note_path: "Research/Literature Review.md" }) -
연결된 노트 찾기:
find_linked_notes({ vault_id: "my_vault", note_path: "Projects/ProjectA/Overview.md", direction: "both" })
고급 사용 사례
지식 베이스 쿼리
// 지식 베이스에서 특정 주제에 관한 정보 검색
const results = search_notes({
vault_id: "my_knowledge_base",
query: "quantum computing applications",
limit: 5
});
// 검색 결과에서 관련 내용 추출
const relevantInfo = results.map(result => {
return {
notePath: result.note_path,
title: result.title,
excerpt: result.context.substring(0, 200) + "..."
};
});
// 검색 결과 기반 요약 제공
console.log("검색 결과 기반 '양자 컴퓨팅 응용 프로그램'에 대한 요약:");
for (const info of relevantInfo) {
console.log(`\n${info.title} (${info.notePath}):`);
console.log(info.excerpt);
}
태그 기반 프로젝트 관리
// 활성 프로젝트 노트 검색
const activeProjects = search_by_tag({
vault_id: "my_vault",
tag: "status/active"
});
// 마감일이 있는 프로젝트 필터링
const upcomingDeadlines = activeProjects.filter(project => {
const metadata = get_note_metadata({
vault_id: "my_vault",
note_path: project.note_path
});
return metadata.frontmatter && metadata.frontmatter.due_date;
}).map(project => {
const metadata = get_note_metadata({
vault_id: "my_vault",
note_path: project.note_path
});
return {
project: project.title,
path: project.note_path,
due_date: metadata.frontmatter.due_date
};
});
// 마감일 기준 정렬
upcomingDeadlines.sort((a, b) => new Date(a.due_date) - new Date(b.due_date));
console.log("다가오는 프로젝트 마감일:");
for (const project of upcomingDeadlines) {
console.log(`${project.project}: ${project.due_date}`);
}
보안 고려사항
- 볼트 경로는 로컬 파일 시스템에 대한 접근을 제공하므로 신중하게 관리해야 합니다.
- 민감한 정보가 포함된 볼트에 대한 접근은 제한해야 합니다.
- 필요한 경우 읽기 전용 모드로 서버를 구성하세요.
- 공유 환경에서는 접근 제어 설정을 강화하세요.
- 볼트 경로가 유출되지 않도록 주의하세요.
연결된 구성 요소
- obsidian-mcp - 메모 검색, 읽기, 쓰기 및 구성을 위한 도구가 있는 Obsidian.md용 MCP 서버
- Anki - Anki 덱과 카드와 상호작용하는 MCP 서버
- Notion - Notion API와 상호작용
- OneNote - Microsoft Graph API를 사용하여 Microsoft OneNote에 연결하는 MCP 서버