Skip to main content
Glama

MCP Language Server

MCP-Sprachserver

Dies ist ein MCP -Server, der einen Sprachserver für LLMs ausführt und bereitstellt. Kein Sprachserver für MCP, was auch immer das sein mag.

Demo

mcp-language-server erleichtert MCP-fähigen Clients die Navigation in Codebasen, indem es ihnen Zugriff auf semantische Tools wie „Definition abrufen“, „Referenzen“, „Umbenennen“ und „Diagnose“ gewährt.

Demo

Aufstellen

  1. Installieren Sie Go : Folgen Sie den Anweisungen unter https://golang.org/doc/install
  2. Installieren oder aktualisieren Sie diesen Server : go install github.com/isaacphi/mcp-language-server@latest
  3. Installieren Sie einen Sprachserver : Folgen Sie einer der folgenden Anleitungen
  4. Konfigurieren Sie Ihren MCP-Client : Folgen Sie einer der folgenden Anleitungen
<p><strong>Note</strong>:</p> <ul> <li>Replace <code>/path/to/your/clangd_binary</code> with the actual path to your clangd executable.</li> <li><code>--compile-commands-dir</code> should point to the directory containing your <code>compile_commands.json</code> file (e.g., <code>./build</code>, <code>./cmake-build-debug</code>).</li> <li>Ensure <code>compile_commands.json</code> is generated for your project for clangd to work effectively.</li> </ul>

Werkzeuge

  • definition : Ruft die vollständige Quellcodedefinition jedes Symbols (Funktion, Typ, Konstante usw.) aus Ihrer Codebasis ab.
  • references : Lokalisiert alle Verwendungen und Referenzen eines Symbols im gesamten Code.
  • diagnostics : Bietet Diagnoseinformationen für eine bestimmte Datei, einschließlich Warnungen und Fehlern.
  • hover : Zeigt Dokumentation, Typhinweise oder andere Hover-Informationen für einen bestimmten Ort an.
  • rename_symbol : Benennen Sie ein Symbol projektweit um.
  • edit_file : Ermöglicht die Bearbeitung mehrerer Textdateien anhand von Zeilennummern. Bietet eine zuverlässigere und kontextsparendere Methode zum Bearbeiten von Dateien im Vergleich zu Such- und Ersetzungswerkzeugen.

Um

Diese Codebasis nutzt bearbeiteten Code von gopls zur LSP-Kommunikation. Weitere Informationen finden Sie unter ATTRIBUTION. Alle hier aufgeführten Informationen unterliegen einer freizügigen BSD-Lizenz.

mcp-go wird für die MCP-Kommunikation verwendet. Vielen Dank für Ihren Einsatz.

Dies ist eine Beta-Software. Bitte informieren Sie mich, wenn Sie auf Probleme stoßen oder Vorschläge haben, indem Sie ein Problem melden.

Beitragen

Bitte halten Sie die PRs klein und öffnen Sie zuerst Probleme für alles Wesentliche. KI-Schlamm ist in Ordnung, solange er getestet wird, die Prüfungen besteht und nicht zu übel riecht.

Aufstellen

Klonen Sie das Repo:

git clone https://github.com/isaacphi/mcp-language-server.git cd mcp-language-server

Zur Vereinfachung ist eine Justfile enthalten:

just -l Available recipes: build # Build check # Run code audit checks fmt # Format code generate # Generate LSP types and methods help # Help install # Install locally snapshot # Update snapshot tests test # Run tests

Konfigurieren Sie Ihren Claude Desktop (oder ähnliches) für die Verwendung der lokalen Binärdatei:

{ "mcpServers": { "language-server": { "command": "/full/path/to/your/clone/mcp-language-server/mcp-language-server", "args": [ "--workspace", "/path/to/workspace", "--lsp", "language-server-executable" ], "env": { "LOG_LEVEL": "DEBUG" } } } }

Nach Änderungen neu erstellen.

Protokollierung

Wenn Sie die Umgebungsvariable LOG_LEVEL auf DEBUG setzen, wird die ausführliche Protokollierung in stderr für alle Komponenten aktiviert, einschließlich Nachrichten an und vom Sprachserver und den Protokollen des Sprachservers.

LSP-Interaktion

  • internal/lsp/methods.go enthält generierten Code zum Tätigen von Aufrufen an den verbundenen Sprachserver.
  • internal/protocol/tsprotocol.go enthält generierten Code für LSP-Typen. Ich habe diesen aus dem Quellcode von gopls übernommen. Vielen Dank für Ihren Einsatz.
  • LSP ermöglicht es Sprachservern, für dieselben Methoden unterschiedliche Typen zurückzugeben. Go mag das nicht, daher gibt es einige unschöne Workarounds in internal/protocol/interfaces.go .

Lokale Entwicklung und Snapshot-Tests

Es gibt eine Snapshot-Testsuite, die das Ausprobieren von Tool-Änderungen erheblich vereinfacht. Diese führen tatsächliche Sprachserver auf simulierten Arbeitsbereichen aus und erfassen Ausgaben und Protokolle.

Zum Ausführen benötigen Sie lokal installierte Sprachserver. Es gibt Tests für Go, Rust, Python und Typescript.

integrationtests/ ├── tests/ # Tests are in this folder ├── snapshots/ # Snapshots of tool outputs ├── test-output/ # Gitignored folder showing the final state of each workspace and logs after each test run └── workspaces/ # Mock workspaces that the tools run on

Um Snapshots zu aktualisieren, führen Sie UPDATE_SNAPSHOTS=true go test ./integrationtests/...

-
security - not tested
A
license - permissive license
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Führt einen Sprachserver aus und stellt Tools für die Kommunikation mit ihm bereit. Sprachserver eignen sich hervorragend für Aufgaben, mit denen LLMs oft zu kämpfen haben, wie z. B. das präzise Verständnis von Typen, das Verständnis von Beziehungen und die Bereitstellung präziser Symbolreferenzen.

  1. Demo
    1. Aufstellen
      1. Werkzeuge
        1. Um
          1. Beitragen
            1. Aufstellen
            2. Protokollierung
            3. LSP-Interaktion
            4. Lokale Entwicklung und Snapshot-Tests

          Related MCP Servers

          • -
            security
            A
            license
            -
            quality
            This is a server that lets your LLMs (like Claude) talk directly to your BigQuery data! Think of it as a friendly translator that sits between your AI assistant and your database, making sure they can chat securely and efficiently.
            Last updated -
            1
            241
            81
            JavaScript
            MIT License
          • A
            security
            A
            license
            A
            quality
            This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.
            Last updated -
            1
            56,813
            Python
            MIT License
            • Linux
            • Apple
          • -
            security
            F
            license
            -
            quality
            A TypeScript-based server that provides a memory system for Large Language Models (LLMs), allowing users to interact with multiple LLM providers while maintaining conversation history and offering tools for managing providers and model configurations.
            Last updated -
            20
            JavaScript
            • Apple
          • -
            security
            F
            license
            -
            quality
            This server provides an API to query Large Language Models using context from local files, supporting various models and file types for context-aware responses.
            Last updated -
            1
            TypeScript

          View all related MCP servers

          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/isaacphi/mcp-language-server'

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