{"name":"io.github.sweir1/obsidian-brain","slug":"sweir1-obsidian-brain","title":"Obsidian Brain","description":"Obsidian MCP server: semantic search, knowledge graph, and vault editing. No plugin required.","url":"https://mcp.market/server/sweir1-obsidian-brain","rating":null,"grade":"B","score":72,"certified":false,"status":"active","category":"productivity","tags":["productivity","search"],"presence":{"score":34,"stars":11,"forks":2,"downloads_week":136,"last_push_at":"2026-08-12T20:32:59.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/sweir1/obsidian-brain","website":"https://sweir1.github.io/obsidian-brain/","version":"1.7.24","remotes":[],"packages":[{"registryType":"npm","identifier":"obsidian-brain","version":"1.7.24","runtimeHint":"npx","transport":{"type":"stdio"},"runtimeArguments":[{"value":"-y","type":"positional"}],"packageArguments":[{"value":"server","type":"positional"}],"environmentVariables":[{"description":"Absolute path to your Obsidian vault (or any folder of .md files).","isRequired":true,"format":"string","name":"VAULT_PATH"},{"description":"Where to store the SQLite index + embedding cache. Defaults to $XDG_DATA_HOME/obsidian-brain or ~/.local/share/obsidian-brain.","format":"string","name":"DATA_DIR"},{"description":"Preset name: english (default, bge-small-en-v1.5), english-fast, english-quality, multilingual, multilingual-quality, multilingual-ollama. Ignored when EMBEDDING_MODEL is set.","format":"string","default":"english","choices":["english","english-fast","english-quality","multilingual","multilingual-quality","multilingual-ollama"],"name":"EMBEDDING_PRESET"},{"description":"Power-user override: any transformers.js checkpoint or Ollama model id. Takes precedence over EMBEDDING_PRESET. Switching auto-reindexes.","format":"string","name":"EMBEDDING_MODEL"},{"description":"Embedding backend. 'transformers' (local, default) or 'ollama' (requires a running Ollama server).","format":"string","default":"transformers","choices":["transformers","ollama"],"name":"EMBEDDING_PROVIDER"},{"description":"Base URL of a local Ollama server. Only used when EMBEDDING_PROVIDER=ollama.","format":"string","default":"http://localhost:11434","name":"OLLAMA_BASE_URL"},{"description":"Override the embedding dimensionality when EMBEDDING_PROVIDER=ollama. If unset, the server probes the model on startup.","format":"number","name":"OLLAMA_EMBEDDING_DIM"},{"description":"Override Ollama's num_ctx for embed requests. Leave UNSET to let obsidian-brain auto-detect via `/api/show`'s `context_length` (e.g. nomic-embed-text=2048, bge-m3=8192, qwen3-embedding:0.6b=32 768). Setting this manually imposes a hard cap and may silently truncate longer inputs — see https://github.com/ollama/ollama/issues/14259. Ollama's own default is 2048 which truncates for any model trained on a larger context. See also https://github.com/ollama/ollama/issues/7008. Fallback when both env is unset AND /api/show is unreachable: 8192.","name":"OLLAMA_NUM_CTX"},{"description":"Auto-pull the configured Ollama model when /api/show returns 404 (model not present). Default ON — choosing an Ollama-backed preset is implicit consent to download its model. Streams /api/pull progress to stderr. Set to '0' to disable auto-pull entirely (master kill-switch) and fall back to the actionable error path (`HTTP 404 — try: ollama pull <model>`).","format":"string","choices":["","0","1"],"name":"OBSIDIAN_BRAIN_OLLAMA_AUTO_PULL"},{"description":"Opt-in to auto-pull for BYOM (custom EMBEDDING_MODEL) Ollama models OUTSIDE Ollama's official `library/` namespace. Default OFF — third-party models (e.g. `user/custom-fork`, `myregistry.com/team/model`) require this env var to be set to `1` before they will auto-pull, to prevent silent downloads of arbitrary user-named artifacts. Preset-known models (via EMBEDDING_PRESET) and bare model ids in the official library (e.g. `qwen3-embedding:0.6b`, `library/llama3:8b`) continue to auto-pull by default per the existing OBSIDIAN_BRAIN_OLLAMA_AUTO_PULL behavior.","format":"string","choices":["","0","1"],"name":"OBSIDIAN_BRAIN_OLLAMA_BYOM_AUTO_PULL"},{"description":"Set to '1' to disable the live chokidar file watcher. Useful on SMB/NFS vaults where FSEvents/inotify don't fire reliably — fall back to running `obsidian-brain index` on a schedule (launchd/systemd).","format":"string","name":"OBSIDIAN_BRAIN_NO_WATCH"},{"description":"Set to '1' to skip the startup catchup reindex pass that picks up edits made while the server was down. The live file watcher still starts (via OBSIDIAN_BRAIN_NO_WATCH=1 to disable that separately), and first-time indexing on an empty DB is unaffected — this knob only governs the post-restart `enqueueBackgroundReindex` walk.","format":"string","name":"OBSIDIAN_BRAIN_NO_CATCHUP"},{"description":"Per-file reindex debounce for the live watcher, in milliseconds.","format":"number","default":"3000","name":"OBSIDIAN_BRAIN_WATCH_DEBOUNCE_MS"},{"description":"Graph-wide community-detection (Louvain) debounce for the live watcher, in milliseconds. Louvain is the only expensive op — batching it prevents per-edit CPU spikes.","format":"number","default":"60000","name":"OBSIDIAN_BRAIN_COMMUNITY_DEBOUNCE_MS"},{"description":"Per-tool-call timeout in milliseconds. Tools exceeding this return an MCP error instead of hanging.","format":"number","default":"30000","name":"OBSIDIAN_BRAIN_TOOL_TIMEOUT_MS"},{"description":"Override the adaptive chunk-size budget (in tokens). When set, this beats the capacity probed from the model's tokenizer or Ollama /api/show. Use for debugging or for models with stale tokenizer configs.","format":"number","name":"OBSIDIAN_BRAIN_MAX_CHUNK_TOKENS"},{"description":"Override the per-user config directory where obsidian-brain stores model overrides (`model-overrides.json`) and the user-fetched seed (`seed-models.json`). Default is `$XDG_CONFIG_HOME/obsidian-brain` on macOS/Linux (or `~/.config/obsidian-brain`) and `%APPDATA%/obsidian-brain` on Windows. Both files survive `npm update obsidian-brain` because they live outside the package.","format":"filepath","name":"OBSIDIAN_BRAIN_CONFIG_DIR"},{"description":"Set to \"1\" to print a verbose synchronous startup trace to stderr — every preflight, createContext, server.connect, and shutdown step is logged with a monotonic timestamp. The LAST line before any silent failure tells you exactly which step the server reached. No-op when unset (no overhead). Use to diagnose silent-crash failure modes.","format":"string","choices":["","1"],"name":"OBSIDIAN_BRAIN_DEBUG"},{"description":"Set to 'ndjson' for one-JSON-object-per-line stderr output (timestamp + level + message + structured fields). Default is human-readable plain text (`obsidian-brain: <message>`). Useful for piping logs into aggregators (Datadog, Loki, Vector, journald) that index structured fields.","format":"string","choices":["","ndjson"],"name":"OBSIDIAN_BRAIN_LOG_FORMAT"}]}],"tools":[],"scan":{"score":72,"grade":"B","scanned_at":"2026-09-27T21:28:31.905Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T21:28:31.878Z","components":{"code":{"score":15,"max":25,"notes":["210 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":12,"max":15,"notes":["last push 46 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"install.script","severity":"medium","component":"code","title":"npm install lifecycle script present"},{"id":"install.script","severity":"medium","component":"code","title":"npm install lifecycle script present","evidence":"package.json: … \"prepublishOnly\": \"npm run build\", \"postinstall\": \"npm rebuild better-sqlite3 || (echo 'o…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"obsidian-brain","version":"1.7.24","found":true,"license":"Apache-2.0","hasInstallScripts":true,"dependencyCount":13,"publishedAt":"2026-05-16T15:24:43.894Z","repositoryUrl":"git+https://github.com/sweir1/obsidian-brain.git","weeklyDownloads":136}],"repo":{"found":true,"owner":"sweir1","repo":"obsidian-brain","archived":false,"pushedAt":"2026-08-12T20:32:59Z","stars":11,"forks":2,"openIssues":18,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/63261999?v=4","ownerCreatedAt":"2020-04-06T20:02:12Z","license":"Apache-2.0"},"icon":{"url":null,"source":"none"},"presence":{"stars":11,"forks":2,"downloadsWeek":136,"license":"Apache-2.0","lastPushAt":"2026-08-12T20:32:59.000Z","score":34}}}},"grade_history":[],"reviews":[]}