pygls (pronounced like “pie glass”) is a generic implementation of the Language Server Protocol written in the Python programming language. It allows you to write your own language server in just a few lines of code.


  • cross-platform support

  • TCP/IP and STDIO communication

  • runs in asyncio event loop

  • register LSP features and custom commands as:

    • asynchronous functions (coroutines)

    • synchronous functions

    • functions that will be executed in separate thread

  • thread management

  • in-memory workspace with full and incremental document updates

  • type-checking

  • good test coverage

Python Versions

pygls works with Python 3.7.16+.

User Guide