# monaco-languageclient

> Monaco Language client implementation

Latest version **10.7.0** (published 2026-02-04) · MIT license · 0 weekly downloads

## Install

```sh
npm install monaco-languageclient
pnpm add monaco-languageclient
yarn add monaco-languageclient
bun add monaco-languageclient
```

## Health

**Score 60/100 (C)** — status: stable.

Positive: has types; esm support; no vulnerabilities; high maintenance score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 10.7.0 |
| Published | 2026-02-04 |
| First published | 2017-04-18 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=20.10.0 |
| Dependencies | 34 |
| Unpacked size | 298.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1366 |
| Author | TypeFox GmbH |
| Maintainers | typefox-team, kaisalmen |

## Links

- npm: https://www.npmjs.com/package/monaco-languageclient
- Repository: https://github.com/TypeFox/monaco-languageclient
- Homepage: https://github.com/TypeFox/monaco-languageclient/blob/main/packages/client/README.md
- Issues: https://github.com/TypeFox/monaco-languageclient/issues
- npm.io page: https://npm.io/package/monaco-languageclient

## Dependencies (34)

- [vscode](https://npm.io/package/vscode.md) npm:@codingame/monaco-vscode-extension-api@^25.1.2
- [vscode-ws-jsonrpc](https://npm.io/package/vscode-ws-jsonrpc.md) ~3.5.0
- [vscode-languageclient](https://npm.io/package/vscode-languageclient.md) ~9.0.1
- [@codingame/monaco-vscode-api](https://npm.io/package/@codingame/monaco-vscode-api.md) ^25.1.2
- [vscode-languageserver-protocol](https://npm.io/package/vscode-languageserver-protocol.md) ~3.17.5
- [@codingame/monaco-vscode-editor-api](https://npm.io/package/@codingame/monaco-vscode-editor-api.md) ^25.1.2
- [@codingame/monaco-vscode-extension-api](https://npm.io/package/@codingame/monaco-vscode-extension-api.md) ^25.1.2
- [@codingame/monaco-vscode-language-pack-cs](https://npm.io/package/@codingame/monaco-vscode-language-pack-cs.md) ^25.1.2
- [@codingame/monaco-vscode-language-pack-de](https://npm.io/package/@codingame/monaco-vscode-language-pack-de.md) ^25.1.2
- [@codingame/monaco-vscode-language-pack-es](https://npm.io/package/@codingame/monaco-vscode-language-pack-es.md) ^25.1.2
- [@codingame/monaco-vscode-language-pack-fr](https://npm.io/package/@codingame/monaco-vscode-language-pack-fr.md) ^25.1.2
- [@codingame/monaco-vscode-language-pack-it](https://npm.io/package/@codingame/monaco-vscode-language-pack-it.md) ^25.1.2
- [@codingame/monaco-vscode-language-pack-ja](https://npm.io/package/@codingame/monaco-vscode-language-pack-ja.md) ^25.1.2
- [@codingame/monaco-vscode-language-pack-ko](https://npm.io/package/@codingame/monaco-vscode-language-pack-ko.md) ^25.1.2
- [@codingame/monaco-vscode-language-pack-pl](https://npm.io/package/@codingame/monaco-vscode-language-pack-pl.md) ^25.1.2
- [@codingame/monaco-vscode-language-pack-ru](https://npm.io/package/@codingame/monaco-vscode-language-pack-ru.md) ^25.1.2
- [@codingame/monaco-vscode-language-pack-tr](https://npm.io/package/@codingame/monaco-vscode-language-pack-tr.md) ^25.1.2
- [@codingame/monaco-vscode-language-pack-pt-br](https://npm.io/package/@codingame/monaco-vscode-language-pack-pt-br.md) ^25.1.2
- [@codingame/monaco-vscode-log-service-override](https://npm.io/package/@codingame/monaco-vscode-log-service-override.md) ^25.1.2
- [@codingame/monaco-vscode-language-pack-zh-hans](https://npm.io/package/@codingame/monaco-vscode-language-pack-zh-hans.md) ^25.1.2
- [@codingame/monaco-vscode-language-pack-zh-hant](https://npm.io/package/@codingame/monaco-vscode-language-pack-zh-hant.md) ^25.1.2
- [@codingame/monaco-vscode-language-pack-qps-ploc](https://npm.io/package/@codingame/monaco-vscode-language-pack-qps-ploc.md) ^25.1.2
- [@codingame/monaco-vscode-model-service-override](https://npm.io/package/@codingame/monaco-vscode-model-service-override.md) ^25.1.2
- [@codingame/monaco-vscode-theme-service-override](https://npm.io/package/@codingame/monaco-vscode-theme-service-override.md) ^25.1.2
- [@codingame/monaco-vscode-views-service-override](https://npm.io/package/@codingame/monaco-vscode-views-service-override.md) ^25.1.2
- [@codingame/monaco-vscode-editor-service-override](https://npm.io/package/@codingame/monaco-vscode-editor-service-override.md) ^25.1.2
- [@codingame/monaco-vscode-monarch-service-override](https://npm.io/package/@codingame/monaco-vscode-monarch-service-override.md) ^25.1.2
- [@codingame/monaco-vscode-textmate-service-override](https://npm.io/package/@codingame/monaco-vscode-textmate-service-override.md) ^25.1.2
- [@codingame/monaco-vscode-languages-service-override](https://npm.io/package/@codingame/monaco-vscode-languages-service-override.md) ^25.1.2
- [@codingame/monaco-vscode-workbench-service-override](https://npm.io/package/@codingame/monaco-vscode-workbench-service-override.md) ^25.1.2
- [@codingame/monaco-vscode-extensions-service-override](https://npm.io/package/@codingame/monaco-vscode-extensions-service-override.md) ^25.1.2
- [@codingame/monaco-vscode-localization-service-override](https://npm.io/package/@codingame/monaco-vscode-localization-service-override.md) ^25.1.2
- [@codingame/monaco-vscode-configuration-service-override](https://npm.io/package/@codingame/monaco-vscode-configuration-service-override.md) ^25.1.2
- [@codingame/monaco-vscode-theme-defaults-default-extension](https://npm.io/package/@codingame/monaco-vscode-theme-defaults-default-extension.md) ^25.1.2

## Recent versions

- 10.7.0 (latest) — 2026-02-04
- 11.0.0-next.1 (next) — 2026-07-16
- 2.0.0-dev.1 (dev) — 2022-06-14
- 11.0.0-next.0 — 2026-07-13
- 10.6.0 — 2026-01-14
- 10.5.0 — 2025-12-23
- 10.5.0-next.1 — 2025-12-22
- 10.5.0-next.0 — 2025-12-19
- 10.4.0 — 2025-11-26
- 10.4.0-next.2 — 2025-11-21
- 10.4.0-next.1 — 2025-11-20
- 10.3.0 — 2025-11-16
- 10.3.0-next.6 — 2025-11-13
- 10.3.0-next.5 — 2025-11-13
- 10.3.0-next.4 — 2025-11-13
- … 249 more at https://npm.io/package/monaco-languageclient/versions

## README

# Monaco Language Client

[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?longCache=true)](https://github.com/TypeFox/monaco-languageclient/labels/help%20wanted)
[![monaco-languageclient](https://github.com/TypeFox/monaco-languageclient/actions/workflows/actions.yml/badge.svg)](https://github.com/TypeFox/monaco-languageclient/actions/workflows/actions.yml)
[![NPM Version](https://img.shields.io/npm/v/monaco-languageclient.svg)](https://www.npmjs.com/package/monaco-languageclient)
[![NPM Download](https://img.shields.io/npm/dt/monaco-languageclient.svg)](https://www.npmjs.com/package/monaco-languageclient)

Module to connect [Monaco editor](https://microsoft.github.io/monaco-editor/) with [language servers](https://microsoft.github.io/language-server-protocol/).

## CHANGELOG

All changes are noted in the [CHANGELOG](https://github.com/TypeFox/monaco-languageclient/blob/main/packages/client/CHANGELOG.md).

## Official documentation, quick start and examples

This is npm package is part of the [monaco-languageclient mono repo](https://github.com/TypeFox/monaco-languageclient).

You find detailed information in the [official documentation](https://github.com/TypeFox/monaco-languageclient/blob/main/docs/index.md).

If interested, check [quick start for local development](<https://github.com/TypeFox/monaco-languageclient#getting-started>).

A detailed list of examples is contained in the GitHub repository, please see [this listing](<https://github.com/TypeFox/monaco-languageclient#examples-overview>).

## Version 10: A toolbox for language client applications

Since Version 2 this library relied on [@codingame/monaco-vscode-api](https://github.com/CodinGame/monaco-vscode-api) to supply the VSCode API (see [Important Project Changes](https://github.com/TypeFox/monaco-languageclient/blob/main/docs/versions-and-history.md#important-project-changes)). `monaco-vscode-api` has evolved substantially since then and thesedays provides 100+ packages with additional services, default extensions and language packs allowing you to create VSCode Web compatible applications.

Since `monaco-langaugeclient` version `10` all building blocks for complete web applications are contained in this package. The biggest deviation from the previous major versions is that the handling of monaco-vscode-api, the handling of language clients and the single editor app functionality are now very clearly separated. Instead of supplying an independent npm module (monaco-editor-wrapper), almost all useful pieces of code were moved here and the different functionalities are exposed via domain specific sub-exports:

- **vscodeApiWrapper**: Contains MonacoVscodeApiWrapper used to handle everything regarding monaco-vscode-api
- **lcwrapper**: LanguageClientWrapper & LanguageClientsManager help to control one or multiple language clients
- **editorApp**: EditorApp is used to control a single monaco-editor

### Usage

The `monaco-vscode-api` initialization and start-up can only and must been only done once within an applications' lifecycle. Everything else cab be repeated. If you use TypeScript all configuration is fully typed.

```typescript
import * as vscode from 'vscode';
// Import Monaco Language Client components
import { EditorApp, type EditorAppConfig } from 'monaco-languageclient/editorApp';
import { configureDefaultWorkerFactory } from 'monaco-languageclient/workerFactory';
import { MonacoVscodeApiWrapper, type MonacoVscodeApiConfig } from 'monaco-languageclient/vscodeApiWrapper';
import { LanguageClientWrapper, type LanguageClientConfig } from 'monaco-languageclient/lcwrapper';

async function createEditorAndLanguageClient() {
    const languageId = 'mylang';
    const code = '// initial editor content';
    const codeUri = '/workspace/hello.mylang';

    // Monaco VSCode API configuration
    const vscodeApiConfig: MonacoVscodeApiConfig = {
        $type: 'extended',
        viewsConfig: {
            $type: 'EditorService'
        },
        userConfiguration: {
            json: JSON.stringify({
                'workbench.colorTheme': 'Default Dark Modern',
                'editor.wordBasedSuggestions': 'off'
            })
        },
        monacoWorkerFactory: configureDefaultWorkerFactory
    };

    // Language client configuration
    const languageClientConfig: LanguageClientConfig = {
        languageId: languageId,
        connection: {
            options: {
                $type: 'WebSocketUrl',
                // at this url the language server for myLang must be reachable
                url: 'ws://localhost:30000/myLangLS'
            }
        },
        clientOptions: {
            documentSelector: [languageId],
            orkspaceFolder: {
                index: 0,
                name: 'workspace',
                uri: vscode.Uri.file('/workspace')
            }
        }
    };

    // editor app / monaco-editor configuration
    const editorAppConfig: EditorAppConfig = {
        codeResources: {
            main: {
                text: code,
                uri: codeUri
            }
        }
    };

    // Create the monaco-vscode api Wrapper and start it before anything else
    const apiWrapper = new MonacoVscodeApiWrapper(vscodeApiConfig);
    await apiWrapper.start();

    // Create language client wrapper
    const lcWrapper = new LanguageClientWrapper(languageClientConfig);
    await lcWrapper.start();

    // Create and start the editor app
    const editorApp = new EditorApp(editorAppConfig);
    const htmlContainer = document.getElementById('monaco-editor-root')!;
    await editorApp.start(htmlContainer);
}

createEditorAndLanguageClient().catch(console.error);
```

## License

[MIT](https://github.com/TypeFox/monaco-languageclient/blob/main/packages/client/LICENSE)

---
_Source: https://npm.io/package/monaco-languageclient · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
