b149820a2b
feat: implement User Story 3 - Task & Property Management
...
Implemented task tracking and property management functionality,
completing User Story 3 with 8 new MCP tools.
Task Management Tools (5 tools):
1. obsidian_list_tasks
- List all tasks in vault or specific file
- Filter by status (done/todo/custom), file, path
- Support verbose mode with line numbers
- Output formats: json, tsv, csv, text
- Flags: total, active, daily
2. obsidian_toggle_task
- Toggle task between done/todo states
- Specify by ref (path:line) or file/path + line
- Support daily note flag
3. obsidian_mark_task_done
- Mark task as completed
- Same targeting options as toggle
4. obsidian_mark_task_todo
- Mark task as incomplete
- Same targeting options as toggle
5. obsidian_update_task_status
- Set custom status character (-, >, !, ?, etc.)
- Enables custom task workflows
Property Management Tools (3 tools):
6. obsidian_get_property
- Read single property value from file
- Required: property name
- Target by file name or path
7. obsidian_set_property
- Set or update property on file
- Required: name, value
- Optional: type (text, list, number, checkbox, date, datetime)
- Auto-infers type if not specified
8. obsidian_remove_property
- Delete property from file
- Required: property name
- Target by file name or path
Implementation Details:
- Created src/tools/tasks.ts with 5 task management tools
- Extended src/tools/properties.ts with 3 property tools
- Added Zod schemas for validation (listTasksSchema, taskReferenceSchema,
propertyReadSchema, propertySetSchema, propertyRemoveSchema)
- All tools use formatParam() for proper parameter quoting
- Complete inputSchema definitions for tools/list exposure
- Command mapping verified via 'obsidian help' for each command
Commands Used:
- obsidian tasks (list)
- obsidian task (manipulate)
- obsidian property:read
- obsidian property:set
- obsidian property:remove
Files Changed:
- src/tools/tasks.ts (new): 5 task management tools
- src/tools/properties.ts: Added registerPropertyManagementTools()
- src/tools/index.ts: Register task and property management tools
- manifest.json: Added 8 new tool descriptions
- specs/001-obsidian-mcp-bundle/tasks.md: Marked T064-T075, T079 complete
Task Progress:
- Completed: 13 of 18 US3 tasks (72%)
- Remaining: T076-T078 (convenience wrappers), T080-T081 (helpers)
- Total project: 83/98 tasks (84.7%)
Build: ✅ 0 errors
Validation: ✅ Manifest passes
Tool Count: 20 → 28 tools (+8)
User Story 3 Status: Core implementation complete ✅
Next: T076-T078 convenience wrappers (optional), Polish phase
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-22 13:57:31 -05:00
c577c07877
refactor: update search tool to match Obsidian CLI spec
...
Removed obsidian_search_with_context tool (not in CLI spec)
Updated obsidian_search to use exact CLI parameter names:
- query (required) - Search query text
- path (optional) - Limit search to folder path
- limit (optional) - Max number of files to return
- total (optional) - Return match count instead of file list
- case (optional) - Case sensitive search
- format (optional) - Output format: text or json (default: text)
Changed parameter names to match CLI:
- folder → path
- caseSensitive → case
- Added: total flag for match counts
- Removed: contextLines (not in CLI)
Files updated:
- src/tools/search.ts: Simplified to single search tool
- src/validation/schemas.ts: Updated searchSchema parameters
- manifest.json: Removed search_with_context, updated description
- tasks.md: Marked T048 as REMOVED
Total tools: 20 (was 21)
- User Story 1: 9 tools
- User Story 2: 11 tools (was 12)
Build: ✅ 0 errors
Validation: ✅ Manifest passes
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-22 12:26:17 -05:00
c5e42adac0
fix: correct manifest.json to pass MCPB validation
...
- Add required 'version' field (1.0.0)
- Change 'author' from string to object with name/url
- Move 'mcp_config' inside 'server' object
- Fix 'user_config' to use proper field-level structure
- Remove invalid 'compatibility' and 'capabilities' top-level fields
- Create bundle icon (512x512 PNG) to satisfy icon requirement
- Remove icon placeholder file
Validation: ✅ mcpb validate passes with warnings only
Tasks: T149 (icon), T158 (validate), T159 (build) marked complete
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-22 11:33:16 -05:00
622b28e42c
feat: implement Obsidian MCP Bundle MVP (Phase 1-3)
...
- Complete project setup with TypeScript, Jest, MCPB manifest
- Implement foundational infrastructure (CLI executor, logger, error handler)
- Add 9 file operation tools for User Story 1
- Full MCP protocol compliance with stdio transport
- Input validation and sanitization for security
- Comprehensive error handling with actionable messages
- Constitutional compliance: all 6 principles satisfied
MVP includes:
- obsidian_create_note, read, append, prepend, delete, move, rename, open, file_info
- Zod validation schemas for all parameters
- 30s timeout configuration with per-command overrides
- Stderr-only logging with sanitized output
- Graceful shutdown handling
Build: ✅ 0 errors, 0 vulnerabilities
Tasks: 48/167 complete (MVP milestone)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-03-22 11:21:38 -05:00