BSL CallGraph MCP Server

A local stdio MCP server on Node.js: builds an in-memory call graph over a 1C BSL source export and finds definitions, callers, callees and the impact radius

  • 0 ★ on the repository
  • Last commit
  • MIT
MCP server

Extended access

Why this level

  • Starts a local server that indexes .bsl files and builds a call graph
  • Needs no network and does not execute BSL code
All reasons and checks
Russian stack

shustovm/bsl-callgraph

Install

Manual install

git clone https://github.com/ShustovM/bsl-callgraph.git
cd bsl-callgraph
npm ci
npm test

Installs from source, requires Node.js 22 or 24.

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • Starts a local server that indexes .bsl files and builds a call graph
  • Needs no network and does not execute BSL code

This is third-party code. Review the repository files before installing.

What it does

The server indexes .bsl files in memory and gives an MCP client seven tools: find_symbol and search_symbols to find definitions by exact name or substring, get_callers and get_callees to find calling and called procedures, get_impact to transitively walk a change's impact radius, reindex to rebuild the index after files change, and stats plus server_info for server state and capabilities. Each call is classified as resolved (one known target), ambiguous (several candidates) or dynamic (needs a runtime type), and exact mode returns only resolved edges while exploratory mode shows ambiguous candidates with a confidence note. A stateful lexer recognizes Russian and English Процедура/Procedure and Функция/Function declarations, Асинх/Async and Экспорт/Export, including multiline signatures, and does not turn query text inside strings into graph edges. The analysis is static and deliberately lightweight: not a BSL compiler or full type inference, and results should be treated as navigation evidence, not proof.

Who it is for. For 1C developers who need to quickly estimate a change's impact radius in a large configuration without manually walking through files.

Good fit when

  • You need to find every call site of a procedure before changing it
  • You need an estimate of a change's transitive impact across several levels of depth
  • You need fast navigation through a large BSL export without opening dozens of files

Not a fit when

  • You need exact compiler-grade analysis with full type inference: the tool is static and cannot resolve dynamic dispatch
  • You need analysis of a live database, not a filesystem export of source files

Example request

Find everyone who calls the РассчитатьСумму function and estimate the impact radius of changing it to depth 3

MCP

Transport
stdio
Authentication
not required

Limitations

Dynamic dispatch and values stored in variables do not always resolve to a single target, identical symbol or module names can be ambiguous, and preprocessor behavior, type inference and runtime metadata are not evaluated. The BSL root is set once at startup by the client and cannot be replaced by a tool call. Results carry no guarantee of fixed latency or an exact token-saving ratio.

How to disable. Remove the server registration from the MCP client, for example codex mcp remove bsl-callgraph, and stop the server process; it creates no disk cache to clean up.

FAQ

Can I change the indexed folder without restarting?

No, the root is set once via the launch argument in the client config; the reindex tool only rebuilds the index for the same folder after files change.

What is the difference between exact and exploratory modes?

exact returns only unambiguously resolved calls, while exploratory also shows ambiguous and dynamic candidates with their reason and confidence.

Discussion

No questions or reviews yet.

Russian stack

A Rust-based Language Server for BSL with code diagnostics, incremental analysis and a built-in MCP server for AI agents

MCP serverExtended access117Repository stars
Russian stack

MCP bridge to BSL Language Server: navigation, diagnostics and refactoring of 1C and OneScript code for agents

MCP serverExtended access71Repository stars
Russian stack

A Dockerized MCP server for searching 1C dumps: structural index, call graph and semantic code search

MCP serverExtended access79Repository stars

onec-hbk-bsl: BSL linter and MCP

1C HBK BSL (onec-hbk-bsl)

Russian stack

A BSL CLI linter and formatter with 180 diagnostics, an LSP server for VS Code and Cursor, and MCP tools for local AI assistants

CLIExtended access13Repository stars
Russian stack

A small MCP server that runs BSL Language Server as a JAR file and gives an agent BSL code analysis and formatting as JSON

MCP serverExtended access6Repository stars

1C configuration graph MCP server

1C Configuration MCP Server

Russian stack

An MCP server builds a metadata and call graph from a 1C configuration's XML and BSL export, with optional semantic search via an external embedder and Qdrant

MCP serverExtended access4Repository stars

README in short

The README details the seven tools with their parameters, the resolved/ambiguous/dynamic edge classification, the accuracy limits of static analysis, and a privacy section: parsing happens locally, the server does not execute BSL and needs no network, but MCP responses are seen by the connected client and possibly a remote agent per its policy. It gives source-install commands, configuration for Codex CLI, Claude Code and a generic stdio client with POSIX and Windows examples, and a troubleshooting and uninstall section. Baseline and benchmark scripts measure performance on your own machine. MIT license.

README badge

Report a problem