Skip to main content
Glama

MCP-Sprachserver

Go-Tests Gehe zum Zeugnis GoDoc Go-Version

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

Related MCP server: Fetch MCP Server

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

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

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