Vectr
Semantic codebase search + persistent working memory for AI code editors.
Connector by swapnanil · 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/swapnanil-vectr
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
- 7 read · 5 write · 4 delete · 7 not yet classified
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 23
Read from the source code; the running server may list different tools.
Read 7 · Look things up without changing anything.
vectr_distillvectr_fetchvectr_recallvectr_searchvectr_snapshotvectr_snapshot_listvectr_status
Write 5 · Create, change, send or run things.
vectr_anchorvectr_ingest_tracesvectr_map_savevectr_pinvectr_remember
Delete 4 · Delete, drop, revoke or wipe things.
vectr_evict_hintvectr_forgetvectr_revokevectr_unanchor
Not yet classified 7 · We could not tell from the name and description.
vectr_locatevectr_mapvectr_promotevectr_reinstatevectr_resumevectr_supersedevectr_trace
Tools (23)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
vectr_anchorAttach file paths to an EXISTING note so future changes to those files can flag the note as possibly-stale (UPG-ANCHOR-ATTACH). The single-call replacement for re-storing with anchors=[...] and supersedes=<note_id> when you notice afterwards that a note is about a specific process/config file. Anchors are staleness probes, never a claim that the note is wrong: on the next staleness check, a changed anchor means the process MAY have changed. Idempotent — paths already attached are reported back, not duplicated.
vectr_distillReview pending arcs — discovered failure->success moments captured automatically from your own tool calls (e.g. a command that failed twice, then succeeded after an edit) — and turn the ones worth keeping into working-memory notes. Call with no arguments to render pending arcs for review, oldest and most-confident first, token-bounded. For each arc worth keeping, call vectr_remember(..., distilled_from=[arc_id]) to persist the lesson as a note (see vectr_remember's own parameters for kind/priority/triggers). For arcs not worth keeping, call vectr_distill(dismiss=[arc_id, ...], reason='...'). D…
vectr_evict_hintLists the code chunks retrieved by THIS session that are safe to drop from context — each is re-fetchable verbatim in one deterministic call, and the response includes the exact vectr_fetch(ids=[...]) re-fetch keys. Use at the exploration → implementation transition, or when context pressure builds. This is the reverse signal in the vectr protocol: the AI saves findings (vectr_remember), vectr signals what it can restore instantly (vectr_evict_hint). NOT needed on short sessions — most useful after many vectr_search/vectr_locate calls.
vectr_fetchDeterministic re-fetch of a code chunk by its exact id — no embedding, no rerank, just the chunk. Every vectr_search/vectr_locate/vectr_trace result carries its chunk's id (the `file:start-end` shown in the result header). Use this to restore a chunk that was cleared from your context (by tool-result eviction, context compaction, or a context-editing tombstone) instead of re-running vectr_search or re-reading the whole file. NOT for finding NEW content — use vectr_search for that.
vectr_forgetDelete working-memory notes. Pass note_id to delete ONE note — the usual case, when a note is stale or superseded (ids are the [#N] shown by vectr_recall). Pass all=true to irreversibly clear EVERY note for this workspace (e.g. after a large refactor). Calling with no arguments deletes nothing. Snapshots are preserved — only active notes are removed.
vectr_ingest_tracesImport runtime trace events into the symbol graph to enrich static call analysis. Use when you have runtime profiling data (Python sys.settrace output, JSON trace logs) that reveals dynamic dispatch patterns the static analyser cannot see: decorators, __getattr__, dependency injection, monkey-patching, etc. Pass a list of trace events: [{caller, callee, caller_file?, caller_line?}, ...]. Dynamic edges are stored with edge_type='dynamic' and appear in vectr_trace results marked "(dynamic)" so you can tell them apart from statically-discovered calls. A caller/callee name that matches no indexed …
vectr_locateUse when you know the SYMBOL NAME but not which file it's in. Returns file path + line number + kind for every matching definition. NOT when you're searching by concept or behaviour — use vectr_search instead. NOT when you want call relationships — use vectr_trace instead. Example: vectr_locate(name='EvaluateSegments') → 'targeting/evaluator.go:45'
vectr_mapUse at the start of a session on an UNFAMILIAR codebase to get a structural overview without reading any files. If a passport has been saved: returns a compact (~300 token) plain-English summary instantly. If not yet saved: returns raw structural metadata (dir tree, languages, frameworks) and instructs you to call vectr_map_save with your synthesised summary. NOT needed if you already know the codebase structure. NOT a substitute for vectr_recall — call vectr_status first to check for prior notes.
vectr_map_saveSave your synthesised codebase summary as the permanent passport. Call this ONLY after vectr_map returned raw metadata — i.e. on your first visit to a codebase. NOT when vectr_map already returned a saved summary (passport already exists). Write a concise plain-English summary: what the codebase does, tech stack, key modules, entry points, domain terms. Aim for ~200-350 tokens. Does NOT overwrite an existing passport by default — if one is already saved, the call is a no-op and returns the existing summary; pass overwrite=true to replace it.
vectr_pinPin a note so it is injected on EVERY future vectr_recall(query=...) call, regardless of the query — never relevance-scored, never dropped for being off-topic. Use for a note that must never be missed by an unlucky query (the same standing-rule role kind='directive' already plays, but for a note you don't want to reclassify as a directive). Pass pinned=false to unpin. Bounded: only a small configured number of directive+pinned notes ever occupy this unconditional tier, so pin sparingly. Equivalent to passing pin=true directly to vectr_remember at write time.
vectr_promoteRaise an auto-captured note's trust class to 'agent' — e.g. after this session has reviewed an auto-captured note and confirmed it still holds. This tool only takes that one step (auto -> agent); it never promotes a note to 'human', because deciding that a person has endorsed something is not the agent's call to make. Human endorsement happens on a user-side surface instead (a CLI/UI a person operates), not through this tool.
vectr_recallRetrieve notes stored earlier in this session or in prior sessions. TWO-TIER RECALL (UPG-RECALL-HIERARCHY): By default returns a crisp one-line index per note (id + kind/priority + title + age) — token-bounded, safe to call broadly. To read a note body: pass note_id=N (expand one note, full body) or detail='full' (all bodies). Use when vectr_status() confirmed notes_count > 0 — notes may have been stored this session or in a previous one; either way they are immediately useful. Pass a targeted query to retrieve only the notes relevant to your current task — do NOT call with no query unless you…
vectr_reinstateReverse a prior vectr_revoke (or a contradicts= write) — the note returns to active state and its original content, not the deterrent block, is shown again.
vectr_rememberSave a working note and recall it on demand in <50ms — whether later this session, through context compaction, or in a future session. Use the moment you discover something non-obvious: a key file path, a call pattern, a gotcha, a partial stub, task progress. Store the actual code or finding — vectr returns it in <50ms; re-reading the file costs tokens and turns. Do NOT store obvious or easily re-derivable facts (e.g. 'the main file is main.py'). For a body over ~2KB, especially code-heavy with quotes/escapes, write it to a file and pass content_file instead of content — long escape-dense stri…
vectr_resumeOne-call 'pick up where you left off': the most recent current-task note, the latest saved snapshot, and any open gotchas with their file anchors. Call at the start of a session or after a gap to reorient without re-reading files or re-deriving state vectr_recall would otherwise need several calls to assemble.
Show 8 more tools
vectr_revokeFlag a stored note as WRONG without deleting it — use when you've confirmed a prior finding no longer holds (contradicted by newer evidence, or you got it wrong the first time). Unlike vectr_forget, the note is not erased: it stays visible on future vectr_recall/session-start as a deterrent — 'previously believed..., revoked..., do not re-derive this without verification' — instead of its original content, so nothing silently repeats the mistake. Reversible with vectr_reinstate. Prefer passing contradicts=<note_id> directly to vectr_remember when you're recording the correction anyway; use thi…
vectr_searchUse when you know WHAT you're looking for but not WHERE it is or WHAT it's called. Hybrid semantic + BM25 search — finds code by concept, behaviour, or description. Returns function/class bodies with file paths and line numbers. NOT when you already know the symbol name — use vectr_locate instead. NOT when you want call relationships — use vectr_trace instead.
vectr_snapshotSeal all current vectr_remember() notes as a named checkpoint. Use when you've stored multiple notes and want to mark a milestone you can return to (e.g. 'auth-refactor-wip', 'segment-targeting-done'). The next time you work on this, vectr_recall will return these notes. NOT required if you only stored 1-2 notes — vectr_recall retrieves all notes regardless.
vectr_snapshot_listList all saved session snapshots for this workspace, newest first. Use at session start to find an existing checkpoint if vectr_recall returned nothing or if you want to resume a specific named session.
vectr_statusReturns index health (files, chunks, embed model) AND notes_count (number of notes stored — earlier in this session or in prior sessions). Call once at the start of any session to decide whether vectr_recall is worth calling: if notes_count > 0, call vectr_recall(query=...) to retrieve relevant notes. If notes_count == 0, skip recall entirely. If your session already shows auto-injected Working Notes (vectr hooks), those ARE the recall output — do not re-call vectr_recall for them. Also useful when vectr_search returns nothing and you suspect indexing is still running.
vectr_supersedeRetire an ALREADY-STORED note as superseded, when you discover only AFTER writing its replacement that supersedes=<old id> was not passed on that write. The retired note stops appearing in default recall/session-start and renders with a factual '[superseded ...]' badge — it is NOT marked wrong and never shows the revoked deterrent (it was accurate when written; the world moved on). Use vectr_revoke instead when the note is actually FALSE. Pass superseded_by=<note_id> to link the replacement if one exists; omit it to retire with no successor. Reversible with vectr_reinstate.
vectr_traceUse when you know the SYMBOL NAME and need to understand its callers or callees before modifying it. Traverses the call graph in both directions. NOT when you don't know the symbol name yet — use vectr_search or vectr_locate first. NOT when you just want the definition location — use vectr_locate instead. Example: vectr_trace(name='EvaluateSegments') → 'Called by: RequestBid() in bidder/auction.go'
vectr_unanchorRemove file paths from an EXISTING note's anchor set (UPG-ANCHOR-DETACH). The inverse of `vectr_anchor`: use it when you discover a note was anchored to the wrong file, or when the anchored file's relevance has gone away. A removed anchor simply stops being a candidate in the next staleness check — never a claim that the note is wrong. Idempotent — paths the note was never anchored to are reported back, not treated as failures. Path comparison is exact-string on the spelling the note was anchored with, matching `vectr_anchor`'s contract.
Signals
- Stars
- 2
- Forks
- 1
- Open issues
- 0
- Weekly downloads
- 64
- Last commit
- Sep 6, 2026 (1 month ago)
- Last release
- Sep 2, 2026 (1 month ago)
- Last package publish
- Sep 2, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.swapnanil/vectr- Version
- 1.12.0
- Auth
- No auth
- License
- MIT
- Repository
- github.com/swapnanil/vectr
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Vectr MCP server. Agent Mart. https://agentmart.dev/connectors/swapnanil-vectr (last updated 2026-10-24)