1c-lsp-mcp-skill
1с-lsp-mcp-skill
Manager for multiple bsl-language-server instances across 1C projects, usable via MCP or skills with a CLI, no Docker
- 26 ★ on the repository
- Last commit
- LGPL-3.0
Extended access
Why this level
- Runs downloaded binaries and a Java server on the local machine
- Opens local HTTP ports for the web UI and MCP
- Can be installed as a background service
Install
- Works in
- Services
Manual install
../lsp-skill install-pathFirst install a JVM, download a bsl-language-server release and start lsp-skill-server. This command adds the CLI to PATH for skills.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- Runs downloaded binaries and a Java server on the local machine
- Opens local HTTP ports for the web UI and MCP
- Can be installed as a background service
This is third-party code. Review the repository files before installing.
What it does
Runs a separate bsl-language-server for each 1C project and manages them through a web UI. The agent gets syntax diagnostics and code navigation: symbols, definitions, references, incoming and outgoing calls. Access works through two MCP servers or through the 1c-check and 1c-lsp skills that call the lsp-skill CLI.
Who it is for. 1C developers who maintain several configurations and do not want Docker.
Good fit when
- You want the agent to check 1C module syntax
- The agent needs symbol navigation and call hierarchy in standard configurations
- You work on several 1C projects and want indexes kept warm in the background
- Docker is unavailable or unwanted
Not a fit when
- You need refactoring and rename: the project focuses on diagnostics and navigation
- You cannot install a JVM
Example request
Check the syntax of common module ОбщийМодуль1 and show which procedures call the ПолучитьЦену functionMCP
- Transport
- http
- Authentication
- not required
Environment variables
PROJECT_IDrequired- Indexed project ID in .env for skills mode
Limitations
Requires a JVM and a separately downloaded bsl-language-server, tested with v0.29.0. Indexing standard configurations such as УТ, БП and УНФ takes several minutes. bsl-language-server responses are still verbose. File paths must be relative to the project root; absolute paths are rejected.
How to disable. Remove the 1c-lsp-diagnostics and 1c-lsp-navigation MCP servers from mcp.json or the skill folders from .claude/skills, then stop lsp-skill-server. If installed as a service, run lsp-skill-server service uninstall.
FAQ
MCP or skills?
Both provide the same features. Skills need a .env with PROJECT_ID and the CLI on PATH; MCP needs the x-project-id header in the config.
Can a large project get more memory?
Yes, each bsl-language-server instance runs with its own JVM flags and its own configuration file.
Discussion
No questions or reviews yet.
Related
All 1C:Enterprise toolsMCP bridge to BSL Language Server: navigation, diagnostics and refactoring of 1C and OneScript code for agents
An MCP server that exposes the cloud 1C:Napparnik (1C.ai) assistant and a local BSL Language Server to agents in Cursor and other IDEs
A Dockerized MCP server that keeps BSL Language Server running and gives the agent code navigation, diagnostics and refactoring for 1C instead of grep search
A script installs BSL Language Server as a Linux systemd service and, with a flag, opens an MCP endpoint for AI agents
A set of skills, rules and MCP servers for 1C Enterprise 8.3 development where the agent works from real code and docs, not from memory
MCP wrapper for BSL Language Server
BSL MCP Server
A small MCP server that runs BSL Language Server as a JAR file and gives an agent BSL code analysis and formatting as JSON
README in short
The cross-platform app consists of the lsp-skill-server HTTP server with a web UI and the lsp-skill CLI. It runs several bsl-language-server instances with indexing progress, pushes file changes to them and answers diagnostics and navigation requests. Releases include binaries for Windows, Linux and macOS, two skills, a sample mcp.json and sample AGENTS.md files. License is LGPL-3.0.
README badge
Original SKILL.md
---
name: 1c-lsp
description: "Use when developing, reviewing, or debugging 1C:Enterprise 8.3 / BSL code in a repository connected to the local `lsp-skill` service and you need semantic navigation through `bsl-language-server`. Covers `symbols`, `definition`, `references`, `incoming-calls`, `outgoing-calls`, and `workspace-symbols` for configured 1C projects. Prefer this skill over plain text search when you need symbol-aware answers about procedures, functions, variables, common modules, forms, object modules, and cross-file usage in 1C (`1С`) projects."
---
# 1c-lsp
Use the local `lsp-skill` CLI as the primary semantic navigation tool while working on 1C code.
Treat it as a thin wrapper over `bsl-language-server` and LSP. Use it first for symbol-aware navigation, then open the real source files to inspect surrounding code before editing behavior.
## How It Connects
The CLI discovers `PROJECT_ID` from a `.env` file in the current directory or a parent directory, and discovers the server address from `runtime.json`.
If the project is not ready (starting, stopped, error), commands will return an error — handle it when it happens instead of checking upfront. You can run `lsp-skill status` to inspect project state if needed for troubleshooting.
## Output Format
Navigation commands read `use_toon_format` from `lsp-skill` config.
- `false` keeps pretty JSON.
- `true` switches to compact TOON with aliases such as `range -> range_sl/range_sc/range_el/range_ec`, `selectionRange -> selection_range_*`, `location -> location_*`, `targetUri -> target_uri`, `containerName -> container_name`, and inlined `from_*` / `to_*`.
Example:
```text
references[2]{range_ec,range_el,range_sc,range_sl,uri}:
5,1,0,1,"file:///a.bsl"
9,2,4,2,"file:///b.bsl"
```
## Use Safe Coordinates And Paths
Each project has two root paths:
- **`root_path`** — the BSL root where `bsl-language-server` indexes code (e.g. `d:\projects\myproject\1c-src`).
- **`project_root_path`** — the root of the entire project where LLM agents and CLI run from (e.g. `d:\projects\myproject`).
Pass `file_path` **relative to `project_root_path`**. The server resolves the path and verifies it falls inside `root_path` automatically.
- Do not use absolute paths. The server rejects absolute or escaping paths.
- Preserve the exact directory names, including Cyrillic segments.
- Convert editor coordinates carefully: LSP `line` and `character` are zero-based.
- Re-check the exact symbol position before calling `definition` or `references`. Off-by-one mistakes are common when converting from editors or code review comments.