Skip to main content
Glama
developerz-ai

universal-lsp


Dos proyectos en un mismo repositorio, construidos juntos porque uno necesita al otro:

Universal LSP — un servidor de lenguaje C++ único, rápido y de bajo consumo de memoria que cubre muchos lenguajes mediante plugins declarados en Lua. Cada nivel de análisis, incluido el análisis semántico, se ejecuta de forma nativa en un solo proceso. Nunca lanza, hace de proxy ni depende de rust-analyzer, pyright, clangd ni de ningún otro binario o servicio de red. Diseñado para un mundo orientado a terminal y dirigido por agentes: LSP estándar sobre stdio para editores, un front-end MCP para agentes y una CLI de consulta por lotes sin interfaz para CI.

graph-lite — el SQLite de los grafos que faltaba: una biblioteca de grafos de propiedades pequeña, sin dependencias e incrustable que cualquier proyecto puede incorporar con una sola cabecera. Su superficie pública es una ABI en C, por lo que Ruby, JavaScript, Python, Rust, Go y C la incrustan a través de su propio FFI sin necesidad de mantener un envoltorio sincronizado — lo mismo que dio a SQLite su alcance. El LSP es su primer y más exigente consumidor — grafos de llamadas, grafos de importación y relaciones entre símbolos en grandes bases de código, bajo latencia interactiva — pero la API de graph-lite se mantiene libre de todo ese vocabulario, y se impide mecánicamente que lo aprenda.

Estado: pre-implementación. El repositorio, los controles, la documentación y el plan están en su lugar; la fase de construcción 1 (núcleo de graph-lite) es el trabajo actual. Nada de esto se publica todavía. El alcance está en docs/spec.md; el progreso está en los hitos.

Por qué

Hoy cada lenguaje trae su propio servidor, su propio proceso, su propia huella de memoria y su propia idea de lo que cuesta "ir a la definición". Abre cuatro proyectos en cuatro lenguajes y estarás ejecutando una docena de procesos que no comparten nada — sin caché, sin índice, sin grafo de relaciones. Y ninguno de ellos fue diseñado para el cliente que ahora hace la mayor parte de la lectura y edición: un agente de IA que trabaja en una terminal, sin editor adjunto, haciendo ráfagas de cambios directamente en el disco.

Universal LSP es un solo proceso para todo eso. Añadir un lenguaje significa escribir reglas declarativas en Lua, no un nuevo servidor.

Related MCP server: agentmako

Los niveles

Un lenguaje recibe exactamente la profundidad que describen las reglas de su plugin — nunca más, nunca menos, y nunca dependiente de lo que esté instalado en la máquina.

Nivel

Te ofrece

Impulsado por

1 — Sintaxis

resaltado, plegado, esquema, coincidencia de corchetes

una referencia de gramática tree-sitter + archivos de consulta

2 — Estructura

ir a la definición, buscar referencias, renombrar, símbolos del espacio de trabajo

reglas declarativas de ámbito/enlace + callbacks opcionales en Lua puro

3 — Semántica

hover con tipos, diagnósticos de tipos, autocompletado semántico

reglas de tipos declarativas sobre un núcleo nativo compartido de unificación

4 — Relaciones

grafos de llamadas, grafos de importación, radio de impacto, rutas de llamada

salida de los niveles 2/3 materializada en graph-lite

El nivel 4 es lo que un agente realmente quiere: qué llama a esto, transitivamente y qué se rompe si cambio esto — respondido desde un grafo precomputado en lugar de cien lecturas de archivos.

Arquitectura

      editor  ──stdio LSP──┐
      agent   ──MCP────────┤
      CI      ──batch CLI──┘
                           │
                    ┌──────▼──────┐
                    │  shim/cli   │  thin entrypoints, no logic
                    └──────┬──────┘
                           │ unix socket
                  ┌────────▼─────────┐
                  │     daemon       │  one per user, many sessions,
                  │  engine/         │  warm caches, per-workspace state
                  └────┬────────┬────┘
              tree-sitter        │
              + Lua rules        │
                   │             │
              ┌────▼─────┐  ┌────▼─────┐
              │ analysis │──▶ graph-lite│  generic nodes + typed edges
              └──────────┘  └──────────┘  (knows nothing about code)

Las dependencias fluyen en una sola dirección y solo en una: analysis → graph-lite, nunca hacia atrás. Dos guardas de lint y un trabajo de CI de compilación independiente lo mantienen así, porque la alternativa — darse cuenta en el momento de la extracción — es una reescritura.

Inicio rápido

git clone https://github.com/developerz-ai/universal-lsp.git
cd universal-lsp
bin/setup          # prerequisites → configure → link compile_commands.json
bin/check          # the full gate: format, guards, build, tests, sanitizers
bin/dev doctor     # one row per thing that can drift

Requiere CMake ≥ 3.24, Ninja, un compilador de C++20, clang-format y Bun para las herramientas del repositorio. bin/setup indica lo que falta y cómo instalarlo.

Incrustar graph-lite por separado

graph-lite se compila sin conocimiento de este repositorio — eso se verifica en cada PR, para que extraerlo más adelante siga siendo un git mv en lugar de una reescritura:

cmake -S graph-lite -B build/graph-lite -G Ninja
cmake --build build/graph-lite
#include "graph-lite.h"     /* the contract: C linkage, opaque handles, status codes */
#include "graph-lite.hpp"   // C++ ergonomics over the same entry points, header-only
require "ffi"               # and the same from Ruby, JS, Python, Rust, Go
module GraphLite
  extend FFI::Library
  ffi_lib "graph-lite"
  attach_function :graph_lite_version_string, [], :string
end

Una unidad de traducción en C en la suite de pruebas se compila como C y se enlaza, de modo que una cabecera que deje de ser compatible con C falla en nuestra compilación en lugar de en tu integración.

API y modelo de datos: docs/graph-lite/README.md · por qué C: ADR 0004.

Lenguajes en el lanzamiento

TypeScript · JavaScript · Ruby · C · C++ · Lua · Python · Java · Kotlin · Swift · Rust

Los niveles 1 y 2 llegan primero en los once lenguajes — eso es la mayor parte del valor tanto para editores como para agentes. La profundidad del nivel 3 crece por lenguaje a partir de ahí, degradándose a "tipo desconocido" en lugar de a uno incorrecto.

Documentación

Lee

Para

docs/spec.md

el contrato completo del alcance — objetivos, no objetivos, fases de construcción

docs/research/things-to-know.md

los escollos ya pagados por los errores publicados de otras personas

docs/graph-lite/

la biblioteca, escrita como si ya estuviera sola

docs/engine/

codificación de posición, manejo de cambios en el sistema de archivos, diseño del daemon

docs/plugins/authoring.md

enseñarle un nuevo lenguaje

CLAUDE.md

cómo se trabaja en este repositorio — léelo antes de tu primer cambio

Contribuciones

Lee CONTRIBUTING.md y luego CLAUDE.md. Los plugins para lenguajes fuera de los once oficiales no necesitan aprobación ni un lugar en este repositorio — publica un repositorio git y fíjalo.

Licencia

El motor es Apache-2.0. graph-lite es MIT y tiene versionado independiente, deliberadamente: incrustar una sola cabecera nunca debería requerir pensar en la licencia de lo que la hizo crecer.

A
license - permissive license
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Deep code indexing for AI agents. Search symbols, navigate call graphs, explore inheritance, track git history — all via MCP.
    54
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Local-first codebase intelligence engine providing AI coding agents with a typed MCP toolset for understanding and navigating code repositories.
    100
    51
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI clients to perform local code search, indexing, and analysis across Java, JavaScript/TypeScript, .NET/C#, and Python projects through the MCP protocol.
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for local-first code intelligence, providing structural code graph, semantic search, and impact analysis to AI agents.
    2
    MIT

View all related MCP servers

Related MCP Connectors

  • Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.

  • Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.

  • Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/developerz-ai/universal-lsp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server