The YAML Language Server is a Language Server Protocol implementation developed by Red Hat that provides comprehensive YAML editing support for code editors and IDEs. Written in TypeScript, it implements LSP 3.16 and delivers a full suite of YAML development tools including validation, autocompletion, formatting, syntax highlighting, and IntelliSense capabilities.
The server supports JSON Schema validation across multiple drafts including 04, 07, 2019-09, and 2020-12. It uses the eemeli/yaml parser starting from version 1.0.0, which strictly enforces YAML specification compliance. The default YAML specification version is 1.2, though users can configure this via the yaml.yamlVersion setting to use 1.1 if needed.
Core features include comprehensive YAML validation that detects file-level syntax errors and identifies specific issues such as missing nodes, invalid key node types, invalid type assignments, and invalid child nodes. The server also detects warnings for additional properties. Auto-completion functionality works across all commands and can populate scalar nodes with schema defaults when available. Hover support displays node descriptions when available, and document outlining provides a complete structural overview of all nodes in a YAML file.
The repository maintains extensive configuration options for customization. Users can control formatting behavior through settings like singleQuote, bracketSpacing, proseWrap, and printWidth. Schema association is highly flexible, supporting glob pattern matching, relative and absolute paths, multi-root workspace configurations, and nested schema references using URL fragments. The server integrates with external schema sources including the JSON Schema Store and Kubernetes CRD Store, with configurable URLs for both. Custom YAML tags can be defined with specific node types and return types to support domain-specific YAML extensions.
Additional capabilities include suppression of specific diagnostics through inline comments, modeline-based schema association for per-file configuration, and support for Kubernetes-specific features with configurable version targeting. The server provides proxy configuration options for schema downloads and includes performance optimization settings like maxItemsComputed to limit outline symbols and folding regions.
The server is available as an npm package and includes containerized deployment options via quay.io/redhat-developer/yaml-language-server for users preferring container-based installation. It implements Language Server Protocol extensions including SchemaSelectionRequests and SupportSchemaSelection notifications to enable advanced schema management capabilities in compatible clients.