statusLABSCO SUMMARY
Summaries are generated in the background, so the answer is already there when the model asks.
The staleness cascade is the clever part: an edit only invalidates dependents when exports or types changed, so re-processing stays small and the index keeps up with you. Everything but the summaries works without any LLM at all, which makes the optional local model a genuine option rather than a prerequisite.
What it is
A codebase index that watches your repo, ranks files by importance, maps dependencies and keeps AI-generated summaries fresh in the background.
What you get
- find_important_files and list_files — top files by importance score with dependency counts, or the full tree
- get_file_summary — summary, concepts, change impact, exports, dependencies and staleness for one file
- find_symbol, find_callers and find_callees — resolve a name to a file and line range, and walk the TS/JS call graph both ways
- search across symbols, summaries, purpose and paths, and list_changed_since a timestamp or git SHA
- get_communities, detect_cycles and get_cycles_for_file — Louvain-clustered modules and circular dependency chains
- status for broker connection, queue depth, LLM progress and watcher state
- scan_all, set_base_directory, set_file_summary, set_file_importance and exclude_and_remove for managing the index
- Importance scores from 0 to 10, based on what depends on a file, what it exports and where it lives
- A Nexus dashboard at localhost:1234 with dependency graphs and per-repo health, auto-discovering every indexed repo on the machine
Requirements
Node.js 22 or higher and npm, plus build tools for native modules — build-essential and python3 on Linux, Xcode command line tools on macOS, Visual Studio Build Tools with the C++ workload on Windows. Clone and run build.sh, which registers it with Claude Code. LLM summaries are optional and need llama-server or any OpenAI-compatible HTTP endpoint; without it, file tracking, dependencies, symbols and call graphs still work. Add .filescope/ to your .gitignore.
Setup effort
Build from source — git clone https://github.com/admica/FileScopeMCP.git
USE CASES
Landing in a new repo
Read the highest-importance files with their dependency counts, then the module clusters.
Checking who depends on a function
Resolve the symbol, then walk callers and callees before you rename anything.
Answering "what does this file do"
Get the summary, concepts, exports and change impact instead of pasting the source.
Untangling circular imports
Detect the cycles across the repo, or just the ones a specific file is caught in.
17 tools
Listed in project docs. Your client may show a different list.
find_important_filesget_file_summarylist_filesfind_symbolfind_callersfind_calleessearchlist_changed_sinceget_communitiesdetect_cyclesget_cycles_for_filescan_allset_base_directoryset_file_summaryset_file_importanceexclude_and_removeBEFORE YOU INSTALL
What to know first
Tools you get
17 tools named in the project's documentation.
Requires
Node.js >= 22
INSTALLATION
Connect your client
You clone and build this one yourself.
Server setup
git clone https://github.com/admica/FileScopeMCP.git
cd FileScopeMCP
./build.sh # installs deps, compiles, registers with Claude CodeMCP Clients
Cursor — macOS/Linux
{
"mcpServers": {
"FileScopeMCP": {
"command": "node",
"args": [
"<YOUR_PATH_TO_FILE_SCOPE_MCP>/dist/mcp-server.js",
"--base-dir=${projectRoot}"
],
"transport": "stdio"
}
}
}Cursor — Windows
{
"mcpServers": {
"FileScopeMCP": {
"command": "node",
"args": [
"C:\\FileScopeMCP\\dist\\mcp-server.js",
"--base-dir=${projectRoot}"
],
"transport": "stdio",
"disabled": false,
"alwaysAllow": []
}
}
}Cursor — WSL
{
"mcpServers": {
"FileScopeMCP": {
"command": "wsl",
"args": [
"-d",
"Ubuntu-24.04",
"/home/<YOUR_USERNAME>/FileScopeMCP/run.sh",
"--base-dir=${projectRoot}"
],
"transport": "stdio",
"disabled": false,
"alwaysAllow": []
}
}
}Hermes Agent
mcp_servers:
filescope:
command: node
args:
- <YOUR_PATH_TO_FILE_SCOPE_MCP>/dist/mcp-server.js
timeout: 120Standalone daemon
node dist/mcp-server.js --daemon --base-dir=<YOUR_BASE_DIR>