Skip to content


Repository files navigation

bsp logo Build Server Protocol

Join the chat on Discord

This project is an effort to improve the integration between language server/editors and build tools. This effort is led by the Scala Center and JetBrains, together with the help of other tooling developers in the Scala ecosystem and beyond.

Even though the protocol currently focuses on Scala developer tools, it's designed to be language-agnostic.

You can read the specification here.

The specification text, docs and support libraries for some of the supported languages are automatically generated from the smithy model.


If you'd like to contribute to the protocol, please check out our CONTRIBUTING doc.


Current Maintainers

Past Maintainers

Protocol Changelog

2.2.0 (Unreleased)

  • Add unstable run/printStdout, run/printStderr and run/readStdin notifications
  • Add an optional originId field to TaskStartParams, TaskProgressParams and TaskFinishParams and deprecate it in CompileReport and TestReport to support BSP clients that need to distinguish between multiple reports for the same target.
    • Migration: Use the originId field in TaskFinishParams instead of CompileReport/TestReport to identify the report.
  • Add optional support for environment variables and working directory parameters in buildTarget/run and buildTarget/test requests. Mark arguments and environment variables lists in ScalaMainClass and ScalaTestSuites deprecated as they are replaced by the parameters in the base request.
  • Add cargo (Rust build tool) protocol extension
  • Add Rust protocol extension