Skip to main content
Glama

Языковой сервер MCP

Тесты Go Перейти Отчетная Карточка GoDoc Перейти к версии

Это сервер MCP , который запускает и предоставляет языковой сервер LLM. Не языковой сервер для MCP, что бы это ни было.

Демо

mcp-language-server помогает клиентам с поддержкой MCP легче ориентироваться в кодовых базах, предоставляя им доступ к семантическим инструментам, таким как получение определения, ссылки, переименование и диагностика.

Демо

Related MCP server: Fetch MCP Server

Настраивать

  1. Установите Go : следуйте инструкциям на https://golang.org/doc/install

  2. Установите или обновите этот сервер : go install github.com/isaacphi/mcp-language-server@latest

  3. Установите языковой сервер : следуйте одному из руководств ниже.

  4. Настройте свой MCP-клиент : следуйте одному из руководств ниже.

<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>

Инструменты

  • definition : Извлекает полное определение исходного кода любого символа (функции, типа, константы и т. д.) из вашей кодовой базы.

  • references : находит все использования и ссылки на символ в кодовой базе.

  • diagnostics : предоставляет диагностическую информацию для определенного файла, включая предупреждения и ошибки.

  • hover : отображение документации, подсказок по вводу текста или другой информации, появляющейся при наведении курсора, для указанного местоположения.

  • rename_symbol : переименовать символ в проекте.

  • edit_file : Позволяет вносить множественные текстовые правки в файл на основе номеров строк. Предоставляет более надежный и контекстно-экономичный способ редактирования файлов по сравнению с инструментами редактирования на основе поиска и замены.

О

Эта кодовая база использует отредактированный код из gopls для обработки связи LSP. Подробности см. в ATTRIBUTION. Все здесь покрывается разрешительной лицензией в стиле BSD.

mcp-go используется для связи MCP. Спасибо за вашу службу.

Это бета-версия программного обеспечения. Пожалуйста, дайте мне знать, создав issue, если у вас возникнут какие-либо проблемы или у вас есть предложения любого рода.

Внося вклад

Пожалуйста, делайте PR небольшими и открывайте Issues в первую очередь для чего-то существенного. AI-slop — это нормально, пока он протестирован, проходит проверки и не слишком плохо пахнет.

Настраивать

Клонируйте репозиторий:

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

Для удобства включен файл justfile :

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

Настройте Claude Desktop (или аналогичный) для использования локального двоичного файла:

{
  "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"
      }
    }
  }
}

Перестройте после внесения изменений.

Ведение журнала

Установка переменной среды LOG_LEVEL в значение DEBUG включает подробное протоколирование в stderr для всех компонентов, включая сообщения, поступающие на языковой сервер и получаемые от него, а также журналы языкового сервера.

Взаимодействие с LSP

  • internal/lsp/methods.go содержит сгенерированный код для выполнения вызовов подключенного языкового сервера.

  • internal/protocol/tsprotocol.go содержит сгенерированный код для типов LSP. Я позаимствовал его из исходного кода gopls . Спасибо за вашу службу.

  • LSP позволяет языковым серверам возвращать разные типы для одних и тех же методов. Go это не нравится, поэтому есть несколько уродливых обходных путей в internal/protocol/interfaces.go .

Локальная разработка и моментальные тесты

Есть набор тестов моментальных снимков, который значительно упрощает тестирование изменений в инструментах. Они запускают реальные языковые серверы на фиктивных рабочих пространствах и фиксируют вывод и журналы.

Вам понадобятся установленные локально языковые серверы для их запуска. Есть тесты для go, rust, python и 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

Чтобы обновить снимки, выполните 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