MCPcopy Index your code
hub / github.com/TypeFox/monaco-languageclient

github.com/TypeFox/monaco-languageclient @mlce-2026.2.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release mlce-2026.2.1 ↗ · + Follow
485 symbols 1,462 edges 159 files 26 documented · 5% 3 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Monaco Language Client, VSCode WebSocket Json RPC, Monaco Editor React and examples

Github Pages monaco-languageclient PRs Welcome

monaco-languageclient Version monaco-languageclient Downloads vscode-ws-jsonrpc Version vscode-ws-jsonrpc Downloads monaco-editor-react Version monaco-editor-react Downloads

This repository now host multiple npm packages under one roof:

The examples not requiring a backend are now available via GitHub Pages.

Official Documentation

Since monaco-languageclient version 10 we started to build an official documentation. This will be continuously extended.

Migration Guide

We added a migration guide with the release of monaco-languageclient version 10.

Changelogs, current versions and compatibility table

CHANGELOGs for each project are available from the linked location:

  • CHANGELOG for monaco-languageclient is found here
  • CHANGELOG for vscode-ws-jsonrpc is found here
  • CHANGELOG for @typefox/monaco-editor-react is found here
  • CHANGELOG for monaco-languageclient-examples is found here

Important Project changes and notes about the project's history are found here.

These are the current versions of packages from this repository and their alignment with @codingame/monaco-vscode-api monaco-editor and vscode:

  • monaco-languageclient: 10.7.0 (release date: 2026-02-04)
  • @typefox/monaco-editor-react: 7.7.0 (release date: unrel2026-02-04eased)
  • Aligned with:
  • @codingame/monaco-vscode-[editor]-api: 25.1.2
  • vscode: 1.108.2
  • monaco-editor: 0.55.1
  • vscode-ws-jsonrpc: 3.5.0 (release date: 2025-08-11)

Check find the full compatibility table with all previous versions.

Getting started

We recommend mise-en-place to setup corrects version of required tools like node and npm (described here). If you have mise installed use the optional isntruction below.

On your local machine you can prepare your dev environment as follows. At first it is advised to build everything. Locally, from a terminal do:

# clone the git repository
git clone https://github.com/TypeFox/monaco-languageclient.git
cd monaco-languageclient
# optional: if you have mise installed
mise upgrade
# install npm dependencies
npm i
# Cleans-up, compiles and builds everything
npm run build

Vite dev server

Start the Vite dev server. It serves all client code at localhost. You can go to the index.html and navigate to all client examples from there. You can edit the client example code directly (TypeScript) and Vite ensures it automatically made available:

npm run dev
# OR: this clears the cache and has debug output
npm run dev:debug

As this is a npm workspace the main package.json contains script entries applicable to the whole workspace like watch, build and lint, but it also contains shortcuts for launching scripts from the childe packages like npm run build:examples.

If you want to change the libries and see this reflected directly, then you need to run the watch command that compiles all TypeScript files form both libraries and the examples:

npm run watch

Usage

Please look at the respective section in the packages:

  • Usage for monaco-languageclient is found here
  • Usage for vscode-ws-jsonrpc is found here
  • Usage for @typefox/monaco-editor-react is found here

Examples Overview

The examples demonstrate mutliple things:

  • How monaco-languageclient is use by monaco-edtior-wrapper or @typefox/monaco-editor-react to have an editor that is connected to a language server either running in the browser in a web worker or vscode-ws-jsonrpc. is used to an external process via web-socket.
  • How different language servers can be intergrated in a common way, so they can communicate via web-socket to the front-end running in the browser.

Main Examples

JSON Language client and language server example (Location)

The json-server runs an external Node.js Express app where web sockets are used to enable communication between the language server process and the client web application (see JSON Language Server). The json-client using extended mode as editor app which connects to the language server and therefore requires the node server app to be run in parallel. The json-client using classic mode as editor app which connects to the language server and therefore requires the node server app to be run in parallel.

Python Language client and pyright language server example (Location)

The python-server runs an external Node.js Express app where web sockets are used to enable communication between the language server process and the client web application (see Pyright Language Server). The python-client contains the editor app which connects to the language server and therefore requires the node server app to be run in parallel. It is also possible to use a @typefox/monaco-editor-react app to connect to the server. Both versions now feature a debugger, see here.

Groovy Language client and language server example (Location)

The groovy-server runs an external Java app where web sockets are used to enable communication between the language server process and the client web application (Groovy Language Server). The groovy-client contains the editor app which connects to the language server and therefore requires the node server app to be run in parallel.

Java Language client and language server example (Location)

The java-server runs an external Java app where web sockets are used to enable communication between the language server process and the client web application (Java Language Server). The java-client contains the editor app which connects to the language server and therefore requires the node server app to be run in parallel.

Langium examples (here client and server communicate via vscode-languageserver-protocol/browser instead of a web socket used in the three examples above

Cpp / Clangd (Location)

It contains both the language client and the langauge server (web worker). The clangd language server is compiled to wasm so it can be executed in the browser. Heads up: This is a prototype and still evolving.

Application Playground (Location)

This example uses the view service provider from @codingame/monaco-vscode-editor-api to build an application that utilizes more vscode features. Alternatively, it is possible to use a react version of the app Heads up: This is a prototype and still evolving.

Langium grammar DSL (Location)

It contains both the language client and the langauge server (web worker). Here you can chose beforehand if the wrapper should be started in classic or extended mode.

Statemachine DSL (created with Langium) (Location)

It contains both the language client and the langauge server (web worker). It is also possible to use a @typefox/monaco-editor-react app to connect to the server.

Browser example (Location)

This demonstrates how an editor app can be combined with a language service written in JavaScript. This example can now be considered

Extension points exported contracts — how you extend this code

FileSystemCapabilities (Interface)
(no doc) [2 implementers]
packages/client/src/fs/definitions.ts
IConnection (Interface)
(no doc)
packages/vscode-ws-jsonrpc/src/server/connection.ts
RequiredResources (Interface)
(no doc)
packages/examples/src/clangd/worker/clangd-server.ts
FileSystemEndpoint (Interface)
(no doc) [2 implementers]
packages/client/src/fs/definitions.ts
IWebSocket (Interface)
(no doc)
packages/vscode-ws-jsonrpc/src/socket/socket.ts
LanguageServerRunConfig (Interface)
(no doc)
packages/examples/src/common/node/server-commons.ts
WorkerFactoryConfig (Interface)
(no doc)
packages/client/src/worker/index.ts
IWebSocketConnection (Interface)
(no doc)
packages/vscode-ws-jsonrpc/src/socket/socket.ts

Core symbols most depended-on inside this repo

log
called by 83
packages/vscode-ws-jsonrpc/src/logger.ts
delayExecution
called by 55
packages/client/src/common/utils.ts
start
called by 49
packages/client/src/editorApp/editorApp.ts
dispose
called by 48
packages/client/src/editorApp/editorApp.ts
createDefaultEditorAppConfig
called by 38
packages/wrapper-react/test/support/helper.ts
createEditorAppConfig
called by 31
packages/client/test/support/helper.ts
cleanHtmlBody
called by 31
packages/wrapper-react/test/support/helper.ts
createUrl
called by 28
packages/client/src/common/utils.ts

Shape

Method 198
Function 182
Class 57
Interface 48

Languages

TypeScript99%
Python1%
C++1%
Java1%

Modules by API surface

packages/client/src/editorApp/editorApp.ts30 symbols
packages/examples/src/clangd/worker/clangd-server.ts26 symbols
packages/client/src/vscode/apiWrapper.ts25 symbols
packages/examples/src/json/server/json-server.ts21 symbols
packages/client/src/fs/definitions.ts20 symbols
packages/client/src/wrapper/lcwrapper.ts18 symbols
packages/wrapper-react/src/index.tsx17 symbols
packages/examples/src/clangd/worker/workerRemoteMessageChannelFs.ts16 symbols
packages/examples/src/langium/statemachine/ls/generated/ast.ts12 symbols
packages/examples/src/browser/main.ts12 symbols
packages/client/src/wrapper/lcmanager.ts12 symbols
packages/client/src/fs/endpoints/defaultEndpoint.ts12 symbols

Used by 3 indexed graphs manifest dependencies, hub-wide

For agents

$ claude mcp add monaco-languageclient \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page