MCP Language Server

Integrations

  • Integrates with Python language server (pyright) to provide code intelligence, including definitions, references, diagnostics, and code lens for Python codebases

  • Integrates with Rust language server (rust-analyzer) to provide code intelligence, including definitions, references, diagnostics, and code lens for Rust codebases

  • Integrates with TypeScript language server (tsserver) to provide code intelligence, including definitions, references, diagnostics, and code lens for TypeScript codebases

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

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

Демо

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

Настраивать

  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

hybrid server

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

Запускает языковой сервер и предоставляет инструменты для общения с ним. Языковые серверы отлично справляются с задачами, с которыми часто сталкиваются LLM, например, точное понимание типов, понимание отношений и предоставление точных ссылок на символы.

  1. Демо
    1. Настраивать
      1. Инструменты
        1. О
          1. Внося вклад
            1. Настраивать
            2. Ведение журнала
            3. Взаимодействие с LSP
            4. Локальная разработка и моментальные тесты

          Related MCP Servers

          • -
            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
            A
            license
            -
            quality
            A Model Context Protocol server that integrates with Linear's issue tracking system, allowing LLMs to create, update, search, and comment on Linear issues through natural language interactions.
            Last updated -
            324
            288
            JavaScript
            MIT License
            • Apple
          • -
            security
            A
            license
            -
            quality
            A Model Context Protocol Server that enables LLMs to interact with and execute REST API calls through natural language prompts, supporting GET/PUT/POST/PATCH operations on configured APIs.
            Last updated -
            5
            Python
            Apache 2.0
          • -
            security
            A
            license
            -
            quality
            Bridges Large Language Models with Language Server Protocol interfaces, allowing LLMs to access LSP's hover information, completions, diagnostics, and code actions for improved code suggestions.
            Last updated -
            2
            TypeScript
            MIT License

          View all related MCP servers

          ID: 217llrqnne