@oomkapwn/enquire-mcp 3.11.2 → 3.11.3-rc.2
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/CHANGELOG.md +8 -0
- package/README.ar.md +204 -41
- package/README.de.md +336 -0
- package/README.es.md +142 -35
- package/README.fr.md +5 -5
- package/README.hi.md +163 -38
- package/README.ja.md +4 -4
- package/README.ko.md +336 -0
- package/README.md +6 -6
- package/README.pt.md +5 -5
- package/README.ru.md +5 -5
- package/README.zh.md +163 -40
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/docs/COMPARISON.md +1 -1
- package/package.json +4 -2
package/README.de.md
ADDED
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
<a href="https://github.com/oomkapwn/enquire-mcp"><img src="./assets/social-preview.png" alt="enquire-mcp — das fortschrittlichste Obsidian-MCP. Langzeitgedächtnis für KI-Agenten. Aufgebaut auf Ihrem Obsidian-Vault. Open Source, MCP-nativ, anbieterneutral. Hybrid-Retrieval, BGE-Reranker, HNSW, PDFs mit OCR. Für Claude Code, Claude Desktop, Cursor, ChatGPT, Codex, OpenClaw." width="100%"></a>
|
|
4
|
+
|
|
5
|
+
# enquire-mcp
|
|
6
|
+
|
|
7
|
+
<sub>[English](./README.md) · [中文](./README.zh.md) · [Español](./README.es.md) · [हिन्दी](./README.hi.md) · [العربية](./README.ar.md) · [Русский](./README.ru.md) · [Português](./README.pt.md) · [Français](./README.fr.md) · [日本語](./README.ja.md) · [한국어](./README.ko.md) · **Deutsch**</sub>
|
|
8
|
+
|
|
9
|
+
<sub>**TL;DR für KI-Agenten** — MCP-Server, der einen lokalen Obsidian-Markdown-Vault für Claude Code, Claude Desktop, Cursor, ChatGPT, Codex und OpenClaw als persistentes, durchsuchbares Gedächtnis bereitstellt. Hybrid-Retrieval (BM25 + ML-Embeddings + BGE-Reranker, per RRF fusioniert), HNSW + int8-Quantisierung, agentisches RAG (HyDE + Teilfragen), GraphRAG-light, PDFs + OCR, eigenständige Bases. Anbieterneutral, MIT, null Cloud-Aufrufe während des Servings. Installation: `npm i -g @oomkapwn/enquire-mcp`. Docs: [llms.txt](https://github.com/oomkapwn/enquire-mcp/blob/main/llms.txt) · [AGENTS.md](https://github.com/oomkapwn/enquire-mcp/blob/main/AGENTS.md) · [API](https://oomkapwn.github.io/enquire-mcp/).</sub>
|
|
10
|
+
|
|
11
|
+
### Das fortschrittlichste Obsidian-MCP. Langzeitgedächtnis für KI-Agenten.
|
|
12
|
+
|
|
13
|
+
**Hören Sie auf, Claude, Cursor, ChatGPT, Codex und OpenClaw in jeder Sitzung den Kontext neu zu erklären. Ihre Obsidian-Notizen werden zu einem gemeinsamen, durchsuchbaren Gedächtnis über jeden MCP-kompatiblen Agenten hinweg — Ihr Wissen, jedes Modell, für immer Ihnen gehörend.**
|
|
14
|
+
|
|
15
|
+
*Gemessen: Der BGE-Cross-Encoder-Reranker bringt **+15.5 NDCG@10 / +24.7 MRR** gegenüber reinem Hybrid auf einer [reproduzierbaren 60-Abfragen-Ablation](./docs/benchmarks.md) — der vollständige moderne IR-Stack, der das von **Ihnen** geschriebene Markdown zurückholt (zitiert, editierbar), niemals eine Cloud-Paraphrase.*
|
|
16
|
+
|
|
17
|
+
[](https://github.com/oomkapwn/enquire-mcp/actions/workflows/ci.yml)
|
|
18
|
+
[](https://www.npmjs.com/package/@oomkapwn/enquire-mcp)
|
|
19
|
+
[](https://www.npmjs.com/package/@oomkapwn/enquire-mcp)
|
|
20
|
+
[](#️-vertrauen)
|
|
21
|
+
[](./STABILITY.md)
|
|
22
|
+
[](https://slsa.dev/spec/v1.0/levels#build-l2)
|
|
23
|
+
[](https://modelcontextprotocol.io/)
|
|
24
|
+
[](./LICENSE)
|
|
25
|
+
|
|
26
|
+
**[⚡ Installation in 30 Sekunden](#-schnellstart) · [🧠 Anwendungsfälle](#-anwendungsfälle) · [📊 Benchmarks](./docs/benchmarks.md) · [📖 API-Referenz](https://oomkapwn.github.io/enquire-mcp/) · [💬 Alternativen vergleichen](./docs/COMPARISON.md)**
|
|
27
|
+
|
|
28
|
+
**Claude Code — eine einzige Zeile:**
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
claude mcp add obsidian -- npx -y @oomkapwn/enquire-mcp serve --vault ~/Documents/Obsidian\ Vault
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
> 📌 Dieses Dokument ist die deutsche Übersetzung von [README.md](./README.md), um die Lektüre für deutschsprachige Nutzer zu erleichtern; bei Abweichungen ist **die englische Fassung maßgeblich** (sie wird bei jeder Veröffentlichung aktualisiert).
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Das Problem
|
|
41
|
+
|
|
42
|
+
Jede KI-Sitzung beginnt bei null. Sie erklären Ihr Projekt, Ihre Design-Entscheidungen, die Schlussfolgerungen der Recherche der letzten Woche immer wieder neu. Die „Gedächtnis"-Funktionen der Anbieter ([Claude Memory](https://www.anthropic.com/news/memory-and-tool-use), [ChatGPT Memory](https://openai.com/index/memory-and-new-controls-for-chatgpt/), Cursor-Gedächtnis) sperren Ihr Wissen in die Cloud eines einzigen Anbieters ein — und vergessen es wieder, sobald Sie das Tool wechseln. **Ihr Wissen fängt immer wieder von vorne an.**
|
|
43
|
+
|
|
44
|
+
## Die Lösung
|
|
45
|
+
|
|
46
|
+
Ihr Obsidian-Vault wird zum **persistenten, abfragbaren Langzeitgedächtnis** für jeden MCP-kompatiblen Agenten. Eine Installation — Ihr Wissen ist sofort aus Claude Code, Claude Desktop, Cursor, dem benutzerdefinierten GPT von ChatGPT, Codex, OpenClaw und jedem anderen MCP-Client zugänglich. Reine Markdown-Dateien, **die Ihnen gehören**, lokal indexiert, durchsucht mit dem vollständigen modernen IR-Stack, über jede Sitzung und jedes Modell hinweg abrufbar.
|
|
47
|
+
|
|
48
|
+
**Verankert, nicht extrahiert.** Konversationsgedächtnis-Tools (mem0, Zep, Supermemory, Memobase) *extrahieren* Fakten aus Ihren Chat-Protokollen in einen separaten Speicher, den Sie nicht lesen können. enquire-mcp macht das Gegenteil: Es ist **im Wissen verankert, das Sie bereits geschrieben haben** — Ihren eigenen `.md`-Notizen, wortgetreu, mit Zitaten — sodass der Abruf nachvollziehbar, in jedem Editor editierbar und niemals eine verlustbehaftete Zusammenfassung eines Chats ist, an den Sie sich nur halb erinnern. Und anders als serverseitige ***Flotten*-Gedächtnis**-Plattformen — mandantenfähige Cloud-Speicher, die Agenten-Traffic in eine gemeinsame Datenbank paraphrasieren — ist enquire **Einzelnutzer- und Local-First**: ein Vault, der Ihnen vollständig gehört und den Sie selbst lesen, bearbeiten und löschen können, mit null Cloud-Aufrufen während des Servings. (Diese „Extraktions"-Kritik gilt speziell der Chat-Gedächtnis-Kohorte — nicht Knowledge-Graph- / ETL-Tools wie cognee, ebenso wenig persönlichen Such-Pendants wie Khoj.)
|
|
49
|
+
|
|
50
|
+
**Verankert — und frischebewusst.** Einen Fakt abzurufen ist nur die halbe Aufgabe; zu wissen, ob er noch *wahr* ist, ist die andere Hälfte. Der [Memora-Benchmark](https://arxiv.org/abs/2604.20006) (Apr. 2026) zeigte, dass Gedächtnissysteme systematisch an der Wiederverwendung veralteter Fakten scheitern — eine ein Jahr alte Notiz so abzurufen, als wäre sie heute geschrieben worden. Weil enquires Gedächtnis Ihre echten Markdown-Dateien *ist*, trägt jeder Suchtreffer `age_days` + ein `stale`-Flag, das aus der echten Zeit der letzten Änderung der Notiz abgeleitet wird, und Sie können sich für ein nach Aktualität gewichtetes Ranking (`--recency-weight`) entscheiden, sodass frischere Notizen zuerst erscheinen. Ihr Wissen, frischebewusst — kein zeitloser Klumpen.
|
|
51
|
+
|
|
52
|
+
> **Was enquire-mcp anders macht**:
|
|
53
|
+
> 1. **Anbieterneutral.** Ihr Gedächtnis lebt in `.md`-Dateien. Wechseln Sie von Claude zu Cursor — Ihr Gedächtnis kommt mit.
|
|
54
|
+
> 2. **Retrieval der Spitzenklasse.** Hybrides BM25 + mehrsprachige Embeddings + BGE-Cross-Encoder-Reranker, per RRF fusioniert, skaliert mit HNSW + int8-Quantisierung. Derselbe IR-Stack, den ein Such-Startup bauen würde — als Open Source, in einer einzigen Binärdatei.
|
|
55
|
+
> 3. **Null Cloud-Aufrufe während des Servings.** Das Embedding-Modell läuft **auf Ihrem Rechner** und indexiert das von **Ihnen** geschriebene Markdown — deshalb ist es ein einmaliger lokaler Download (~110 MB), kein Cloud-API-Schlüssel. Verankert + privat gibt es nicht umsonst, und wir tun nicht so: Der Inhalt Ihres Vaults verlässt niemals Ihren Rechner, standardmäßig air-gap-sicher ([erzwungen](./SECURITY.md), nicht nur angestrebt).
|
|
56
|
+
> 4. **Frischebewusster Abruf.** Jeder Treffer meldet, wie alt die Notiz ist; das optionale Reranking nach Aktualität erlaubt es einem Agenten, frisches Wissen zu bevorzugen und veraltete Fakten zur erneuten Überprüfung zu markieren — die vergessensbewusste Front, aufgebaut auf der `mtime`, die Ihre Dateien bereits besitzen.
|
|
57
|
+
|
|
58
|
+
**46 Tools · 19 MCP-Prompts · 1440+ Unit-Tests · 50+ Sprachen · v3.11.x stable · semver-gebunden · MIT · npm-Build-Provenienz (SLSA L2).**
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 🏆 Warum es das Beste ist
|
|
63
|
+
|
|
64
|
+
**Sechs Funktionen, die kein anderes Obsidian-MCP überhaupt hat** (GraphRAG-light, eigenständige `.base`-Ausführung, HyDE, int8-Quantisierung, Late-Chunking, integriertes Eval-Harness). **Plus der gesamte moderne IR-Stack** (BM25 + ML-Embeddings + Cross-Encoder-Reranking + HNSW), von dem Konkurrenten höchstens ein oder zwei Bestandteile mitbringen. Im direkten Vergleich:
|
|
65
|
+
|
|
66
|
+
| Fähigkeit | enquire-mcp | Smart Connections | Andere Obsidian-MCPs |
|
|
67
|
+
|---|:---:|:---:|:---:|
|
|
68
|
+
| Hybrid-Retrieval (BM25 + TF-IDF + ML-Embeddings, per RRF fusioniert) | ✅ | ❌ | ❌ |
|
|
69
|
+
| **Cross-Encoder-Reranking** (BGE, +15.5 NDCG@10 gemessen) | ✅ | ❌ | ❌ |
|
|
70
|
+
| **HNSW-Vektorindex** (Top-K in unter 10 ms, persistiert) | ✅ | ❌ | ❌ |
|
|
71
|
+
| **int8-Vektorquantisierung** (~4× kleinere embed-db) | ✅ | ❌ | ❌ |
|
|
72
|
+
| **Late-Chunking** (kontextfenstergestützte Embeddings) | ✅ | ❌ | ❌ |
|
|
73
|
+
| **PDFs in die Hybrid-Suche eingemischt** (`[page: N]`-Zitate) | ✅ | ❌ | ❌ |
|
|
74
|
+
| **OCR für gescannte PDFs** (Tesseract.js, mehrsprachig) | ✅ | ❌ | ❌ |
|
|
75
|
+
| **Wikilink-Graph-Boost** als Retrieval-Signal | ✅ | ❌ | ❌ |
|
|
76
|
+
| **Mehrsprachige semantische Suche** (50+ Sprachen, on-device) | ✅ | 💰 kostenpflichtig | ❌ |
|
|
77
|
+
| **Integriertes Eval-Harness für die Retrieval-Qualität** (NDCG, Recall, MRR, A/B-Matrix) | ✅ | ❌ | ❌ |
|
|
78
|
+
| **Remote-MCP** über HTTP + Bearer-Auth + zustandsbehaftete Sitzungen | ✅ | ❌ | teilweise |
|
|
79
|
+
| **Pro-Signal-Observability** je Treffer | ✅ | ❌ | ❌ |
|
|
80
|
+
| **MCP-nativ** (Claude · Cursor · ChatGPT · Codex · OpenClaw · jeder Client) | ✅ | ❌ nur Obsidian | variiert |
|
|
81
|
+
| **Privatsphäre-Filter** an jedem Such- + Schreibpfad verifiziert | ✅ | n. z. | ❌ |
|
|
82
|
+
| **46 Produktions-Tools** (34 stets aktive Lese-Tools + 4 optionale + 7 abgesicherte Schreib-Tools + 1 Feedback-Tool) | ✅ | n. z. | variiert |
|
|
83
|
+
| **GraphRAG-light** (Wikilink-Community-Erkennung via Louvain-Modularität) | ✅ **nur hier** | ❌ | ❌ |
|
|
84
|
+
| **Eigenständige `.base`-Abfrageausführung** (funktioniert ohne laufendes Obsidian) | ✅ **nur hier** | ❌ | ❌ delegiert an Obsidian |
|
|
85
|
+
| **HyDE-Retrieval** (Gao et al. 2023) + Teilfragen-Zerlegung | ✅ **nur hier** | ❌ | ❌ |
|
|
86
|
+
| **1440 Unit-Tests · 9 erforderliche + 5 beratende CI-Gates pro PR** | ✅ | n. z. | selten |
|
|
87
|
+
| **Signierte Build-Provenienz** (npm + Sigstore, SLSA Build L2) | ✅ | n. z. | ❌ |
|
|
88
|
+
| **Semver-gebundene öffentliche Oberfläche** ([STABILITY.md](./STABILITY.md)) | ✅ | n. z. | ❌ |
|
|
89
|
+
| Eigenständig (kein Obsidian-Plugin nötig) | ✅ | ❌ erfordert Obsidian | variiert |
|
|
90
|
+
| Lizenz | MIT, kostenlos | proprietär, kostenpflichtig | variiert |
|
|
91
|
+
|
|
92
|
+
<sub>Vergleich basierend auf den öffentlichen Fähigkeiten jedes Projekts zum Stand der stabilen Version v3.8.x (initiale Momentaufnahme v3.7.0 / 2026-05-15; aktualisiert in v3.8.4). Smart Connections ist ein kostenpflichtiges Obsidian-Plugin (kein MCP-Server). „Andere Obsidian-MCPs" bezeichnet die öffentlichen Open-Source-Obsidian-MCP-Server auf GitHub zum Zeitpunkt der Erstellung. Öffentliche End-to-End-Retrieval-Benchmarks für enquire-mcp sind in <a href="./docs/benchmarks.md"><code>docs/benchmarks.md</code></a> veröffentlicht — das gemessene `rerank-bge`-Delta beträgt +24.7 MRR / +15.5 NDCG@10 gegenüber reinem Hybrid auf einer 60-Abfragen-Ablation.</sub>
|
|
93
|
+
|
|
94
|
+
> Strategische Behauptung: enquire-mcp ist das Open-Source-Backend für [LLM-Wikis im Karpathy-Stil](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) auf Basis Ihres bestehenden Obsidian-Vaults. Wissen, das sich kumuliert, bis zu den Quellen nachverfolgbar.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## ⚡ Schnellstart
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npm install -g @oomkapwn/enquire-mcp
|
|
102
|
+
enquire-mcp serve --vault ~/Documents/Obsidian\ Vault
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
In jeden MCP-Client einklinken:
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"mcpServers": {
|
|
110
|
+
"obsidian": {
|
|
111
|
+
"command": "npx",
|
|
112
|
+
"args": ["-y", "@oomkapwn/enquire-mcp", "serve", "--vault", "/path/to/vault"]
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
📂 Sofort einsetzbare Konfigurationen in [`examples/`](./examples/) — **Claude Desktop**, **Cursor**, **benutzerdefiniertes GPT von ChatGPT** (Remote-MCP über HTTP), plus ein Beispiel-Abfragesatz für das Eval-Harness.
|
|
119
|
+
|
|
120
|
+
**Möchten Sie die volle Hybrid-Power?** Reibungsloses Onboarding ohne manuelle Schritte, mit einem Befehl:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
enquire-mcp setup --vault <path> # lädt das Modell herunter, baut FTS5 + embed-db
|
|
124
|
+
enquire-mcp serve --vault <path> --persistent-index --enable-reranker --use-hnsw
|
|
125
|
+
enquire-mcp doctor --vault <path> # farblich codierter ✓/⚠/✗-Gesundheitscheck
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 🤖 In Ihrem KI-Agenten einrichten — Prompts zum Kopieren und Einfügen
|
|
131
|
+
|
|
132
|
+
Sobald `enquire-mcp` installiert ist, fügen Sie diese Prompts in Ihren Agenten ein, damit er weiß, dass der Vault als Gedächtnis verfügbar ist.
|
|
133
|
+
|
|
134
|
+
<details>
|
|
135
|
+
<summary><b>Claude Code (Terminal)</b> — MCP-Server hinzufügen + erster Prompt</summary>
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Fügen Sie den MCP-Server zu Ihrer Claude-Code-Konfiguration hinzu (einmalig)
|
|
139
|
+
claude mcp add obsidian -- npx -y @oomkapwn/enquire-mcp serve --vault ~/Documents/Obsidian\ Vault
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Dann in jeder Claude-Code-Sitzung:
|
|
143
|
+
|
|
144
|
+
> Du verfügst jetzt über `obsidian_*`-Tools, die meinen Obsidian-Vault durchsuchen und lesen — mein Langzeitgedächtnis. Bevor du Fragen zu Projekten, Entscheidungen, Personen oder technischem Kontext beantwortest, rufe `obsidian_search` mit den relevanten Begriffen auf. Belege jeden Fakt mit der Quellnotiz (und `[page: N]` bei PDFs). Wenn du keine relevante Notiz findest, sag es — rate nicht.
|
|
145
|
+
|
|
146
|
+
</details>
|
|
147
|
+
|
|
148
|
+
<details>
|
|
149
|
+
<summary><b>Claude Desktop</b> — Konfigurationsdatei + erster Prompt</summary>
|
|
150
|
+
|
|
151
|
+
Legen Sie [`examples/claude-desktop-hybrid.json`](./examples/claude-desktop-hybrid.json) in die MCP-Konfiguration von Claude Desktop (bearbeiten Sie zuerst den Vault-Pfad). Starten Sie Claude Desktop neu, dann:
|
|
152
|
+
|
|
153
|
+
> Du hast meinen Obsidian-Vault als durchsuchbares Gedächtnis über die `obsidian_*`-Tools angebunden. Prüfe immer zuerst `obsidian_search`, wenn ich dich nach etwas in meinen Notizen frage — Besprechungskontext, Recherche, Entscheidungen, Journaleinträge. Zitiere bei jedem Fakt den Pfad der Quellnotiz.
|
|
154
|
+
|
|
155
|
+
</details>
|
|
156
|
+
|
|
157
|
+
<details>
|
|
158
|
+
<summary><b>Cursor</b> — MCP-stdio-Konfiguration + Agenten-Regel</summary>
|
|
159
|
+
|
|
160
|
+
Legen Sie [`examples/cursor-mcp.json`](./examples/cursor-mcp.json) nach `~/.cursor/mcp.json` (bearbeiten Sie den Vault-Pfad). In Ihrer `.cursorrules`-Datei oder im Chat:
|
|
161
|
+
|
|
162
|
+
> Bevor du Code vorschlägst, der ein Thema berührt, zu dem ich Notizen haben könnte (Architektur-Entscheidungen, API-Verträge, Anbieterbewertungen), rufe zuerst `obsidian_search` auf. Behandle meinen Obsidian-Vault als maßgeblichen Kontext.
|
|
163
|
+
|
|
164
|
+
</details>
|
|
165
|
+
|
|
166
|
+
<details>
|
|
167
|
+
<summary><b>Benutzerdefiniertes GPT von ChatGPT</b> — Remote-MCP über HTTP</summary>
|
|
168
|
+
|
|
169
|
+
Folgen Sie [`examples/chatgpt-actions.md`](./examples/chatgpt-actions.md), um `serve-http` über einen Tunnel mit Bearer-Auth bereitzustellen. In den Anweisungen Ihres benutzerdefinierten GPT:
|
|
170
|
+
|
|
171
|
+
> Du hast Lesezugriff auf meinen Obsidian-Vault über die `obsidian_*`-Tool-Familie. Suche, bevor du etwas beantwortest, das in meinen Notizen stehen könnte; zitiere bei jeder Behauptung den Pfad der Quelldatei.
|
|
172
|
+
|
|
173
|
+
</details>
|
|
174
|
+
|
|
175
|
+
<details>
|
|
176
|
+
<summary><b>OpenClaw / Codex / jeder andere MCP-Client</b></summary>
|
|
177
|
+
|
|
178
|
+
Derselbe Befehl `npx -y @oomkapwn/enquire-mcp serve --vault <path>` funktioniert für jeden MCP-kompatiblen Client. In der MCP-Konfigurationsdokumentation des Clients erfahren Sie, wo der Servereintrag abzulegen ist; verwenden Sie dann einen der obigen Prompts.
|
|
179
|
+
|
|
180
|
+
</details>
|
|
181
|
+
|
|
182
|
+
**Wiederverwendbare Agenten-Regel** (in eine beliebige `AGENTS.md` / `CLAUDE.md` / `.cursorrules` einfügen, damit der Agent weiß, *wann* er auf den Vault zugreifen soll):
|
|
183
|
+
|
|
184
|
+
> Wenn meine Frage meine eigenen Notizen, Entscheidungen, Projekte, Personen oder Recherchen berührt, **suche zuerst in meinem Obsidian-Vault** über die `obsidian_*`-Tools (beginne mit `obsidian_search`) und zitiere bei jedem Fakt die Quellnotiz. Bevorzuge enquire für *konzeptuellen / sprachübergreifenden / „Was habe ich über X gesagt"*-Abruf; verwende einfaches `grep` / `ripgrep` für exakte wörtliche Zeichenketten. Wenn nichts Relevantes zurückkommt, sag es — rate nicht.
|
|
185
|
+
|
|
186
|
+
### Beispielabfragen, die gut funktionieren
|
|
187
|
+
|
|
188
|
+
- *„Finde jede Notiz, in der ich über Preisstrategie gesprochen habe, und fasse die Entwicklung zusammen."* — RRF-Fusion + Reranker verarbeiten „Entwicklung" semantisch
|
|
189
|
+
- *„Wie lautete meine Entscheidung zu PostgreSQL vs. MongoDB? Zitiere die Tagesnotiz."* — Wikilink-Graph-Boost holt das zentrale Entscheidungsdokument nach oben
|
|
190
|
+
- *„Анализируй мои заметки о RAG за последние 3 месяца"* — mehrsprachige Embeddings + Frontmatter-Datumsfilter
|
|
191
|
+
- *„Auf welchen Seiten des LLaMA-3-Paper-PDFs geht es um Skalierung?"* — PDFs in die Suche eingemischt mit `[page: N]`-Zitaten
|
|
192
|
+
- *„Zeig mir thematische Communities in meinem Recherche-Vault — welche Themen habe ich erkundet?"* — `obsidian_get_communities` (GraphRAG-light)
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## 🧠 Anwendungsfälle
|
|
197
|
+
|
|
198
|
+
**1 — Langzeitgedächtnis für KI-Agenten.** Klinken Sie Ihren Obsidian-Vault in jeden MCP-kompatiblen Agenten ein (Claude Code, Claude Desktop, Cursor, ChatGPT, Codex, OpenClaw). Der Agent verfügt nun über dauerhaften, semantischen Abruf über jede Besprechungsnotiz, jeden Journaleintrag, jedes Recherche-Log und jedes Entscheidungsdokument, das Sie je geschrieben haben — über Sitzungen, Modelle und Anbieter hinweg. Anders als `Claude Memory` oder `ChatGPT Memory` ist Ihr Wissen nicht in die Cloud eines einzigen Anbieters gesperrt; es lebt in reinem Markdown, das Ihnen gehört und das Sie frei migrieren können.
|
|
199
|
+
|
|
200
|
+
**2 — Persönliche Wissensdatenbank / zweites Gehirn.** Das Hybrid-Retrieval holt die richtige Notiz für *jede* Formulierung nach oben, in jeder der 50+ Sprachen. Fragen Sie auf Englisch nach einem russischsprachigen Journaleintrag von vor zwei Jahren, und Sie erhalten den richtigen Treffer. Der Wikilink-Graph-Boost stuft Notizen höher ein, die im Zentrum Ihres Wissensgraphen stehen. GraphRAG-light bringt thematische Communities zum Vorschein — entdecken Sie Verbindungen, an die Sie sich nicht mehr erinnert haben. PDFs fließen mit `[page: N]`-Zitaten in die Suche ein, sodass Forschungsarbeiten und Besprechungsprotokolle zu erstklassigem Gedächtnis werden.
|
|
201
|
+
|
|
202
|
+
**3 — Agentisches RAG / Kontext-Engineering.** `obsidian_search` legt die Scores pro Signal offen, damit der Agent sieht, *warum* jeder Treffer eingestuft wurde. HyDE schreibt vage Abfragen vorab in reichhaltige hypothetische Antworten um, bevor das Retrieval erfolgt. Die Teilfragen-Zerlegung bewältigt Multi-Hop-Fragen („Wie hat sich unsere Preisstrategie entwickelt und wie haben die Kunden reagiert?"), indem sie sie in unabhängige Teilabfragen aufteilt und die Ergebnisse fusioniert. Das integrierte Eval-Harness (NDCG / Recall / MRR) erlaubt es Ihnen, die Retrieval-Qualität an Ihren eigenen Abfragen zu messen, statt den Benchmarks der Anbieter zu vertrauen.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## 🚫 Wann enquire-mcp *nicht* das richtige Tool ist
|
|
207
|
+
|
|
208
|
+
Ehrliche Nicht-Ziele — greifen Sie zu etwas anderem, wenn:
|
|
209
|
+
|
|
210
|
+
- **Sie eine wörtliche String-/Regex-Suche wollen.** `ripgrep` / `grep` ist schneller und exakt für „finde genau dieses Token". enquire glänzt beim *konzeptuellen* Abruf — Synonyme, sprachübergreifend, „Was habe ich über X gesagt". Nutzen Sie beides: `rg` fürs Wörtliche, enquire fürs Bedeutungsmäßige.
|
|
211
|
+
- **Ihr Wissen in Chat-Protokollen lebt, nicht in Notizen.** enquire ist im Markdown *verankert*, das Sie verfasst haben. Konversationsgedächtnis-Tools (mem0, Zep, Supermemory), die Fakten aus Chat-Transkripten in einen separaten Speicher *extrahieren*, sind eine andere Kategorie — siehe den [Vergleich](./docs/COMPARISON.md).
|
|
212
|
+
- **Sie eine Mehrbenutzer- / gehostete / synchronisierte Suche brauchen.** enquire ist von Grund auf Local-First und Single-Vault — kein serverseitiger mandantenfähiger Index.
|
|
213
|
+
- **Ihre Quellen weder Markdown noch PDF sind.** `.md` / `.canvas` / `.base` / `.pdf` sind erstklassig; andere Formate müssen zuerst konvertiert werden.
|
|
214
|
+
- **Sie eine GUI oder ein In-App-Obsidian-Plugin wollen.** enquire ist ein Headless-MCP-Server / CLI — es *ergänzt* Obsidian, es ist keines. (Smart Connections ist die In-App-Plugin-Option.)
|
|
215
|
+
- **Sie eine Suche im Submillisekundenbereich über Millionen von Notizen brauchen.** HNSW liefert Top-K in unter 10 ms bei großem Maßstab, aber enquire zielt auf persönliche / Team-Vaults ab, nicht auf Korpora im Web-Maßstab.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## 📖 API-Referenz
|
|
220
|
+
|
|
221
|
+
Automatisch generierte **[API-Referenz auf oomkapwn.github.io/enquire-mcp](https://oomkapwn.github.io/enquire-mcp/)** — jedes Tool, jeder Prompt und jeder exportierte Helper mit vollständigem TSDoc (`@param` / `@returns` / `@example`). Bei jedem Push auf `main` aus dem Quellcode neu gebaut über [`publish-docs.yml`](https://github.com/oomkapwn/enquire-mcp/blob/main/.github/workflows/publish-docs.yml) (TypeDoc → GitHub Pages). Driftfrei per Konstruktion: Dasselbe TSDoc, das KI-Agenten und IDEs sehen, ist das, was veröffentlicht wird.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## 🏗️ Wie das Retrieval funktioniert
|
|
226
|
+
|
|
227
|
+
```mermaid
|
|
228
|
+
graph LR
|
|
229
|
+
Q[Query] --> S[obsidian_search]
|
|
230
|
+
S --> BM25[BM25 / FTS5]
|
|
231
|
+
S --> TFIDF[TF-IDF cosine]
|
|
232
|
+
S --> EMB[ML embeddings<br/>HNSW]
|
|
233
|
+
BM25 --> RRF{RRF fusion<br/>k=60}
|
|
234
|
+
TFIDF --> RRF
|
|
235
|
+
EMB --> RRF
|
|
236
|
+
RRF --> GB[Graph boost<br/>α × in-degree]
|
|
237
|
+
GB --> RR[BGE cross-encoder<br/>reranker]
|
|
238
|
+
RR --> R[Ranked hits<br/>per_signal observability]
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
`obsidian_search` erkennt automatisch die verfügbaren Signale und degradiert anmutig. Der Wikilink-Graph-Boost stuft das Top-K über ein personalisiertes 1-Schritt-PageRank um. Das optionale Cross-Encoder-Reranking bewertet das Top-N neu für gemessene +15.5 NDCG@10. Jeder Treffer liefert `per_signal: { bm25, tfidf, embeddings }` zurück, damit Sie sehen, WARUM er eingestuft wurde.
|
|
242
|
+
|
|
243
|
+
| Stufe | Einrichtung | Was Sie erhalten |
|
|
244
|
+
|---|---|---|
|
|
245
|
+
| **1** | `serve --vault <path>` | TF-IDF-Cosinus (null Einrichtung, sofort) |
|
|
246
|
+
| **2** | + `--persistent-index` | + BM25 / FTS5 (Top-10 in unter 100 ms) |
|
|
247
|
+
| **3** | + `setup` (lädt Modell herunter + baut embed-db) | + mehrsprachige ML-Embeddings |
|
|
248
|
+
| **4** | + `--enable-reranker` | + BGE-Cross-Encoder (+15.5 NDCG@10 gemessen) |
|
|
249
|
+
| **5** | + `--use-hnsw` | + Top-K in unter 10 ms im Millionen-Chunk-Maßstab |
|
|
250
|
+
| **6** | + `--include-pdfs` | + PDFs in alles Vorstehende eingemischt |
|
|
251
|
+
| **7** | `serve-http --bearer-token …` | + Remote-MCP (Claude.ai-Web, ChatGPT, Cursor-HTTP, mobil) |
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## 🛠️ Alle 46 Tools
|
|
256
|
+
|
|
257
|
+
46 Tools insgesamt: 34 stets aktive Lese-Tools (inkl. dem übergreifenden `obsidian_search`) + 4 optionale Lese-Tools + 7 abgesicherte Schreib-Tools + 1 Closed-Loop-Feedback. Vollständige Referenz: **[docs/api.md](./docs/api.md)**.
|
|
258
|
+
|
|
259
|
+
| Kategorie | Tools |
|
|
260
|
+
|---|---|
|
|
261
|
+
| **Suche & Retrieval** | `obsidian_search` (übergreifend, per RRF fusioniert) · `obsidian_hyde_search` (HyDE-augmentiert, v3.1.0) · `obsidian_search_text` · `obsidian_full_text_search` · `obsidian_semantic_search` · `obsidian_embeddings_search` · `obsidian_find_similar` |
|
|
262
|
+
| **Wikilinks & Graph** | `obsidian_resolve_wikilink` · `obsidian_get_backlinks` · `obsidian_get_outbound_links` · `obsidian_get_note_neighbors` · `obsidian_get_unresolved_wikilinks` · `obsidian_find_path` · `obsidian_get_communities` (v3.4.0, GraphRAG-light) |
|
|
263
|
+
| **Frontmatter & Dataview** | `obsidian_frontmatter_get` · `obsidian_frontmatter_search` · `obsidian_dataview_query` · `obsidian_list_tags` |
|
|
264
|
+
| **Lesen & navigieren** | `obsidian_read_note` · `obsidian_list_notes` · `obsidian_get_recent_edits` · `obsidian_stale_notes` · `obsidian_open_questions` · `obsidian_context_pack` · `obsidian_chat_thread_read` · `obsidian_open_in_ui` · `obsidian_stats` |
|
|
265
|
+
| **PDFs, Canvas & Bases** | `obsidian_read_pdf` · `obsidian_list_pdfs` · `obsidian_ocr_pdf` · `obsidian_read_canvas` · `obsidian_list_canvases` · `obsidian_list_bases` (v3.2.0) · `obsidian_read_base` (v3.2.0) · `obsidian_query_base` (v3.2.0) |
|
|
266
|
+
| **Schreib-Tools** (abgesichert durch `--enable-write`) | `obsidian_create_note` · `obsidian_append_to_note` · `obsidian_rename_note` · `obsidian_replace_in_notes` · `obsidian_archive_note` · `obsidian_frontmatter_set` · `obsidian_chat_thread_append` |
|
|
267
|
+
| **Diagnose / Lint** | `obsidian_lint_wiki` · `obsidian_paper_audit` · `obsidian_validate_note_proposal` |
|
|
268
|
+
| **Feedback** (optional via `--feedback-weight`) | `obsidian_mark_useful` (Closed-Loop: erfasst, welche abgerufenen Notizen geholfen haben; wertet sie in künftigen Suchen auf) |
|
|
269
|
+
|
|
270
|
+
Plus 3 MCP-Ressourcen (`obsidian://vault/info`, `obsidian://note/{path}`, `obsidian://chunk/{n}/{path}`) und 19 **MCP-Prompts** (`summarize_recent_edits` · `review_tag` · `find_orphans` · `weekly_review` · `extract_todos` · `process_inbox` · `consolidate_tags` · `find_duplicates` · `lint_wiki` · `monthly_review` · `search_with_query_expansion` · `vault_synth` · `vault_wiki_compile` · `vault_lint_extended` · `vault_capture` · `vault_persona_search` · `vault_automation_setup` · `vault_research` · `vault_synthesis_page`) für gängige Vault-Workflows.
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## 🛡️ Vertrauen
|
|
275
|
+
|
|
276
|
+
| Aspekt | Haltung |
|
|
277
|
+
|---|---|
|
|
278
|
+
| **Standard** | Schreibgeschützt — `--enable-write` für die 7 Schreib-Tools erforderlich |
|
|
279
|
+
| **Geringstes Privileg** | `--disabled-tools` / `--enabled-tools` legen eine minimale Oberfläche offen (z. B. erhält ein schreibgeschützter Recherche-Agent nur `obsidian_search` + `obsidian_read_note`) |
|
|
280
|
+
| **Pfadsicherheit** | Realpath-Prüfung bei jedem Lesen + Schreiben; Symlinks aus dem Vault heraus werden abgelehnt |
|
|
281
|
+
| **Privatsphäre-Filter** | An den Ressourcenpfaden von FTS5 + embed-db + Chunk verifiziert; fail-closed bei leeren Allow-/Deny-Listen |
|
|
282
|
+
| **HTTP-Transport** | Bearer-Auth (konstantzeitiges SHA-256 + `timingSafeEqual`), Rate-Limit pro Token, striktes CORS |
|
|
283
|
+
| **Frontmatter** | `js-yaml@5` `load` (YAML-1.2-Core-Schema, standardmäßig sicher) — keine Code-Ausführung |
|
|
284
|
+
| **Cache- + Indexdateien** | chmod 0600, übergeordnetes Verzeichnis 0700 |
|
|
285
|
+
| **CI** | **9 erforderliche** Branch-Protection-Gates: (1) `lint`, (2) `test` auf Node 22, (3) `test` auf Node 24, (4) `smoke`, (5) `audit`, (6) `coverage`, (7) `version-consistency`, (8) `docs`, (9) `oia`. **5 beratende**: `test-macos` + `docker` (Dockerfile-Build + `tools/list`-Introspektions-Smoke) via `.github/workflows/ci.yml`; CodeQL ×2 + Analyze-Actions via [GitHub-Default-Setup](https://docs.github.com/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-default-setup-for-code-scanning) (keine Workflow-Dateien). Der Release-Workflow verifiziert vor dem npm-Publish erneut, dass alle 9 erforderlichen Gates auf dem getaggten SHA bestanden haben. _v3.7.10 — `docs` (TypeDoc-Generierungs-Gate) zum erforderlichen Satz hinzugefügt. v3.7.13 — `engines.node`-Untergrenze auf `>=22.13.0` angehoben, um zur CI-Matrix zu passen. v3.8.0-rc.6 — `oia` (Outside-In-Audit) vom beratenden Satz heraufgestuft._ |
|
|
286
|
+
| **Coverage** | Zeilen ≥86 % · Statements ≥82 % · Funktionen ≥75 % · Branches ≥74 % (abgesichert) |
|
|
287
|
+
| **Releases** | npm + GitHub-Release pro Tag · semver · **signierte Build-Provenienz** (npm + Sigstore, SLSA Build L2; L3-Generator auf der Roadmap) |
|
|
288
|
+
| **Stabilität** | v3.0+ semver-gebunden — jedes CLI-Flag, jeder Tool-Name, jede MCP-Ressource, jeder Prompt und jedes exportierte Symbol ist Vertrag |
|
|
289
|
+
|
|
290
|
+
Vollständige Haltung: **[SECURITY.md](./SECURITY.md)** · Stabilitätsoberfläche: **[STABILITY.md](./STABILITY.md)** · Sicherheitslücken: `oomkapwn@gmail.com`.
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## ❓ FAQ
|
|
295
|
+
|
|
296
|
+
**Muss Obsidian installiert sein?** Nein. Liest `.md` + `.canvas` + `.pdf` direkt. Funktioniert mit jedem Vault im Obsidian-Format.
|
|
297
|
+
|
|
298
|
+
**Schreibt es in meinen Vault?** Nur wenn Sie `--enable-write` übergeben. Alle 7 Schreib-Tools sind abgesichert; destruktive unterstützen `dry_run`.
|
|
299
|
+
|
|
300
|
+
**Werden Daten irgendwohin gesendet?** Nur bei `enquire-mcp install-model` (lädt ONNX-Gewichte einmalig von HuggingFace herunter). Der Serve-Modus stellt niemals ausgehende HTTP-Anfragen. Embeddings + Reranker laufen lokal auf der CPU.
|
|
301
|
+
|
|
302
|
+
**Performance?** Kalter FTS5-Build: ~5 s/1k Notizen, ~30 s/50k. BM25-Abfrage: immer <100 ms. Embedding-Build: ~30 ms/Chunk auf M1. **HNSW Top-10: unter 10 ms bei jedem Maßstab.** Serve-Kaltstart: ~50 ms mit HNSW-Persistenz.
|
|
303
|
+
|
|
304
|
+
**Sprachen?** Standard `paraphrase-multilingual-MiniLM-L12-v2` (50+ Sprachen). Mehrsprachiger Cross-Encoder. End-to-End validiert an zweisprachigen russisch-englischen Vaults. CJK/Thai/Khmer-Tokenisierung via `Intl.Segmenter`.
|
|
305
|
+
|
|
306
|
+
**Remote ausführen?** Ja — `serve-http` stellt denselben Server über [Streamable HTTP](https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#streamable-http) bereit. Stellen Sie Tailscale Funnel oder Cloudflare Tunnel davor für HTTPS. Funktioniert mit dem claude.ai-Web, dem benutzerdefinierten GPT von ChatGPT, dem HTTP-Modus von Cursor und mobilen MCP-Clients. Siehe **[docs/http-transport.md](./docs/http-transport.md)**.
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## 🚀 Releases
|
|
311
|
+
|
|
312
|
+
**v3.0.0 — stabiler Kanal.** Die v2.x-Retrieval-Roadmap ist abgeschlossen, und die öffentliche Oberfläche ist nun [semver-gebunden](./STABILITY.md). Best-of-Auswahl:
|
|
313
|
+
|
|
314
|
+
`v2.0` Hybrid-Retrieval (BM25+TF-IDF+Embeddings via RRF) · `v2.6` Remote-MCP · `v2.7-2.8` PDFs eingemischt · `v2.9` BGE-Reranker · `v2.10` OCR · `v2.11` doctor + setup · `v2.12` Eval-Harness · `v2.13` HNSW · `v2.14` zustandsbehaftete Sitzungen · `v2.15` Late-Chunking · `v2.16` HNSW-Persistenz · `v2.17` int8-Quantisierung · `v3.8.0` stable · `v3.8.7` Härtung des HTTP-Transports · **`v3.9.0` stable**: embed-sync des Watchers für OCR-PDFs, HNSW-In-Memory-Live-Update bei Dateiänderungen, R-10 adaptives HNSW-Refill (schließt die >66 %-ausgeschlossene Unterrückgabe). · **`v3.10` stable**: vergessensbewusste Frische — `age_days` + `stale`-Flag + optionales `--recency-weight`-Reranking + frontmatterbewusstes `obsidian_search`.
|
|
315
|
+
|
|
316
|
+
Kanal: `npm install @oomkapwn/enquire-mcp` → neueste stabile Version (`@latest` = v3.11.x). Vorabversion: `npm install @oomkapwn/enquire-mcp@rc` (der neueste Release-Kandidat — siehe [CHANGELOG.md](./CHANGELOG.md)). Vollständiges Changelog: **[CHANGELOG.md](./CHANGELOG.md)** · Vorausschauender Plan: **[ROADMAP.md](https://github.com/oomkapwn/enquire-mcp/blob/main/ROADMAP.md)**.
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## 🤝 Mitwirken
|
|
321
|
+
|
|
322
|
+
```bash
|
|
323
|
+
git clone https://github.com/oomkapwn/enquire-mcp.git
|
|
324
|
+
cd enquire-mcp && npm install
|
|
325
|
+
npm test # vollständige Suite (1440 Tests, ~12 s)
|
|
326
|
+
npm run lint # null Warnungen
|
|
327
|
+
npm run build # tsc → dist/
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
Issues, PRs und Ideen sind willkommen. Die Branch-Protection erfordert eine PR-Review auf `main`.
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## 📜 Lizenz
|
|
335
|
+
|
|
336
|
+
MIT. Erstellt von [Alex (@OomkaBear)](https://github.com/oomkapwn). Benannt nach [Tim Berners-Lees Prototyp des WWW von 1980](https://en.wikipedia.org/wiki/ENQUIRE) — dem ursprünglichen Hypertext-System, vor dem Web. Die ursprüngliche Spezifikation lautete: Man konnte das System nach allem fragen. **enquire-mcp bringt das in Ihren Vault.**
|
package/README.es.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
# enquire-mcp
|
|
6
6
|
|
|
7
|
-
<sub>[English](./README.md) · [中文](./README.zh.md) · **Español** · [हिन्दी](./README.hi.md) · [العربية](./README.ar.md) · [Русский](./README.ru.md) · [Português](./README.pt.md) · [Français](./README.fr.md) · [日本語](./README.ja.md)</sub>
|
|
7
|
+
<sub>[English](./README.md) · [中文](./README.zh.md) · **Español** · [हिन्दी](./README.hi.md) · [العربية](./README.ar.md) · [Русский](./README.ru.md) · [Português](./README.pt.md) · [Français](./README.fr.md) · [日本語](./README.ja.md) · [한국어](./README.ko.md) · [Deutsch](./README.de.md)</sub>
|
|
8
8
|
|
|
9
9
|
### El MCP de Obsidian más avanzado. Memoria a largo plazo para agentes de IA.
|
|
10
10
|
|
|
@@ -38,17 +38,53 @@ Cada sesión de IA empieza desde cero. Vuelves a explicar tu proyecto, tus decis
|
|
|
38
38
|
|
|
39
39
|
Tu bóveda de Obsidian se convierte en **memoria a largo plazo persistente y consultable** para cualquier agente compatible con MCP. Una sola instalación: tu conocimiento queda al instante accesible desde Claude Code, Claude Desktop, Cursor, el GPT personalizado de ChatGPT, Codex, OpenClaw y cualquier otro cliente MCP. Archivos markdown planos **que son tuyos**, indexados localmente, buscados con todo el stack moderno de recuperación de información (IR), y recordados en cada sesión y con cada modelo.
|
|
40
40
|
|
|
41
|
-
**Anclado en tus textos, no extraído.** Las herramientas de memoria conversacional (mem0, Zep, Supermemory, Memobase) *extraen* hechos de tus registros de chat hacia un almacén aparte que no puedes leer. enquire-mcp es lo contrario: está **anclado en el conocimiento que ya escribiste** —tus propias notas `.md`, literales, con citas— de modo que la recuperación es auditable, editable en cualquier editor y nunca un resumen con pérdidas de un chat que recuerdas a medias. Y a diferencia de las plataformas de memoria de ***flota*** del lado del servidor —almacenes en la nube multiinquilino que parafrasean el tráfico de los agentes hacia una base de datos compartida— enquire es **monousuario y local-first**: una única bóveda que posees por completo y que puedes leer, editar y borrar tú mismo, con cero llamadas a la nube durante el servicio.
|
|
41
|
+
**Anclado en tus textos, no extraído.** Las herramientas de memoria conversacional (mem0, Zep, Supermemory, Memobase) *extraen* hechos de tus registros de chat hacia un almacén aparte que no puedes leer. enquire-mcp es lo contrario: está **anclado en el conocimiento que ya escribiste** —tus propias notas `.md`, literales, con citas— de modo que la recuperación es auditable, editable en cualquier editor y nunca un resumen con pérdidas de un chat que recuerdas a medias. Y a diferencia de las plataformas de memoria de ***flota*** del lado del servidor —almacenes en la nube multiinquilino que parafrasean el tráfico de los agentes hacia una base de datos compartida— enquire es **monousuario y local-first**: una única bóveda que posees por completo y que puedes leer, editar y borrar tú mismo, con cero llamadas a la nube durante el servicio. (Esa crítica de "extraído" es específica del grupo de la memoria de chat, no de las herramientas de grafo de conocimiento / ETL como cognee, ni de pares de búsqueda personal como Khoj.)
|
|
42
42
|
|
|
43
43
|
**Anclado —— y consciente de la frescura.** Recordar un hecho es solo la mitad del problema; saber si sigue siendo *cierto* es la otra mitad. El [benchmark Memora](https://arxiv.org/abs/2604.20006) (abril de 2026) mostró que los sistemas de memoria fallan sistemáticamente al reutilizar hechos obsoletos: recuerdan una nota de hace un año como si se hubiera escrito hoy. Como la memoria de enquire *son* tus archivos markdown reales, cada resultado de búsqueda incluye `age_days` (días de antigüedad) y una marca `stale` (obsoleto) derivada de la hora real de última modificación de la nota, y puedes activar el ranking ponderado por recencia (`--recency-weight`) para que las notas más recientes salgan primero. Tu conocimiento, consciente de la frescura, no un bloque atemporal.
|
|
44
44
|
|
|
45
45
|
> **Lo que hace diferente a enquire-mcp**:
|
|
46
46
|
> 1. **Neutral respecto al proveedor.** Tu memoria vive en archivos `.md`. Cambia de Claude a Cursor: tu memoria viaja contigo.
|
|
47
47
|
> 2. **Recuperación de primer nivel.** BM25 híbrido + embeddings multilingües + reranker cross-encoder BGE fusionados mediante RRF, escalados con HNSW + cuantización int8. El mismo stack de IR que montaría una startup de búsqueda, en código abierto y en un solo binario.
|
|
48
|
-
> 3. **Cero llamadas a la nube durante el servicio.**
|
|
48
|
+
> 3. **Cero llamadas a la nube durante el servicio.** El modelo de embeddings se ejecuta **en tu máquina** e indexa el markdown que **tú** escribiste: por eso es una descarga local única (~110 MB), no una clave de API en la nube. Estar anclado y ser privado no sale gratis, y no fingimos que sí: el contenido de tu bóveda nunca sale de tu máquina, seguro para entornos aislados por defecto ([garantizado](./SECURITY.md), no aspiracional).
|
|
49
49
|
> 4. **Recuperación consciente de la frescura.** Cada resultado informa de la antigüedad de la nota; el reordenamiento por recencia opcional permite que un agente prefiera el conocimiento reciente y marque los hechos obsoletos para reverificación: la frontera consciente del olvido, construida sobre el `mtime` que tus archivos ya tienen.
|
|
50
50
|
|
|
51
|
-
**46 herramientas · 19 prompts MCP ·
|
|
51
|
+
**46 herramientas · 19 prompts MCP · 1440+ pruebas unitarias · 50+ idiomas · v3.11.x estable · ligado a semver · MIT · procedencia de compilación en npm (SLSA L2).**
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 🏆 Por qué es el mejor
|
|
56
|
+
|
|
57
|
+
**Seis funciones que ningún otro Obsidian-MCP tiene en absoluto** (GraphRAG-light, ejecución autónoma de `.base`, HyDE, cuantización int8, late-chunking, arnés de evaluación incorporado), **más todo el stack moderno de IR** (BM25 + embeddings + reranking con cross-encoder + HNSW), del que los competidores ofrecen como mucho uno o dos elementos. Cara a cara:
|
|
58
|
+
|
|
59
|
+
| Capacidad | enquire-mcp | Smart Connections | Otros Obsidian-MCP |
|
|
60
|
+
|---|:---:|:---:|:---:|
|
|
61
|
+
| Recuperación híbrida (BM25 + TF-IDF + embeddings de ML, fusionados con RRF) | ✅ | ❌ | ❌ |
|
|
62
|
+
| **Reranking con cross-encoder** (BGE, +15.5 NDCG@10 medido) | ✅ | ❌ | ❌ |
|
|
63
|
+
| **Índice vectorial HNSW** (top-K en menos de 10 ms, persistido) | ✅ | ❌ | ❌ |
|
|
64
|
+
| **Cuantización vectorial int8** (embed-db ~4× más pequeña) | ✅ | ❌ | ❌ |
|
|
65
|
+
| **Late-chunking** (embeddings con ventana de contexto) | ✅ | ❌ | ❌ |
|
|
66
|
+
| **PDF mezclados en la búsqueda híbrida** (citas `[page: N]`) | ✅ | ❌ | ❌ |
|
|
67
|
+
| **OCR para PDF escaneados** (Tesseract.js, multilingüe) | ✅ | ❌ | ❌ |
|
|
68
|
+
| **Graph-boost de wikilinks** como señal de recuperación | ✅ | ❌ | ❌ |
|
|
69
|
+
| **Búsqueda semántica multilingüe** (50+ idiomas, en el dispositivo) | ✅ | 💰 de pago | ❌ |
|
|
70
|
+
| **Arnés de evaluación de calidad de recuperación incorporado** (NDCG, Recall, MRR, matriz A/B) | ✅ | ❌ | ❌ |
|
|
71
|
+
| **MCP remoto** sobre HTTP + autenticación bearer + sesiones con estado | ✅ | ❌ | parcial |
|
|
72
|
+
| **Observabilidad por señal** en cada resultado | ✅ | ❌ | ❌ |
|
|
73
|
+
| **Nativo de MCP** (Claude · Cursor · ChatGPT · Codex · OpenClaw · cualquier cliente) | ✅ | ❌ solo Obsidian | varía |
|
|
74
|
+
| **Filtro de privacidad** verificado en cada ruta de búsqueda + escritura | ✅ | n/d | ❌ |
|
|
75
|
+
| **46 herramientas de producción** (34 de lectura siempre activas + 4 opcionales + 7 escrituras restringidas + 1 de retroalimentación) | ✅ | n/d | varía |
|
|
76
|
+
| **GraphRAG-light** (detección de comunidades de wikilinks por modularidad de Louvain) | ✅ **solo aquí** | ❌ | ❌ |
|
|
77
|
+
| **Ejecución autónoma de consultas `.base`** (funciona sin Obsidian abierto) | ✅ **solo aquí** | ❌ | ❌ delega en Obsidian |
|
|
78
|
+
| **Recuperación HyDE** (Gao et al. 2023) + descomposición en subpreguntas | ✅ **solo aquí** | ❌ | ❌ |
|
|
79
|
+
| **1440 pruebas unitarias · 9 puertas de CI requeridas + 5 indicativas por PR** | ✅ | n/d | raro |
|
|
80
|
+
| **Procedencia de compilación firmada** (npm + Sigstore, SLSA Build L2) | ✅ | n/d | ❌ |
|
|
81
|
+
| **Superficie pública ligada a semver** ([STABILITY.md](./STABILITY.md)) | ✅ | n/d | ❌ |
|
|
82
|
+
| Autónomo (sin necesidad de plugin de Obsidian) | ✅ | ❌ requiere Obsidian | varía |
|
|
83
|
+
| Licencia | MIT, gratis | propietaria, de pago | varía |
|
|
84
|
+
|
|
85
|
+
<sub>Comparación basada en las capacidades públicas de cada proyecto a fecha de la versión estable v3.8.x (instantánea inicial v3.7.0 / 2026-05-15; actualizada en v3.8.4). Smart Connections es un plugin de pago de Obsidian (no un servidor MCP). "Otros Obsidian-MCP" se refiere a los servidores Obsidian-MCP públicos de código abierto en GitHub en el momento de redactar esto. Los benchmarks de recuperación de extremo a extremo de enquire-mcp se publican en <a href="./docs/benchmarks.md"><code>docs/benchmarks.md</code></a>: el delta medido de `rerank-bge` es +24.7 MRR / +15.5 NDCG@10 frente al híbrido puro en una ablación de 60 consultas.</sub>
|
|
86
|
+
|
|
87
|
+
> Afirmación estratégica: enquire-mcp es el backend de código abierto para [wikis de LLM al estilo Karpathy](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) sobre tu bóveda de Obsidian existente. Conocimiento que se acumula, trazable hasta sus fuentes.
|
|
52
88
|
|
|
53
89
|
---
|
|
54
90
|
|
|
@@ -84,6 +120,72 @@ enquire-mcp doctor --vault <path> # chequeo de salud con código de color ✓
|
|
|
84
120
|
|
|
85
121
|
---
|
|
86
122
|
|
|
123
|
+
## 🤖 Configúralo en tu agente de IA — prompts para copiar y pegar
|
|
124
|
+
|
|
125
|
+
Una vez instalado `enquire-mcp`, pega estos prompts en tu agente para que sepa que la bóveda está disponible como memoria.
|
|
126
|
+
|
|
127
|
+
<details>
|
|
128
|
+
<summary><b>Claude Code (terminal)</b> — añade el servidor MCP + primer prompt</summary>
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Añade el servidor MCP a tu configuración de Claude Code (una sola vez)
|
|
132
|
+
claude mcp add obsidian -- npx -y @oomkapwn/enquire-mcp serve --vault ~/Documents/Obsidian\ Vault
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Luego, en cualquier sesión de Claude Code:
|
|
136
|
+
|
|
137
|
+
> Ahora dispones de herramientas `obsidian_*` que buscan y leen mi bóveda de Obsidian, mi memoria a largo plazo. Antes de responder a preguntas sobre proyectos, decisiones, personas o contexto técnico, llama a `obsidian_search` con los términos relevantes. Cita cada hecho con la nota fuente (y `[page: N]` para los PDF). Si no encuentras una nota relevante, dilo: no adivines.
|
|
138
|
+
|
|
139
|
+
</details>
|
|
140
|
+
|
|
141
|
+
<details>
|
|
142
|
+
<summary><b>Claude Desktop</b> — archivo de configuración + primer prompt</summary>
|
|
143
|
+
|
|
144
|
+
Deposita [`examples/claude-desktop-hybrid.json`](./examples/claude-desktop-hybrid.json) en la configuración MCP de Claude Desktop (edita primero la ruta de la bóveda). Reinicia Claude Desktop y luego:
|
|
145
|
+
|
|
146
|
+
> Tienes mi bóveda de Obsidian conectada como memoria consultable a través de las herramientas `obsidian_*`. Comprueba siempre `obsidian_search` primero cuando te pregunte por cualquier cosa de mis notas: contexto de reuniones, investigación, decisiones, entradas de diario. Cita la ruta de la nota fuente en cada hecho.
|
|
147
|
+
|
|
148
|
+
</details>
|
|
149
|
+
|
|
150
|
+
<details>
|
|
151
|
+
<summary><b>Cursor</b> — configuración MCP stdio + regla de agente</summary>
|
|
152
|
+
|
|
153
|
+
Deposita [`examples/cursor-mcp.json`](./examples/cursor-mcp.json) en `~/.cursor/mcp.json` (edita la ruta de la bóveda). En tu archivo `.cursorrules` o en el chat:
|
|
154
|
+
|
|
155
|
+
> Antes de sugerir código que toque un tema sobre el que pueda tener notas (decisiones de arquitectura, contratos de API, evaluaciones de proveedores), llama primero a `obsidian_search`. Trata mi bóveda de Obsidian como contexto autoritativo.
|
|
156
|
+
|
|
157
|
+
</details>
|
|
158
|
+
|
|
159
|
+
<details>
|
|
160
|
+
<summary><b>GPT personalizado de ChatGPT</b> — MCP remoto sobre HTTP</summary>
|
|
161
|
+
|
|
162
|
+
Sigue [`examples/chatgpt-actions.md`](./examples/chatgpt-actions.md) para exponer `serve-http` a través de un túnel con autenticación bearer. En las instrucciones de tu GPT personalizado:
|
|
163
|
+
|
|
164
|
+
> Tienes acceso de lectura a mi bóveda de Obsidian a través de la familia de herramientas `obsidian_*`. Busca antes de responder a cualquier cosa que pueda estar en mis notas; cita la ruta del archivo fuente en cada afirmación.
|
|
165
|
+
|
|
166
|
+
</details>
|
|
167
|
+
|
|
168
|
+
<details>
|
|
169
|
+
<summary><b>OpenClaw / Codex / cualquier otro cliente MCP</b></summary>
|
|
170
|
+
|
|
171
|
+
El mismo comando `npx -y @oomkapwn/enquire-mcp serve --vault <path>` funciona para cualquier cliente compatible con MCP. Consulta la documentación de configuración MCP del propio cliente para saber dónde colocar la entrada del servidor, y luego usa cualquiera de los prompts anteriores.
|
|
172
|
+
|
|
173
|
+
</details>
|
|
174
|
+
|
|
175
|
+
**Regla de agente reutilizable** (deposítala en cualquier `AGENTS.md` / `CLAUDE.md` / `.cursorrules` para que el agente sepa *cuándo* recurrir a la bóveda):
|
|
176
|
+
|
|
177
|
+
> Cuando mi pregunta toque mis propias notas, decisiones, proyectos, personas o investigación, **busca primero en mi bóveda de Obsidian** mediante las herramientas `obsidian_*` (empieza por `obsidian_search`) y cita la nota fuente en cada hecho. Prefiere enquire para el recall *conceptual / entre idiomas / "qué dije sobre X"*; usa `grep` / `ripgrep` simple para cadenas literales exactas. Si no vuelve nada relevante, dilo: no adivines.
|
|
178
|
+
|
|
179
|
+
### Ejemplos de consultas que funcionan bien
|
|
180
|
+
|
|
181
|
+
- *"Encuentra cada nota donde hablé de estrategia de precios, resume la evolución."* — la fusión RRF + el reranker manejan "evolución" semánticamente
|
|
182
|
+
- *"¿Cuál fue mi decisión sobre PostgreSQL vs MongoDB? Cita la nota diaria."* — el graph-boost de wikilinks saca a la luz el documento de decisión central
|
|
183
|
+
- *"Анализируй мои заметки о RAG за последние 3 месяца"* — embeddings multilingües + filtro de fecha en el frontmatter
|
|
184
|
+
- *"¿Qué páginas del PDF del artículo de LLaMA-3 hablan del escalado?"* — PDF mezclados en la búsqueda con citas `[page: N]`
|
|
185
|
+
- *"Muéstrame las comunidades temáticas de mi bóveda de investigación: ¿qué temas he estado explorando?"* — `obsidian_get_communities` (GraphRAG-light)
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
87
189
|
## 🧠 Casos de uso
|
|
88
190
|
|
|
89
191
|
**1 —— Memoria a largo plazo para agentes de IA.** Conecta tu bóveda de Obsidian a cualquier agente compatible con MCP (Claude Code, Claude Desktop, Cursor, ChatGPT, Codex, OpenClaw). El agente dispone entonces de una recuperación semántica duradera sobre cada nota de reunión, entrada de diario, registro de investigación y documento de decisión que hayas escrito jamás, a través de sesiones, modelos y proveedores. A diferencia de `Claude Memory` o `ChatGPT Memory`, tu conocimiento no queda encerrado en la nube de un proveedor; vive en markdown plano que posees y puedes migrar libremente.
|
|
@@ -107,42 +209,29 @@ No-objetivos honestos: recurre a otra cosa cuando:
|
|
|
107
209
|
|
|
108
210
|
---
|
|
109
211
|
|
|
110
|
-
##
|
|
212
|
+
## 📖 Referencia de la API
|
|
111
213
|
|
|
112
|
-
**
|
|
113
|
-
|
|
114
|
-
| Capacidad | enquire-mcp | Smart Connections | Otros Obsidian-MCP |
|
|
115
|
-
|---|:---:|:---:|:---:|
|
|
116
|
-
| Recuperación híbrida (BM25 + TF-IDF + embeddings, fusionados con RRF) | ✅ | ❌ | ❌ |
|
|
117
|
-
| **Reranking con cross-encoder** (BGE, +15.5 NDCG@10 medido) | ✅ | ❌ | ❌ |
|
|
118
|
-
| **Índice vectorial HNSW** (top-K en menos de 10 ms, persistido) | ✅ | ❌ | ❌ |
|
|
119
|
-
| **Cuantización vectorial int8** (embed-db ~4× más pequeña) | ✅ | ❌ | ❌ |
|
|
120
|
-
| **Búsqueda semántica multilingüe** (50+ idiomas, en el dispositivo) | ✅ | 💰 de pago | ❌ |
|
|
121
|
-
| **PDF mezclados en la búsqueda híbrida** (citas `[page: N]` + OCR) | ✅ | ❌ | ❌ |
|
|
122
|
-
| **Graph-boost de wikilinks** como señal de recuperación | ✅ | ❌ | ❌ |
|
|
123
|
-
| **Arnés de evaluación de calidad de recuperación incorporado** (NDCG, Recall, MRR) | ✅ | ❌ | ❌ |
|
|
124
|
-
| **MCP remoto** sobre HTTP + autenticación bearer + sesiones con estado | ✅ | ❌ | parcial |
|
|
125
|
-
| **Nativo de MCP** (Claude · Cursor · ChatGPT · Codex · OpenClaw · cualquier cliente) | ✅ | ❌ solo Obsidian | varía |
|
|
126
|
-
| **Filtro de privacidad** verificado en cada ruta de búsqueda + escritura | ✅ | n/d | ❌ |
|
|
127
|
-
| **46 herramientas de producción** (34 de lectura siempre activas + 4 opcionales + 7 escrituras restringidas + 1 de retroalimentación) | ✅ | n/d | varía |
|
|
128
|
-
| **GraphRAG-light** (detección de comunidades de wikilinks por modularidad de Louvain) | ✅ **solo aquí** | ❌ | ❌ |
|
|
129
|
-
| **Ejecución autónoma de consultas `.base`** (funciona sin Obsidian abierto) | ✅ **solo aquí** | ❌ | ❌ |
|
|
130
|
-
| **Recuperación HyDE** + descomposición en subpreguntas | ✅ **solo aquí** | ❌ | ❌ |
|
|
131
|
-
| **Procedencia de compilación firmada** (npm + Sigstore, SLSA L2) | ✅ | n/d | ❌ |
|
|
132
|
-
| Autónomo (sin necesidad de plugin de Obsidian) | ✅ | ❌ requiere Obsidian | varía |
|
|
133
|
-
| Licencia | MIT, gratis | propietaria, de pago | varía |
|
|
134
|
-
|
|
135
|
-
<sub>Comparación basada en las capacidades públicas de cada proyecto a fecha de la versión estable v3.8.x. Smart Connections es un plugin de pago de Obsidian (no un servidor MCP). "Otros Obsidian-MCP" se refiere a los servidores Obsidian-MCP públicos de código abierto en GitHub en el momento de redactar esto. Los benchmarks de recuperación de extremo a extremo de enquire-mcp se publican en <a href="./docs/benchmarks.md"><code>docs/benchmarks.md</code></a>: el delta medido de `rerank-bge` es +24.7 MRR / +15.5 NDCG@10 frente al híbrido puro en una ablación de 60 consultas.</sub>
|
|
136
|
-
|
|
137
|
-
> Afirmación estratégica: enquire-mcp es el backend de código abierto para [wikis de LLM al estilo Karpathy](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) sobre tu bóveda de Obsidian existente. Conocimiento que se acumula, trazable hasta sus fuentes.
|
|
214
|
+
**[Referencia de la API autogenerada en oomkapwn.github.io/enquire-mcp](https://oomkapwn.github.io/enquire-mcp/)** — cada herramienta, prompt y helper exportado con TSDoc completo (`@param` / `@returns` / `@example`). Reconstruida desde el código fuente en cada push a `main` mediante [`publish-docs.yml`](https://github.com/oomkapwn/enquire-mcp/blob/main/.github/workflows/publish-docs.yml) (TypeDoc → GitHub Pages). Sin deriva por construcción: el mismo TSDoc que ven los agentes de IA y los IDE es el que se publica.
|
|
138
215
|
|
|
139
216
|
---
|
|
140
217
|
|
|
141
218
|
## 🏗️ Cómo funciona la recuperación
|
|
142
219
|
|
|
143
|
-
|
|
220
|
+
```mermaid
|
|
221
|
+
graph LR
|
|
222
|
+
Q[Query] --> S[obsidian_search]
|
|
223
|
+
S --> BM25[BM25 / FTS5]
|
|
224
|
+
S --> TFIDF[TF-IDF cosine]
|
|
225
|
+
S --> EMB[ML embeddings<br/>HNSW]
|
|
226
|
+
BM25 --> RRF{RRF fusion<br/>k=60}
|
|
227
|
+
TFIDF --> RRF
|
|
228
|
+
EMB --> RRF
|
|
229
|
+
RRF --> GB[Graph boost<br/>α × in-degree]
|
|
230
|
+
GB --> RR[BGE cross-encoder<br/>reranker]
|
|
231
|
+
RR --> R[Ranked hits<br/>per_signal observability]
|
|
232
|
+
```
|
|
144
233
|
|
|
145
|
-
|
|
234
|
+
`obsidian_search` detecta automáticamente las señales disponibles y degrada con elegancia. El graph-boost de wikilinks reordena el top-K mediante un PageRank personalizado de un paso. El reranking con cross-encoder opcional vuelve a puntuar el top-N para +15.5 NDCG@10 medido. Cada resultado devuelve `per_signal: { bm25, tfidf, embeddings }`, para que veas POR QUÉ se posicionó.
|
|
146
235
|
|
|
147
236
|
| Nivel | Configuración | Lo que obtienes |
|
|
148
237
|
|---|---|---|
|
|
@@ -158,7 +247,20 @@ Activable por niveles, según lo que necesites:
|
|
|
158
247
|
|
|
159
248
|
## 🛠️ Las 46 herramientas
|
|
160
249
|
|
|
161
|
-
46 herramientas en total: 34 de lectura siempre activas (incl. el paraguas `obsidian_search`) + 4 opcionales + 7 escrituras restringidas + 1 de retroalimentación de bucle cerrado. Referencia completa
|
|
250
|
+
46 herramientas en total: 34 de lectura siempre activas (incl. el paraguas `obsidian_search`) + 4 opcionales + 7 escrituras restringidas + 1 de retroalimentación de bucle cerrado. Referencia completa: **[docs/api.md](./docs/api.md)**.
|
|
251
|
+
|
|
252
|
+
| Categoría | Herramientas |
|
|
253
|
+
|---|---|
|
|
254
|
+
| **Búsqueda y recuperación** | `obsidian_search` (paraguas, fusionado con RRF) · `obsidian_hyde_search` (aumentado con HyDE, v3.1.0) · `obsidian_search_text` · `obsidian_full_text_search` · `obsidian_semantic_search` · `obsidian_embeddings_search` · `obsidian_find_similar` |
|
|
255
|
+
| **Wikilinks y grafo** | `obsidian_resolve_wikilink` · `obsidian_get_backlinks` · `obsidian_get_outbound_links` · `obsidian_get_note_neighbors` · `obsidian_get_unresolved_wikilinks` · `obsidian_find_path` · `obsidian_get_communities` (v3.4.0, GraphRAG-light) |
|
|
256
|
+
| **Frontmatter y Dataview** | `obsidian_frontmatter_get` · `obsidian_frontmatter_search` · `obsidian_dataview_query` · `obsidian_list_tags` |
|
|
257
|
+
| **Leer y navegar** | `obsidian_read_note` · `obsidian_list_notes` · `obsidian_get_recent_edits` · `obsidian_stale_notes` · `obsidian_open_questions` · `obsidian_context_pack` · `obsidian_chat_thread_read` · `obsidian_open_in_ui` · `obsidian_stats` |
|
|
258
|
+
| **PDF, Canvas y Bases** | `obsidian_read_pdf` · `obsidian_list_pdfs` · `obsidian_ocr_pdf` · `obsidian_read_canvas` · `obsidian_list_canvases` · `obsidian_list_bases` (v3.2.0) · `obsidian_read_base` (v3.2.0) · `obsidian_query_base` (v3.2.0) |
|
|
259
|
+
| **Escrituras** (restringidas por `--enable-write`) | `obsidian_create_note` · `obsidian_append_to_note` · `obsidian_rename_note` · `obsidian_replace_in_notes` · `obsidian_archive_note` · `obsidian_frontmatter_set` · `obsidian_chat_thread_append` |
|
|
260
|
+
| **Diagnóstico / lint** | `obsidian_lint_wiki` · `obsidian_paper_audit` · `obsidian_validate_note_proposal` |
|
|
261
|
+
| **Retroalimentación** (opcional vía `--feedback-weight`) | `obsidian_mark_useful` (bucle cerrado: registra qué notas recuperadas ayudaron; las potencia en búsquedas futuras) |
|
|
262
|
+
|
|
263
|
+
Además 3 recursos MCP (`obsidian://vault/info`, `obsidian://note/{path}`, `obsidian://chunk/{n}/{path}`) y 19 **prompts MCP** (`summarize_recent_edits` · `review_tag` · `find_orphans` · `weekly_review` · `extract_todos` · `process_inbox` · `consolidate_tags` · `find_duplicates` · `lint_wiki` · `monthly_review` · `search_with_query_expansion` · `vault_synth` · `vault_wiki_compile` · `vault_lint_extended` · `vault_capture` · `vault_persona_search` · `vault_automation_setup` · `vault_research` · `vault_synthesis_page`) para los flujos de trabajo habituales sobre la bóveda.
|
|
162
264
|
|
|
163
265
|
---
|
|
164
266
|
|
|
@@ -171,7 +273,12 @@ Activable por niveles, según lo que necesites:
|
|
|
171
273
|
| **Seguridad de rutas** | Comprobación de realpath en cada lectura+escritura; se rechazan los symlinks que salen de la bóveda |
|
|
172
274
|
| **Filtro de privacidad** | Verificado en las rutas de recurso de FTS5 + embed-db + chunk; fail-closed ante listas de permitidos/denegados vacías |
|
|
173
275
|
| **Transporte HTTP** | Autenticación bearer (SHA-256 de tiempo constante + `timingSafeEqual`), límite de tasa por token, CORS estricto |
|
|
174
|
-
| **
|
|
276
|
+
| **Frontmatter** | `js-yaml@5` `load` (esquema núcleo YAML 1.2, seguro por defecto) — sin ejecución de código |
|
|
277
|
+
| **Archivos de caché + índice** | chmod 0600, directorio padre 0700 |
|
|
278
|
+
| **CI** | **9 puertas** de protección de rama **requeridas**: (1) `lint`, (2) `test` en Node 22, (3) `test` en Node 24, (4) `smoke`, (5) `audit`, (6) `coverage`, (7) `version-consistency`, (8) `docs`, (9) `oia`. **5 indicativas**: `test-macos` + `docker` (build del Dockerfile + smoke de introspección `tools/list`) vía `.github/workflows/ci.yml`; CodeQL ×2 + acciones Analyze vía el [default-setup de GitHub](https://docs.github.com/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-default-setup-for-code-scanning) (no archivos de workflow). El workflow de release reverifica que las 9 puertas requeridas pasaron sobre el SHA etiquetado antes de la publicación en npm. _v3.7.10 — `docs` (puerta de generación de TypeDoc) añadida al conjunto requerido. v3.7.13 — piso de `engines.node` elevado a `>=22.13.0` para coincidir con la matriz de CI. v3.8.0-rc.6 — `oia` (Outside-In Audit) promovida desde el conjunto indicativo._ |
|
|
279
|
+
| **Cobertura** | Líneas ≥86 % · sentencias ≥82 % · funciones ≥75 % · ramas ≥74 % (con guarda) |
|
|
280
|
+
| **Publicación de versiones** | npm + GitHub release por cada tag · semver · **procedencia de compilación firmada** (npm + Sigstore, SLSA Build L2; generador L3 en la hoja de ruta) |
|
|
281
|
+
| **Estabilidad** | v3.0+ ligada a semver — cada flag de CLI, nombre de herramienta, recurso MCP, prompt y símbolo exportado es un contrato |
|
|
175
282
|
|
|
176
283
|
Postura completa: **[SECURITY.md](./SECURITY.md)** · Superficie de estabilidad: **[STABILITY.md](./STABILITY.md)** · Vulnerabilidades: `oomkapwn@gmail.com`.
|
|
177
284
|
|