feat: implement User Story 2 - Search and Discovery (P2)

Implemented 12 new MCP tools for search and knowledge graph navigation:

Search Tools (2):
- obsidian_search: Content search with folder filtering and case sensitivity
- obsidian_search_with_context: Search with surrounding context lines

Link Tools (5):
- obsidian_get_backlinks: Show incoming links to a note
- obsidian_get_outgoing_links: Show outgoing links from a note
- obsidian_list_unresolved_links: Find broken wikilinks
- obsidian_list_deadends: Find notes with no outgoing links
- obsidian_list_orphans: Find notes with no incoming links

Tag & Alias Tools (3):
- obsidian_list_tags: List all tags with optional counts
- obsidian_get_tag_info: Detailed tag usage information
- obsidian_list_aliases: List note aliases

Property Discovery Tools (2):
- obsidian_list_properties: List all vault properties
- obsidian_get_property_count: Get property usage counts

New files created:
- src/tools/search.ts (2 tools)
- src/tools/links.ts (5 tools)
- src/tools/tags-aliases.ts (3 tools)
- src/tools/properties.ts (2 tools)

Updated:
- src/tools/index.ts: Register all new tool modules
- src/validation/schemas.ts: Enhanced searchSchema with new parameters
- manifest.json: Added 12 new tools to tools array (21 total)
- tasks.md: Marked T046-T063 complete (18 tasks)

Build:  0 errors
Validation:  Manifest passes
Total tools: 21 (9 US1 + 12 US2)
Tasks complete: 70/167 (41.9%)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-03-22 12:08:30 -05:00
parent edb03263ac
commit a978d70b3f
9 changed files with 583 additions and 21 deletions

View File

@@ -107,24 +107,24 @@
### Implementation for User Story 2
- [ ] T046 [P] [US2] Create obsidian_search tool in src/tools/search.ts
- [ ] T047 [P] [US2] Define Zod schema for search parameters (query, folder, limit, caseSensitive)
- [ ] T048 [P] [US2] Create obsidian_search_with_context tool in src/tools/search.ts
- [ ] T049 [P] [US2] Create obsidian_get_backlinks tool in src/tools/links.ts
- [ ] T050 [P] [US2] Define Zod schema for backlinks parameters (file/path, counts)
- [ ] T051 [P] [US2] Create obsidian_get_outgoing_links tool in src/tools/links.ts
- [ ] T052 [P] [US2] Create obsidian_list_unresolved_links tool in src/tools/links.ts
- [ ] T053 [P] [US2] Create obsidian_list_tags tool in src/tools/tags-aliases.ts
- [ ] T054 [P] [US2] Define Zod schema for list_tags parameters (file, path, counts, sortBy)
- [ ] T055 [P] [US2] Create obsidian_get_tag_info tool in src/tools/tags-aliases.ts
- [ ] T056 [P] [US2] Create obsidian_list_aliases tool in src/tools/tags-aliases.ts
- [ ] T057 [P] [US2] Create obsidian_list_properties tool in src/tools/properties.ts (vault-wide properties)
- [ ] T058 [P] [US2] Create obsidian_get_property_count tool in src/tools/properties.ts
- [ ] T059 [P] [US2] Create obsidian_list_deadends tool in src/tools/links.ts (notes with no outgoing links)
- [ ] T060 [P] [US2] Create obsidian_list_orphans tool in src/tools/file-operations.ts (notes with no incoming links)
- [ ] T061 [US2] Register all search and discovery tools in src/server.ts tools/list handler
- [ ] T062 [US2] Implement search result formatting (parse JSON/TSV output from CLI)
- [ ] T063 [US2] Add pagination support for large search results
- [X] T046 [P] [US2] Create obsidian_search tool in src/tools/search.ts
- [X] T047 [P] [US2] Define Zod schema for search parameters (query, folder, limit, caseSensitive)
- [X] T048 [P] [US2] Create obsidian_search_with_context tool in src/tools/search.ts
- [X] T049 [P] [US2] Create obsidian_get_backlinks tool in src/tools/links.ts
- [X] T050 [P] [US2] Define Zod schema for backlinks parameters (file/path, counts)
- [X] T051 [P] [US2] Create obsidian_get_outgoing_links tool in src/tools/links.ts
- [X] T052 [P] [US2] Create obsidian_list_unresolved_links tool in src/tools/links.ts
- [X] T053 [P] [US2] Create obsidian_list_tags tool in src/tools/tags-aliases.ts
- [X] T054 [P] [US2] Define Zod schema for list_tags parameters (file, path, counts, sortBy)
- [X] T055 [P] [US2] Create obsidian_get_tag_info tool in src/tools/tags-aliases.ts
- [X] T056 [P] [US2] Create obsidian_list_aliases tool in src/tools/tags-aliases.ts
- [X] T057 [P] [US2] Create obsidian_list_properties tool in src/tools/properties.ts (vault-wide properties)
- [X] T058 [P] [US2] Create obsidian_get_property_count tool in src/tools/properties.ts
- [X] T059 [P] [US2] Create obsidian_list_deadends tool in src/tools/links.ts (notes with no outgoing links)
- [X] T060 [P] [US2] Create obsidian_list_orphans tool in src/tools/file-operations.ts (notes with no incoming links)
- [X] T061 [US2] Register all search and discovery tools in src/server.ts tools/list handler
- [X] T062 [US2] Implement search result formatting (parse JSON/TSV output from CLI)
- [X] T063 [US2] Add pagination support for large search results
**Checkpoint**: At this point, User Stories 1 AND 2 should both work independently