Myopic
Code-review MCP: review a GitLab MR or GitHub PR against the whole codebase, not just the diff.
Connector by SurajKGoyal · 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/surajkgoyal-myopic
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
- 9 read · 3 write · 0 delete
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 12
Read from the source code; the running server may list different tools.
Read 9 · Look things up without changing anything.
code_searchdependency_impactindex_statusmr_changed_filesmr_diff_linesmr_diff_sectionsmr_review_contextmr_review_statusmr_verify_review
Write 3 · Create, change, send or run things.
index_repomr_post_commentstrace_call_chain
Files it touches
- Any path the agent passes to its tools
Tools (12)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
code_searchHybrid semantic + full-text search over an indexed local repository. Embeds the query via Ollama, then runs a combined vector + FTS search with RRF reranking against the LanceDB index built by index_repo. Use this to find existing patterns, conventions, or examples in the codebase before reviewing a new implementation. Requires a running Ollama (the semantic layer is built in) and index_repo to have been run first. Args: query: Natural language or code snippet describing what to find. root: Absolute path to the repository (must have been indexed first). k: Maximum number of …
dependency_impactFind everywhere a symbol is used in a checked-out repo (the blast radius). The highest-value review signal: before you approve a change to a function, class, or constant, see who depends on it. Uses ripgrep for fast candidate finding, then classifies each usage via tree-sitter AST as call / import / definition / type_reference. Filesystem-based — point it at a LOCAL clone of the repo the MR belongs to, not the MR URL. Args: symbol: Function/class/variable name to trace. root: Absolute path to the local repository clone. file_glob: Optional glob to narrow the search …
index_repoBuild or incrementally refresh a semantic search index for a local repository. Walks the repo, chunks every supported-language file by AST boundaries, embeds the chunks via a local Ollama server, and stores them in a per-repo LanceDB table. After the first build this is INCREMENTAL: only files whose content changed since the last run are re-embedded, so refreshing is cheap — run it freely (e.g. when index_status reports "stale"). A changed embedding model or force=True does a full rebuild. Requires a running Ollama (the semantic layer is built in; run `myopic doctor` to set it up) at MYOPIC_O…
index_statusReport whether a repo's semantic index is fresh, stale, or absent. Freshness is keyed to the git commit the index was built from — if HEAD has moved on, the index is "stale" and reports how many commits behind. Check this before leaning on semantic results (code_search / mr_review_context): if state is "stale" or "model_mismatch", offer to index_repo(root) first. Args: root: Absolute path to the repository. Returns: {state: absent|fresh|stale|model_mismatch|unknown, root, chunks?, indexed_at?, indexed_sha?, current_sha?, commits_behind?, reason?} or {"error": "..."} if the …
mr_changed_filesList the files changed in a merge request with stats — no diff content. The cheap entry point for large reviews: the payload has no diff content, so it stays small even on a very large MR. Each file reports additions/deletions, new/deleted/renamed flags, and a reviewability flag (lockfiles, generated code, binary assets, and enormous single-file changes are marked reviewable=false with a skip_reason). Files are ordered reviewable-first then largest-change-first, so you can batch the highest-value files straight into mr_diff_lines(url, files_filter=[...]). Args: url: Full GitLab merge req…
mr_diff_linesFetch a merge request's diff as structured, line-numbered hunks. Pure data, no LLM. Returns exact file paths, old/new line numbers, and diff content — everything needed to read a change precisely and to compute the diff positions required for inline comments. Token-safe by construction: on a large MR it returns a bounded page of files and lists the rest under "omitted_files" with "truncated": true (never an oversized payload). Noise files (lockfiles, generated, binary) are listed under "skipped_files", not expanded. For unknown-size MRs, call mr_changed_files first, then batch files_filter h…
mr_diff_sectionsFetch a merge request's diff grouped by enclosing function/class, not raw hunks. AST-aware for new files (full tree-sitter chunking) and hunk-context-aware for modified files (declaration pattern + hunk-header hint). All changed lines (add/del) are always included — nothing dropped, only the framing changes. Prefer this over mr_diff_lines on a large MR (many files or a big diff) since grouping by symbol keeps the payload small without truncating mid-function. Token-safe by construction, same guarantees as mr_diff_lines: on a large MR it returns a bounded page of files and lists the rest unde…
mr_post_commentsPost inline review comments to a merge/pull request. WRITE — this mutates the review. The only mutating tool in myopic. Posts each comment one at a time from a queue, immediately visible (no drafts, no bulk-publish), retrying transient failures (HTTP 429/5xx) with exponential backoff — so partial progress survives a failure and self-hosted rate limits are respected. Works on GitLab and GitHub; the backend translates positions. Only call this on the user's explicit request to post — never speculatively. Get exact line numbers first from mr_diff_lines (its lines_filter maps a source line to th…
mr_review_contextGraph-first review context: dependency impact per changed symbol, plus optional semantic enrichment. Extracts the top-N most-frequent identifiers from the MR diff, then for each: 1. Runs dependency_impact(symbol, root) — always, no optional extras needed. 2. If the repo has been indexed via index_repo(root), enriches each symbol with related_patterns from a hybrid semantic search against the codebase. The semantic layer is purely additive: a result with semantic_available=false is complete and actionable — dependency impact already covers the blast radius. Use this as a single-call alt…
mr_review_statusGet a merge request's review status: metadata + discussions + resolution. Pure data, no LLM. Collapses several platform API calls into one snapshot of where the review stands — every discussion thread, what's resolved vs open, general comments, and a lightweight file-change summary. Start here to orient before diving into the diff. Args: url: Full GitLab merge request URL. Returns: {mr_number, title, author, branches, state, merge_status, commits, general_comments, discussions[...], summary{resolved, unresolved, ...}, files_changed[...], stats}
mr_verify_reviewCheck whether each review thread was addressed by nearby diff changes. Joins the review's discussions with its current diff: for every inline comment thread, surfaces the add/del lines within +/-window of the commented line. A thread with no nearby changes is a candidate for "not yet addressed"; one with changes shows exactly what moved near it — a fast re-review pass without re-reading the whole diff. Read-only. Works on GitLab and GitHub (note: GitHub doesn't expose thread resolution via REST, so rely on has_changes there, not the resolved flag). Args: url: Full merge/pull request U…
trace_call_chainTrace a function's callers and callees across a checked-out repo (AST). Complements dependency_impact: where dependency_impact lists every reference, this builds the directed call graph — where the symbol is defined, what it calls, and what calls it — so you can reason about a change's ripple effects. Tree-sitter-based; point it at a LOCAL clone of the repo. Args: symbol: Function or class name to trace. root: Absolute path to the local repository clone. language: Restrict to one language; auto-detects if omitted. max_depth: Levels of callers/callees to follow (defau…
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 4
- Weekly downloads
- 53
- Last commit
- Sep 5, 2026 (1 month ago)
- Last release
- Sep 5, 2026 (1 month ago)
- Last package publish
- Sep 5, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.SurajKGoyal/myopic- Version
- 0.1.11
- Auth
- No auth
- Packages
- pypi myopic
- License
- MIT
- Repository
- github.com/SurajKGoyal/myopic
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from SurajKGoyal
Cite this page
Myopic MCP server. Agent Mart. https://agentmart.dev/connectors/surajkgoyal-myopic (last updated 2026-10-24)