• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

karellen / karellen-lsp-mcp / 24054729137 / 4
72%
master: 72%

Build:
DEFAULT BRANCH: master
Ran 06 Apr 2026 10:40PM UTC
Files 10
Run time 0s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

06 Apr 2026 10:39PM UTC coverage: 71.003% (-0.7%) from 71.724%
24054729137.4

push

github

web-flow
[release] Add Python and Rust language support (#30)

## Summary

- Add Python (pyright) and Rust (rust-analyzer) as fully supported
languages with autodetection, adapters, normalizers, and native LSP
proxy support
- Refactor LspClient to write queue architecture, fixing a deadlock
where server-initiated requests blocked the read loop on stdin drain
- Add debug logging infrastructure with adapter-provided server labels
and `LSP_MCP_SERVER_DEBUG` env var for per-server verbose logging
- Add timeout guards across the daemon and LspClient to prevent hangs

## Details

**Python support:**
- Pyright Node.js langserver launched directly (bypasses Python wrapper)
- Autodetects PyBuilder, pyproject.toml, setup.py, setup.cfg, Pipfile,
requirements.txt
- Virtual environment detection: venv, virtualenv, conda (pyvenv.cfg /
conda-meta)
- Source path configuration pushed via
`workspace/didChangeConfiguration` for non-standard layouts (e.g.
PyBuilder `src/main/python/`)
- `pip install karellen-lsp-mcp[pyright]`

**Rust support:**
- rust-analyzer with Cargo.toml detection, workspace root walk-up,
workspace member glob expansion
- build.rs and rust-toolchain detection
- `rustup component add rust-analyzer`

**Architecture improvements:**
- `ProgressNormalizer` base class extracted from `ClangdNormalizer` for
shared `$/progress` tracking
- All LspClient writes go through `asyncio.Queue` consumed by a single
writer task; read loop never blocks on writes
- Writer loop fails all pending futures on exit
- Fix false Java detection from Python SDKs in JetBrains
`.idea/misc.xml`
- 5s stdin drain kill, 60s file open/registration timeouts, 30s daemon
response write timeout

**Tested on:**
- PyBuilder (Python) — hover, definition, references, workspace symbols,
document symbols, diagnostics, call hierarchy all working
- Embedded Rust project — document symbols, definition working
- MariaDB Server polyglot (C++/Java/Python/Rust) — all four languages
registered and queried simult... (continued)

896 of 1426 branches covered (62.83%)

Branch coverage included in aggregate %.

2706 of 3647 relevant lines covered (74.2%)

0.74 hits per line

Source Files on job 24054729137.4
  • Tree
  • List 10
  • Changed 7
  • Source Changed 0
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 24054729137
  • e831dcb2 on github
  • Prev Job for on master (#23788025273.2)
  • Next Job for on master (#24255899492.1)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc