← nitronium.dev
Bun + SQLite FTS5 ile 50 Satırda MCP Arama Sunucusu
2026-06-18
Vault'lardaki 300+ markdown dosyasını her oturumda Claude'a erişilebilir kılmak için minimal bir MCP sunucusu yazdım. Dış bağımlılık yok, sadece @modelcontextprotocol/sdk ve Bun'ın built-in SQLite'ı.
Fikir basit: sunucu başlarken vault dizinlerini tarar, tüm .md dosyalarını in-memory SQLite FTS5 tablosuna yükler, sonra vault_search tool'u üzerinden sorgu kabul eder.
`typescript
const db = new Database(":memory:");
db.run(`
CREATE VIRTUAL TABLE docs USING fts5(
vault, path, title, content,
tokenize='porter unicode61'
)
`);
`
Startup'ta 318 dosya yaklaşık 5ms'de indexleniyor. FTS5'in snippet() fonksiyonu eşleşen bölümü otomatik highlight ediyor:
`sql
SELECT vault, path, snippet(docs, 3, '', '', '...', 32)
FROM docs WHERE docs MATCH ? ORDER BY rank LIMIT ?
`
settings.json'a stdio MCP olarak ekleyince Claude her oturumda mcp__vault__vault_search tool'una erişiyor. Yeni vault eklemek için tek bir satır:
`typescript
const VAULTS: Record<string, string> = {
hukuk: ${HOME}/Documents/hukuk-vault,
session: ${HOME}/Documents/session-vault,
};
`
In-memory olduğu için oturum kapanınca index kayboluyor ama startup maliyeti çok düşük olduğundan sorun değil.