Add multi-account OAuth, Obsidian integration, product assets, and test tooling
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
78
promptObsydian-sync.md
Normal file
78
promptObsydian-sync.md
Normal file
@@ -0,0 +1,78 @@
|
||||
|
||||
#### 2. Create Obsidian Client Module
|
||||
Create `src/clients/obsidian.ts`:
|
||||
- HTTP client for obsidian-sync.fetcherpay.com
|
||||
- Methods: searchNotes, getNote, updateNote, appendToNote, getSyncStatus
|
||||
- Error handling with proper MCP error codes
|
||||
- Retry logic for network failures
|
||||
|
||||
#### 3. Add MCP Tools (4 tools total)
|
||||
|
||||
**Tool 1: obsidian_search_notes**
|
||||
- Description: "Search across Obsidian vault by content, tags, or title. Use when user references 'my notes', 'in obsidian', or needs personal knowledge retrieval."
|
||||
- Parameters: query (string), tags (string[] optional), limit (number, default 10), path_filter (string optional)
|
||||
- Returns: Array of {path, title, excerpt, tags, modified_date}
|
||||
|
||||
**Tool 2: obsidian_read_note**
|
||||
- Description: "Retrieve full content of a specific note by path or title."
|
||||
- Parameters: path (string), format (enum: "markdown", "json", default "markdown")
|
||||
- Returns: {path, title, content, tags, links, backlinks, modified_date}
|
||||
|
||||
**Tool 3: obsidian_append_to_note**
|
||||
- Description: "Append content to a daily note or specific note. Use for logging, journaling, or capturing insights from email or other sources."
|
||||
- Parameters: path (string), content (string), create_if_missing (boolean, default true), header (string optional)
|
||||
- Returns: {success, path, bytes_written}
|
||||
|
||||
**Tool 4: obsidian_sync_status**
|
||||
- Description: "Check last sync time and status of obsidian-sync.fetcherpay.com service."
|
||||
- Parameters: none
|
||||
- Returns: {status, last_sync, vault_size, pending_changes}
|
||||
|
||||
#### 4. Update Server Registration
|
||||
Modify `src/index.ts` or main server file:
|
||||
- Import Obsidian client
|
||||
- Register all 4 new tools
|
||||
- Ensure tool names follow pattern: `obsidian_*` for namespacing
|
||||
- Add to server capabilities
|
||||
|
||||
#### 5. Add Resources (Optional but Recommended)
|
||||
Add `obsidian://` URI scheme resources:
|
||||
- `obsidian://note/{path}` - Access specific notes
|
||||
- `obsidian://search/{query}` - Search results as resource
|
||||
|
||||
#### 6. Error Handling Standards
|
||||
Follow existing hermes-mcp error patterns:
|
||||
- Use MCP error codes: -32602 (invalid params), -32603 (internal error), -32000 (server error)
|
||||
- Log errors with context but don't expose internals to client
|
||||
- Graceful degradation if obsidian-sync service is unavailable
|
||||
|
||||
#### 7. Testing Checklist
|
||||
Create or update tests:
|
||||
- [ ] Obsidian client unit tests (mock HTTP responses)
|
||||
- [ ] Tool integration tests
|
||||
- [ ] Error handling tests (timeout, 404, 500 responses)
|
||||
- [ ] End-to-end test with actual obsidian-sync service
|
||||
|
||||
### Architecture Guidelines
|
||||
- Keep consistent with existing email tool patterns in hermes-mcp
|
||||
- Use same HTTP client library as existing code (axios/fetch/node-libcurl)
|
||||
- Maintain same logging and monitoring approach
|
||||
- Follow existing TypeScript interfaces and types
|
||||
- Tool descriptions must be explicit about WHEN to use (for LLM routing)
|
||||
|
||||
### Deliverables
|
||||
1. Updated source files with new Obsidian functionality
|
||||
2. Updated `.env.example` with new variables
|
||||
3. Updated README.md with Obsidian tool documentation
|
||||
4. Test file covering new tools
|
||||
5. Verification that existing email tools still work
|
||||
|
||||
### Verification Command
|
||||
After implementation, I should be able to run:
|
||||
```bash
|
||||
npm run build
|
||||
npm run test
|
||||
# Then test with MCP inspector or Claude Code:
|
||||
# "Search my notes for 'funding strategy'"
|
||||
# "Read my daily note from today"
|
||||
# "Append 'Meeting with investor scheduled' to my daily note"
|
||||
Reference in New Issue
Block a user