В последнее время плотно работаю с GithubCopilot как тренер. Команда занимающаяся этим инструментом удивляет каждую неделю. И все же мне всегда хотелось иметь возможность залезть под капот GithubCopilot и строить свои более сложные цепочки трансформаций.
Когда появились в нем возможность добавлять instrictions файл (а потом и файлы) все стало несколько интереснее.
Затем появился MCP протокол и с ним как грибы после дождя начали появляться всевозможные MCP сервера давая тем самым возможность дотянуться из GithubCopilot до любого сервиса.
Но и этого мне мало. Файлы иснтрукций это не детерминированный способ получить желаемое. Выходит новая версия модельки и такой файл приходится повторно файнтюнить чтобы сократить количество галлюцинаций. Да и часто LLM не очень хорошо отрабатывает на текстовых массивах данных - просишь сделать ее что-то конкретное в каком-то файле, а она творчески перерабатывает его добавляя новых артефактов. В построении инструкций хочется вкрапления детеримированной логики.
Как я вышел из ситуации? Ставим python на машину. Размещаем некоторое число python скриптов в корень своего проекта. Прописываем ./.vscode/mcp.json файл. Стартуем там же MCP сервер.
Теперь в GithubCopilot пояились новые tools каждая из которых хорошо расписана и реализована в папке ./mcp_server/tools . Магия в том, что GithubCopilot видит все это как часть проекта, он так же видит примеры реализации тулов.
И если я попрошу его "создай мне tool который будет делать ________", то он за'boilerplate'ит решение очень близко к тому, что мне надо.
Мне останется только принять его правки и перезапустить MCP.
После этого у меня (у GithubCopilot) появится новый детерминируемый tool для производства какой-то полезной логики.
Справилась бы LLM с этой задачей? Не без галлюцинаций. Но если взять задачу по-сложнее, скажем обработать какой-то Excel файл, достать из него данные - тут уже без сторонних билоиотек и MCP tool не обойтись. Но LLM с легкостью может помочь в генерации такого кода. В этом и суть предлагаемого расширения.
В предложенных примерах я использовал разные инструменты как langchain так и самого python. В них смысла не много, только пример использования.
Ключики доступа прописаны в .env файле.
Бери и используй.