| name | lsp-cross-repo |
| description | Cross-repository analysis — find all callers of a library symbol in one or more consumer repos. Use when refactoring a shared library and need to understand how consumers use it. |
| argument-hint | [symbol-name] in [library-file:line:col] used by [consumer-root ...] |
| user-invocable | true |
| allowed-tools | mcp__lsp__start_lsp mcp__lsp__find_symbol mcp__lsp__get_cross_repo_references mcp__lsp__add_workspace_folder mcp__lsp__list_workspace_folders mcp__lsp__go_to_implementation mcp__lsp__find_callers mcp__lsp__inspect_symbol |
| license | MIT |
| compatibility | Requires the agent-lsp MCP server (github.com/blackwell-systems/agent-lsp) |
| metadata | {"required-capabilities":"referencesProvider","optional-capabilities":"implementationProvider callHierarchyProvider workspaceSymbolProvider"} |
Requires the agent-lsp MCP server.
lsp-cross-repo
Multi-root cross-repo caller analysis for library + consumer workflows. Finds all
usages of a library symbol across one or more consumer codebases in a single call.
Read-only — does not modify any files.
When to use
- Before changing a library API: find all callers in every consumer
- Before deleting a symbol: verify it has no cross-repo dependents
- When a change in repo A might break repo B or C
- Auditing how internal packages are used across services
Use /lsp-impact instead for single-repo blast-radius analysis.
Workflow
Step 1 — Initialize the primary workspace
Start the language server on the library root if not already running:
mcp__lsp__start_lsp({ "root_dir": "/path/to/library" })
Step 2 — Locate the library symbol
Find the symbol's definition to get file_path, line, and column:
mcp__lsp__find_symbol({ "query": "<symbol-name>" })
Pick the result in the library repo (not a test file).
Step 3 — Find all cross-repo references (primary step)
Call get_cross_repo_references with the symbol location and all consumer repo
roots. This adds each consumer as a workspace folder, waits for indexing, runs
find_references across all roots, and returns results partitioned by repo:
mcp__lsp__get_cross_repo_references({
"symbol_file": "/abs/path/to/library/file.go",
"line": <line>,
"column": <column>,
"consumer_roots": [
"/abs/path/to/consumer-a",
"/abs/path/to/consumer-b"
]
})
Returns:
library_references — usages within the library itself
consumer_references — a map of consumer-root → [file:line ...]
warnings — any roots that could not be indexed (check these manually)
Decision after Step 3:
| Result | Action |
|---|
| No consumer refs | Safe to change — verify warnings is empty first |
| Consumer refs found | Run /lsp-impact on each call site before editing |