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+.