Docsonar
Local document search over your folders: hybrid keyword+semantic, fully offline, read-only
Connector by ribhav-jain · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/ribhav-jain-docsonar
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 5 read · 1 write · 1 delete · 1 not yet classified
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 8
Read from the source code; the running server may list different tools.
Read 5 · Look things up without changing anything.
find_similarindex_statuslist_foldersread_filesearch
Write 1 · Create, change, send or run things.
add_folder
Delete 1 · Delete, drop, revoke or wipe things.
remove_folder
Not yet classified 1 · We could not tell from the name and description.
reindex
Files it touches
- Any path the agent passes to its tools
Tools (8)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
add_folderRegister a local folder so its documents become searchable. Use this once per folder before searching it. Indexing runs in the background — this returns immediately with the file count found; call index_status to track progress (the first ever index also downloads the embedding model, ~130 MB). `path` must be an absolute path to an existing directory. Optional globs match paths relative to the folder using forward slashes (e.g. include_globs=["docs/**/*.md"], exclude_globs=["drafts/*"]); omit both to index every supported file. Supported types: txt, md, pdf, docx, html. Returns {ok, folder, …
find_similarFind indexed documents most similar in meaning to a given file. Use for "more like this" — e.g. finding related notes, duplicate content, or other documents on the same topic. `path` must be a file inside a registered folder that has already been indexed. Similarity uses stored embeddings (whole-file centroid vs. best-matching chunks), so it works even if the embedding model is not currently loaded. Returns {ok, source, similar: [{path, file_type, score, preview}, ...]}. `score` is cosine similarity (0-1, higher is more similar); `preview` is the best-matching section's heading or opening te…
index_statusReport index health and background indexing progress. Use after add_folder or reindex to check whether indexing has finished, or to diagnose why search results look incomplete (failed files, embeddings unavailable). Cheap to call. Returns {ok, db_path, db_size_bytes, embedding: {model, status}, totals: {folders, files_indexed, files_failed, chunks, chunks_embedded}, indexing: {active, current: {folder, files_done, files_total} | null, queued_folders, recent_jobs}, failed_files: [{path, error}, ...] (up to 10)}. embedding.status is "ready", "not loaded yet ...", or "error: ..." — errors mean …
list_foldersList registered folders with file/chunk counts and last index time. Use this to check what is searchable before calling search, or to find the exact registered path for remove_folder. Returns {ok, folders: [{path, files, failed_files, chunks, added_at, last_indexed_at}, ...]}.
read_fileRead the text of one indexed document, optionally a line range. Use after search to pull full context around a hit. `path` must lie inside a registered folder — anything else is refused (this server never reads outside registered folders). Plain-text formats (txt, md) return the raw file; binary formats (pdf, docx, html) return the extracted text, paragraphs separated by blank lines. `start_line`/`end_line` are 1-based and inclusive; omit both for the whole file. Output is capped at ~100k characters; `truncated` is true if the cap hit, in which case request a narrower line range. Returns {ok…
reindexRefresh the index: pick up new, changed, and deleted files. Use when documents changed on disk since they were indexed. Runs in the background; track with index_status. Incremental by default — unchanged files (by mtime, then content hash) are skipped, files deleted from disk are purged from the index. `folder` limits the refresh to one registered folder (path as shown by list_folders); omit it to refresh all. `force=true` rebuilds every file from scratch regardless of change detection (use after changing chunking or embedding settings). Returns {ok, queued: [folder paths], force}.
remove_folderUnregister a folder and purge all its index data (files, chunks, search index). The documents on disk are untouched — this only forgets them. Any in-progress background indexing of this folder is cancelled. Use list_folders to see what is registered. Returns {ok, folder, files_purged}.
searchSearch all indexed documents and return the most relevant passages. Use this first whenever the user asks about the content of their local documents. `query` is free text; full questions work well in hybrid/ semantic mode, plain keywords in keyword mode. `top_k` (1-50) caps results. `folder` restricts to one registered folder (pass its path as shown by list_folders); `file_type` restricts by extension (e.g. "md"). `mode`: "hybrid" (default — keyword + semantic fused with reciprocal- rank fusion, best for most queries), "keyword" (exact-term BM25, best for identifiers or rare exact words), or …
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 20
- Last commit
- Jul 20, 2026 (3 months ago)
- Last release
- Jul 20, 2026 (3 months ago)
- Last package publish
- Jul 20, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.ribhav-jain/docsonar- Version
- 0.1.1
- Auth
- No auth
- Packages
- pypi docsonar
- License
- MIT
- Repository
- github.com/ribhav-jain/docsonar
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Docsonar MCP server. Agent Mart. https://agentmart.dev/connectors/ribhav-jain-docsonar (last updated 2026-10-24)