get_call_tree
(v0.23.0) Call tree from a root function up to maxdepth (default 3). direction: callees/down (downstream) or callers/up. Flat edge list [{caller, callee, line, depth, path}] ((v0.35.0) path = source file of each edge) + nested {name, children} tree; maxnodes cap
How to use it
get_call_tree is exposed by the Code Index MCP MCP server. Add the server to your MCP client (Claude Desktop, Cursor, Windsurf and others), and the get_call_tree tool becomes available to the model automatically. See the full listing for setup details and every tool this server provides.
Install Code Index MCP
npx @regsorm/code-index-mcp serve --path /path/to/your/repoOther tools in Code Index MCP (30)
Arbitrary read-only SQL (v0.21.0): a SELECT/WITH query over the repo's index.db for the long tail of metadata/graph questions that have no dedicated tool (roles/RLS, joins, aggregations). Guard: SELECT/WITH only + Statement::readonly() + row cap + timeout. Tables: metadataobjects, metadatamodules, m
Data-links graph (v0.10.0): chain of reference links from one object to another (BFS over datalinks, like findpath but for data, not calls)
(v0.23.0) Shortest path in the call graph between two functions from→to (iterative cycle-safe BFS over unique calls nodes, maxdepth=5, any language). Returns path edges [{caller, callee, line}]
Call-chain between two procedures via proccallgraph (recursive CTE, maxdepth=3). BSL-specific variant of the universal findpath — proccallgraph carries calltype and procedure keys. (v0.35.0) from/to and procedure keys are <relpath>::<name> (a bare name is accepted for unresolved leaves); walks by re
Impact map (v0.21.0): everything that references an object, in one call — reverse datalinks (structural refs from metadata) + metadatacodeusages (usages in .bsl code) + rolerights (roles holding rights on it), broken down by kind with samples (limit)
Search everywhere (functions, classes, variables, imports)
What does this function call? (v0.35.0) each row carries the source path
Who calls this function? (v0.35.0) each row carries the caller's source path (distinguishes same-named callers from different files)
Get class by exact name (case-insensitive fallback; (v0.44.0) on 0 matches returns didyoumean with similar names)
Data-links graph (v0.10.0): what an object references / what references it, via reference-typed attributes, register dimensions and tabular-section attributes (datalinks table). direction=out\
All event subscriptions from EventSubscriptions/.xml. Filters: handler module, event (Russian or English platform enum — OnWrite→ПриЗаписи), source — by source object (Document.X/DocumentObject.X/short name, v0.31.0). Unknown parameters are rejected with the list of valid filters; default limit 50 (
Complete file map without reading source
Managed-form event handlers by (ownerfullname, formname). Owner accepted in both formats — Document.X and export-folder Documents.X (v0.31.0). For typical document form returns ~120 (event, handler) pairs; unknown form → error with availableforms of the owner
Get function by exact name (case-insensitive fallback; (v0.44.0) on 0 matches returns didyoumean with similar names)
Imports by module or file
Object passport in one call (v0.21.0): the full portrait of an object — structure + forms + modules + data links — instead of a series of getobjectstructure/getformhandlers/getdatalinks. The sections parameter (['structure'\
Full structure of a 1C metadata object by fullname (Document.SalesInvoice): attributes with 1C-notation types (+synonym — UI label, +required — fill checking, v0.32.0; +indexing — indexing flag Index/IndexWithAdditionalOrder, v0.45.1), tabular sections with columns, register dimensions/resources; en
Register recorders / document movements (v0.16.0): for a register (AccumulationRegister.Stock) returns writers — documents writing movements; for a document — writesto (target registers). From the declarative <RegisterRecords> set (recorder edges of datalinks). One call covers both directions
Index statistics
Substring or regex search in function/class bodies. Returns matchlines (first 3 line numbers) and matchcount (total, if > 3). v0.7.0: optional pathglob, contextlines
(v0.8.0) Regex search over code-file content (.py, .bsl, .rs, .ts, etc.) via filecontents table (zstd-decode in Rust). Same parameters as greptext: regex, pathglob?, language?, limit?, contextlines?. Complements grepbody (which searches only inside function/class bodies). Oversize files are skipped
(v0.7.0) Regex search over text-file content (REGEXP). Closes the FTS5 special-character gap. Optional pathglob, language, contextlines. Hard-cap 1 MB on response size
MCP server health and connected repos
(v0.7.0) Flat file listing with optional pattern (glob like /.py), pathprefix, language, limit
(v0.7.0) Read content of a file. Optional linestart/lineend (1-based, inclusive). Soft-cap 5000 lines or 500 KB, hard-cap 2 MB. (v0.8.0) works for code files too (.py, .bsl, .rs, .ts, etc.) — content stored in filecontents table (zstd). Oversize files (default > 5 MB) return oversize: true with an e
Full-text search across classes
Full-text search across functions (name, docstring, body)
Meaning-based procedure search (v0.30.0): terms are filled mechanically at index time — words of the procedure name (CamelCase split), the owner object's name and synonym, the comment above the procedure; no LLM needed. Trigram FTS: word forms and 3+ character substrings work, case and ё/е are irrel
Full-text search across text files
(v0.7.0) Metadata of a single file: exists, size, mtime, language, linestotal, contenthash, indexedat, category (text/code). (v0.8.0) adds oversize: bool for code files