{"name":"io.github.flowing-abyss/obsidian-hybrid-search","slug":"flowing-abyss-obsidian-hybrid-search","title":"Obsidian Hybrid Search","description":"Search Obsidian vaults with hybrid full-text, fuzzy, semantic, and graph retrieval.","url":"https://mcp.market/server/flowing-abyss-obsidian-hybrid-search","rating":null,"grade":"C","score":57,"certified":false,"status":"active","category":"productivity","tags":["productivity","search"],"presence":{"score":52,"stars":104,"forks":17,"downloads_week":674,"last_push_at":"2026-09-17T14:06:57.000Z","license":"MIT"},"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/flowing-abyss/obsidian-hybrid-search","website":"https://github.com/flowing-abyss/obsidian-hybrid-search#readme","version":"0.15.3","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"obsidian-hybrid-search","version":"0.15.3","transport":{"type":"stdio"},"packageArguments":[{"value":"mcp","type":"positional"}],"environmentVariables":[{"description":"Absolute path to the Obsidian vault to index and search.","isRequired":true,"format":"filepath","name":"OBSIDIAN_VAULT_PATH"},{"description":"Optional prefix for MCP tool names when configuring multiple vaults.","name":"OBSIDIAN_PREFIX"},{"description":"Comma-separated glob patterns to exclude from indexing.","default":".obsidian/**,templates/**,*.canvas","name":"OBSIDIAN_IGNORE_PATTERNS"},{"description":"Read root and nested .gitignore files when indexing; set to false, 0, or no to disable.","default":"true","name":"OBSIDIAN_RESPECT_GITIGNORE"},{"description":"Comma-separated patterns to re-include notes ignored only by .gitignore.","name":"OBSIDIAN_INCLUDE_PATTERNS"},{"description":"Optional API key for OpenAI-compatible remote embeddings; omit to use local embeddings.","isSecret":true,"name":"OPENAI_API_KEY"},{"description":"Optional OpenAI-compatible API base URL for OpenRouter, Ollama, LM Studio, or similar providers.","default":"https://api.openai.com/v1","name":"OPENAI_BASE_URL"},{"description":"Remote embedding model name when using an OpenAI-compatible API.","default":"text-embedding-3-small","name":"OPENAI_EMBEDDING_MODEL"},{"description":"Local embedding model used when no remote embedding API is configured.","default":"Xenova/multilingual-e5-small","name":"LOCAL_EMBEDDING_MODEL"},{"description":"Optional ONNX cross-encoder reranker model used when reranking is requested.","default":"onnx-community/bge-reranker-v2-m3-ONNX","name":"RERANKER_MODEL"}]}],"tools":[],"scan":{"score":57,"grade":"C","scanned_at":"2026-09-19T00:48:59.970Z","report":{"scannerVersion":"0.1.3","scannedAt":"2026-09-19T00:48:59.938Z","components":{"code":{"score":8,"max":25,"notes":["40 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":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"dist/eval/metrics.js: …/** * Pure metric functions for eval (nDCG, MRR, Hit@k, Recall@k). * No side …"},{"id":"exec.shell-concat","severity":"high","component":"code","title":"Shell command built from a string (injection risk)","evidence":"dist/src/db.js: …xec('DELETE FROM chunks'); } db.exec(`CREATE VIRTUAL TABLE vec_chunks USING vec0( chunk_id INTEGER PRIMARY KEY, embedding float[${dim}] )`); db.prepare(\"INSERT OR R…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"obsidian-hybrid-search","version":"0.15.3","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":17,"publishedAt":"2026-09-17T14:09:13.483Z","repositoryUrl":"git+https://github.com/flowing-abyss/obsidian-hybrid-search.git","weeklyDownloads":674}],"repo":{"found":true,"owner":"flowing-abyss","repo":"obsidian-hybrid-search","archived":false,"pushedAt":"2026-09-17T14:06:57Z","stars":104,"forks":17,"openIssues":6,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/98622217?v=4","ownerCreatedAt":"2022-01-28T22:32:21Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/98622217?v=4&s=128","source":"github"},"presence":{"stars":104,"forks":17,"downloadsWeek":674,"license":"MIT","lastPushAt":"2026-09-17T14:06:57.000Z","score":52}}}},"grade_history":[{"kind":"restore","fromGrade":"D","toGrade":"C","reason":"score 57: Shell command built from a string (injection risk); eval / new Function used","createdAt":"2026-09-19T00:26:56.677Z"}],"reviews":[]}