Skip to main content
Glama
nuuuri

obsidian-mcp

by nuuuri
README.md
# Obsidian MCP Server

Claude와 Obsidian Vault를 양방향으로 연결하는 MCP(Model Context Protocol) 서버입니다.

## 기능

### 노트 관리

- **list_notes** - Vault 내 모든 노트 목록 조회
- **read_note** - 노트 읽기 (frontmatter, 링크, 태그 포함)
- **create_note** - 새 노트 생성 (YAML frontmatter 지원)
- **update_note** - 노트 내용 수정
- **update_frontmatter** - frontmatter만 수정
- **append_to_note** - 노트 끝에 내용 추가
- **delete_note** - 노트 삭제

### 검색 및 그래프

- **search_notes** - 전문 검색 (폴더/태그 필터 지원)
- **get_backlinks** - 특정 노트를 참조하는 노트 조회
- **get_graph** - 노트 간 연결 그래프 데이터

### Daily Notes

- **get_daily_note** - 특정 날짜의 Daily Note 조회
- **create_daily_note** - Daily Note 생성 (템플릿 지원)
- **append_to_daily_note** - Daily Note에 내용 추가
- **list_daily_notes** - Daily Notes 목록 조회

## 설치

```bash
cd ~/obsidian-mcp
npm install
npm run build
```

## 설정

### Claude Desktop 설정

`~/Library/Application Support/Claude/claude_desktop_config.json` 파일을 수정하세요:

```json
{
  "mcpServers": {
    "obsidian": {
      "command": "node",
      "args": ["/Users/YOUR_USERNAME/obsidian-mcp/dist/index.js"],
      "env": {
        "OBSIDIAN_VAULT_PATH": "/path/to/your/obsidian/vault",
        "OBSIDIAN_DAILY_NOTES_FOLDER": "Daily Notes",
        "OBSIDIAN_DAILY_NOTES_FORMAT": "YYYY-MM-DD"
      }
    }
  }
}
```

### Claude Code 설정

`~/.claude/settings.json` 또는 프로젝트의 `.claude/settings.json`에 추가:

```json
{
  "mcpServers": {
    "obsidian": {
      "command": "node",
      "args": ["/Users/YOUR_USERNAME/obsidian-mcp/dist/index.js"],
      "env": {
        "OBSIDIAN_VAULT_PATH": "/path/to/your/obsidian/vault",
        "OBSIDIAN_DAILY_NOTES_FOLDER": "Daily Notes",
        "OBSIDIAN_DAILY_NOTES_FORMAT": "YYYY-MM-DD"
      }
    }
  }
}
```

### 환경 변수

| 변수                          | 설명                    | 필수 | 기본값        |
| ----------------------------- | ----------------------- | ---- | ------------- |
| `OBSIDIAN_VAULT_PATH`         | Obsidian Vault 경로     | Yes  | -             |
| `OBSIDIAN_DAILY_NOTES_FOLDER` | Daily Notes 폴더 경로   | No   | `Daily Notes` |
| `OBSIDIAN_DAILY_NOTES_FORMAT` | Daily Notes 파일명 형식 | No   | `YYYY-MM-DD`  |

## 사용 예시

### Claude에게 요청할 수 있는 것들

```
"내 Obsidian에서 'project' 태그가 있는 노트들을 찾아줘"

"오늘 Daily Note에 '## 회의 메모\n- 새로운 기능 논의' 추가해줘"

"Projects 폴더에 'new-feature.md' 노트를 만들어줘"

"'API 설계' 노트를 참조하는 다른 노트들이 뭐가 있어?"

"최근 일주일 Daily Notes 목록 보여줘"
```

### 도구 사용 예시

**노트 검색:**

```json
{
  "query": "프로젝트 계획",
  "folder": "Projects",
  "tags": ["active"]
}
```

**노트 생성:**

```json
{
  "path": "Projects/new-feature.md",
  "content": "# 새 기능\n\n## 개요\n...",
  "frontmatter": {
    "tags": ["project", "feature"],
    "status": "planning"
  }
}
```

**Daily Note에 추가:**

```json
{
  "content": "## 아이디어\n- [[새로운 기능]] 구현 방안",
  "date": "2025-01-06"
}
```

## 보안

- 경로 순회 공격 방지
- 심볼릭 링크 차단
- 파일 크기 제한 (10MB)
- 쿼리 길이 제한 (1000자)

## 개발

```bash
# 개발 모드 (파일 변경 시 자동 컴파일)
npm run dev

# 빌드
npm run build

# 실행
npm start
```

## 라이선스

MIT