@augmnt-sh/mindcache 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +227 -0
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<h1 align="center">MindCache</h1>
|
|
3
|
+
<p align="center">Your Obsidian vault, connected to AI.</p>
|
|
4
|
+
</p>
|
|
5
|
+
|
|
6
|
+
<p align="center">
|
|
7
|
+
<a href="https://www.npmjs.com/package/mindcache"><img src="https://img.shields.io/npm/v/mindcache?color=8B5CF6&label=npm" alt="npm version"></a>
|
|
8
|
+
<a href="https://github.com/augmnt/mindcache/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-8B5CF6" alt="MIT License"></a>
|
|
9
|
+
<a href="https://github.com/augmnt/mindcache"><img src="https://img.shields.io/github/stars/augmnt/mindcache?color=8B5CF6" alt="GitHub stars"></a>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
MindCache is an open-source [MCP server](https://modelcontextprotocol.io) that bridges your Obsidian vault with AI assistants. Search, capture, and connect your personal knowledge — instantly.
|
|
15
|
+
|
|
16
|
+
**40 tools** for finding, reading, writing, and organizing notes. Your AI can recall what you know, record what you learn, and connect ideas across your vault.
|
|
17
|
+
|
|
18
|
+
## Quick Start
|
|
19
|
+
|
|
20
|
+
### Prerequisites
|
|
21
|
+
|
|
22
|
+
1. An [Obsidian](https://obsidian.md) vault (a folder of markdown files)
|
|
23
|
+
2. Node.js 18+
|
|
24
|
+
|
|
25
|
+
No plugins required. MindCache reads your vault directly from the filesystem.
|
|
26
|
+
|
|
27
|
+
### Setup
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Interactive setup
|
|
31
|
+
npx @augmnt-sh/mindcache init
|
|
32
|
+
|
|
33
|
+
# Add to Claude Code
|
|
34
|
+
claude mcp add --scope user mindcache -- npx @augmnt-sh/mindcache
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
That's it. Claude Code now has access to your vault.
|
|
38
|
+
|
|
39
|
+
### Manual Configuration
|
|
40
|
+
|
|
41
|
+
Create `~/.config/mindcache/config.yml`:
|
|
42
|
+
|
|
43
|
+
```yaml
|
|
44
|
+
vault: ~/Documents/Obsidian Vault
|
|
45
|
+
|
|
46
|
+
daily_notes:
|
|
47
|
+
folder: Daily
|
|
48
|
+
format: YYYY-MM-DD
|
|
49
|
+
|
|
50
|
+
templates:
|
|
51
|
+
folder: Templates/MindCache
|
|
52
|
+
|
|
53
|
+
inbox:
|
|
54
|
+
folder: MindCache/Inbox
|
|
55
|
+
require_review: false
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Or use environment variables:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
export MINDCACHE_VAULT=~/Documents/Obsidian\ Vault
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Tools
|
|
65
|
+
|
|
66
|
+
### Find (7)
|
|
67
|
+
|
|
68
|
+
| Tool | Description |
|
|
69
|
+
|------|-------------|
|
|
70
|
+
| `search` | Full-text search with Obsidian operators |
|
|
71
|
+
| `ask` | Natural language Q&A across your vault |
|
|
72
|
+
| `find_related` | Notes connected via backlinks, tags, or content |
|
|
73
|
+
| `find_by_tag` | Filter notes by tags |
|
|
74
|
+
| `find_by_date` | Notes from a date range |
|
|
75
|
+
| `find_recent` | Recently modified notes |
|
|
76
|
+
| `find_mentions` | Where a term is mentioned |
|
|
77
|
+
|
|
78
|
+
### Read (7)
|
|
79
|
+
|
|
80
|
+
| Tool | Description |
|
|
81
|
+
|------|-------------|
|
|
82
|
+
| `read_note` | Full note content |
|
|
83
|
+
| `read_section` | Content under a specific heading |
|
|
84
|
+
| `read_summary` | Note with metadata (tags, links, word count) |
|
|
85
|
+
| `read_properties` | YAML frontmatter only |
|
|
86
|
+
| `read_today` | Today's daily note |
|
|
87
|
+
| `read_this_week` | Daily notes from current week |
|
|
88
|
+
| `get_active_note` | Currently open note in Obsidian |
|
|
89
|
+
|
|
90
|
+
### Remember (7)
|
|
91
|
+
|
|
92
|
+
| Tool | Description |
|
|
93
|
+
|------|-------------|
|
|
94
|
+
| `remember` | Quick capture to inbox |
|
|
95
|
+
| `remember_meeting` | Structured meeting notes |
|
|
96
|
+
| `remember_decision` | ADR-format decision log |
|
|
97
|
+
| `remember_idea` | Capture an idea |
|
|
98
|
+
| `remember_learning` | Save something learned |
|
|
99
|
+
| `remember_person` | Person/contact note |
|
|
100
|
+
| `remember_reference` | Bookmark with summary |
|
|
101
|
+
|
|
102
|
+
### Journal (3)
|
|
103
|
+
|
|
104
|
+
| Tool | Description |
|
|
105
|
+
|------|-------------|
|
|
106
|
+
| `log` | Append to daily note |
|
|
107
|
+
| `log_task` | Add task to daily note |
|
|
108
|
+
| `reflect` | Reflection prompts |
|
|
109
|
+
|
|
110
|
+
### Write (3)
|
|
111
|
+
|
|
112
|
+
| Tool | Description |
|
|
113
|
+
|------|-------------|
|
|
114
|
+
| `create_note` | Create note with optional template |
|
|
115
|
+
| `append_to_note` | Append to existing note |
|
|
116
|
+
| `update_section` | Replace section content |
|
|
117
|
+
|
|
118
|
+
### Connect (4)
|
|
119
|
+
|
|
120
|
+
| Tool | Description |
|
|
121
|
+
|------|-------------|
|
|
122
|
+
| `add_link` | Insert wikilink between notes |
|
|
123
|
+
| `suggest_connections` | AI-powered link suggestions |
|
|
124
|
+
| `find_gaps` | Broken links (knowledge gaps) |
|
|
125
|
+
| `find_orphans` | Disconnected notes |
|
|
126
|
+
|
|
127
|
+
### Organize (4)
|
|
128
|
+
|
|
129
|
+
| Tool | Description |
|
|
130
|
+
|------|-------------|
|
|
131
|
+
| `add_tag` | Add tags to a note |
|
|
132
|
+
| `update_properties` | Modify frontmatter |
|
|
133
|
+
| `rename_note` | Rename a note |
|
|
134
|
+
| `move_note` | Move to different folder |
|
|
135
|
+
|
|
136
|
+
### Understand (3)
|
|
137
|
+
|
|
138
|
+
| Tool | Description |
|
|
139
|
+
|------|-------------|
|
|
140
|
+
| `vault_overview` | Stats, folders, tags |
|
|
141
|
+
| `list_tags` | All tags with counts |
|
|
142
|
+
| `get_vault_structure` | Folder tree |
|
|
143
|
+
|
|
144
|
+
### Tasks (2)
|
|
145
|
+
|
|
146
|
+
| Tool | Description |
|
|
147
|
+
|------|-------------|
|
|
148
|
+
| `find_tasks` | Find checkbox tasks |
|
|
149
|
+
| `complete_task` | Mark task as done |
|
|
150
|
+
|
|
151
|
+
## Resources
|
|
152
|
+
|
|
153
|
+
MindCache also exposes MCP resources for automatic context:
|
|
154
|
+
|
|
155
|
+
| Resource | Description |
|
|
156
|
+
|----------|-------------|
|
|
157
|
+
| `vault://today` | Today's daily note |
|
|
158
|
+
| `vault://recent` | Recently modified notes |
|
|
159
|
+
| `vault://tags` | Tag cloud |
|
|
160
|
+
| `vault://context` | Project-relevant notes |
|
|
161
|
+
|
|
162
|
+
## Templates
|
|
163
|
+
|
|
164
|
+
MindCache ships with 10 note templates: `decision`, `meeting`, `learning`, `idea`, `person`, `project`, `book`, `article`, `weekly-review`, `session`.
|
|
165
|
+
|
|
166
|
+
## CLI
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
npx @augmnt-sh/mindcache # Start MCP server
|
|
170
|
+
npx @augmnt-sh/mindcache init # Interactive setup
|
|
171
|
+
npx @augmnt-sh/mindcache doctor # Diagnose issues
|
|
172
|
+
npx @augmnt-sh/mindcache config # Show configuration
|
|
173
|
+
npx @augmnt-sh/mindcache --help # Help
|
|
174
|
+
npx @augmnt-sh/mindcache --version # Version
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## MCP Client Configuration
|
|
178
|
+
|
|
179
|
+
### Claude Code
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
claude mcp add --scope user mindcache -- npx @augmnt-sh/mindcache
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Claude Desktop
|
|
186
|
+
|
|
187
|
+
Add to `claude_desktop_config.json`:
|
|
188
|
+
|
|
189
|
+
```json
|
|
190
|
+
{
|
|
191
|
+
"mcpServers": {
|
|
192
|
+
"mindcache": {
|
|
193
|
+
"command": "npx",
|
|
194
|
+
"args": ["@augmnt-sh/mindcache"]
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Cursor
|
|
201
|
+
|
|
202
|
+
Add to MCP settings:
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
{
|
|
206
|
+
"mindcache": {
|
|
207
|
+
"command": "npx",
|
|
208
|
+
"args": ["@augmnt-sh/mindcache"]
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Privacy
|
|
214
|
+
|
|
215
|
+
MindCache runs entirely on your machine. Your notes never leave your computer. No cloud, no accounts, no telemetry.
|
|
216
|
+
|
|
217
|
+
## Contributing
|
|
218
|
+
|
|
219
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
220
|
+
|
|
221
|
+
## License
|
|
222
|
+
|
|
223
|
+
MIT - see [LICENSE](LICENSE) for details.
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
Built by [augmnt](https://augmnt.sh) | [Website](https://usemindcache.com) | [npm](https://www.npmjs.com/package/mindcache)
|
package/dist/cli.js
CHANGED
|
@@ -191,7 +191,7 @@ Relevant vault notes:
|
|
|
191
191
|
${i}`,mimeType:"text/markdown"}]}}catch{return {contents:[{uri:t.href,text:"Could not determine context.",mimeType:"text/plain"}]}}});}var z="mindcache";function k(s){process.stderr.write(`[${z}] ${s}
|
|
192
192
|
`);}function P(s){process.stderr.write(`[${z}] ERROR: ${s}
|
|
193
193
|
`);}function ut(s){process.stderr.write(`[${z}] WARN: ${s}
|
|
194
|
-
`);}var F="0.1.
|
|
194
|
+
`);}var F="0.1.1";function pt(s){let n=new McpServer({name:"mindcache",version:F},{instructions:["MindCache connects your Obsidian vault to AI.","Use the search and ask tools to find information in the user's personal knowledge base.","Use the remember tools to capture decisions, meetings, ideas, learnings, and references.","Use the log tool to add entries to the daily note.","Use the connect tools to build links between related notes.","Always check the vault before asking the user to repeat information they may have already documented.","When creating notes, use appropriate templates and add relevant tags."].join(" ")}),c=new M(s);return k("Registering tools..."),et(n,c),nt(n,c,s),rt(n,c,s),st(n,c,s),it(n,c),at(n,c),ct(n,c),lt(n,c),dt(n,c),k("Registering resources..."),ft(n,c,s),k("Server configured with 40 tools and 4 resources"),n}var Y={vault:"",dailyNotes:{folder:"Daily",format:"YYYY-MM-DD"},templates:{folder:"Templates/MindCache"},inbox:{folder:"MindCache/Inbox",requireReview:false}};function Ot(s){let n={},c="";for(let t of s.split(`
|
|
195
195
|
`)){let e=t.replace(/#.*$/,"").trimEnd();if(!e.trim())continue;let o=e.length-e.trimStart().length,r=e.trim(),i=r.indexOf(":");if(i<0)continue;let a=r.slice(0,i).trim(),d=r.slice(i+1).trim();o===0&&!d?(c=a,n[c]||(n[c]={})):o>0&&c?n[c][a]=d:n[a]=d;}return n}function _t(){let s=[resolve(process.cwd(),".mindcache.yml"),resolve(process.cwd(),".mindcache.yaml"),join(homedir(),".config","mindcache","config.yml"),join(homedir(),".config","mindcache","config.yaml"),join(homedir(),".mindcache.yml")];for(let n of s)if(existsSync(n))return n;return null}function j(){let s={vault:Y.vault,dailyNotes:{...Y.dailyNotes},templates:{...Y.templates},inbox:{...Y.inbox}};process.env.MINDCACHE_VAULT&&(s.vault=process.env.MINDCACHE_VAULT);let n=process.env.MINDCACHE_CONFIG||_t();if(n&&existsSync(n)){k(`Loading config from ${n}`);try{let c=readFileSync(n,"utf-8"),t=Ot(c);typeof t.vault=="string"&&(s.vault=t.vault);let e=t.daily_notes??t.dailyNotes;e&&(e.folder&&(s.dailyNotes.folder=e.folder),e.format&&(s.dailyNotes.format=e.format));let o=t.templates;o&&o.folder&&(s.templates.folder=o.folder);let r=t.inbox;r&&(r.folder&&(s.inbox.folder=r.folder),r.require_review&&(s.inbox.requireReview=r.require_review==="true"));}catch(c){ut(`Failed to parse config: ${c instanceof Error?c.message:String(c)}`);}}return s.vault.startsWith("~")&&(s.vault=s.vault.replace("~",homedir())),s}var Ht=`
|
|
196
196
|
MindCache v${F} \u2014 Your Obsidian vault, connected to AI.
|
|
197
197
|
|