Как стать автором
Поиск
Написать публикацию
Обновить

MCP — новый кирпичик в фундаменте AI-разработки

Время на прочтение9 мин
Количество просмотров601
Автор оригинала: Gergely Orosz

Model Context Protocol, расширяющий возможности AI в IDE, стремительно набирает популярность. Почему это происходит — и почему разработчикам стоит обратить на него внимание?

Одна из горячих тем в области AI-кодинг-тулов и developer tooling — протокол MCP (Model Context Protocol), представленный Anthropic в ноябре 2024 года. Он стремительно набирает популярность: AI-модели и инструменты для разработчиков активно внедряют его.

Аналогия для объяснения MCP — это как «порт USB-C для AI-приложений»: он создает универсальную точку расширения, через которую LLM и девтулы могут интегрироваться друг с другом, а также с базами данных, тикетинг-системами и т. д. Концепция начинает набирать популярность и в других областях, но MCP изначально создавался как способ расширить функциональность девелоперских IDE — таких как Claude Desktop, Claude Code, VS Code, Cursor, Windsurf и других. Сегодня мы сосредоточимся именно на этом применении, разобрав:

  1. Что такое MCP? Практический пример. Раньше мне приходилось использовать отдельный инструмент, чтобы делать запросы к базе данных в production-приложении. С MCP я могу «разговаривать» с базой данных прямо из IDE — это действительно меняет правила игры!

  2. Происхождение MCP.  Два инженера из Anthropic — Дэвид Сориа Парра и Джастин Спар-Саммерс — реализовали MCP, решая собственную проблему: они хотели, чтобы Claude Desktop лучше работал с девтулзами.

  3. Чтобы понять MCP, нужно понимать Language Server Protocol (LSP). Многие базовые идеи MCP вдохновлены подходом Microsoft к упрощению интеграции языковой поддержки в IDE.

1. Что такое MCP? Практический пример

У меня есть API, который обслуживает микросайт, где платные годовые подписчики могут запросить промокод на 12 месяцев бесплатного доступа к Perplexity и 3 месяца Kagi. Сайт работает на Node.js, написан на TypeScript и использует PostgreSQL в качестве базы данных.

Каждый раз, когда я правлю backend или frontend, а также вношу изменения в данные, у меня открыты два окна:

  1. IDE с исходным кодом и встроенным терминалом

  2. Админка базы данных для запросов к таблицам или изменения схем — я использую PgAdmin

В моей рабочей среде всегда открыт pgAdmin — интерфейс администрирования PostgreSQL.
В моей рабочей среде всегда открыт pgAdmin — интерфейс администрирования PostgreSQL.

IDE становятся всё умнее благодаря интеграции LLM-функциональности: Windsurf и Cursor уже обладают агентными возможностями и могут предлагать правки сразу в нескольких файлах. Однако они не умеют подключаться к моей базе данных PostgreSQL, чтобы выполнять запросы. С MCP — умеют. И теперь это могу делать и я.

MCP (Model Context Protocol) — это протокол, который служит мостом между LLM-инструментами, такими как IDE с AI-функциями (например, Cursor, Windsurf и другие), и внешними утилитами.

Вот как я использую LLM промпты, чтобы получить доступ к базе данных прямо из IDE. В этом примере я использую Windsurf, но всё то же самое можно сделать в Cursor, Zed и VS Code.

Добавление MCP-сервера PostgreSQL в мою IDE

Для начала в настройках Windsurf, в разделе Cascade (агентная функциональность Windsurf), я выбираю опцию «Add MCP Server». Открывается выпадающее меню с преднастроенными серверами:

Windsurf поддерживает несколько MCP-серверов. Я выбрал PostgreSQL MCP Server.
Windsurf поддерживает несколько MCP-серверов. Я выбрал PostgreSQL MCP Server.

Добавление сервера подразумевает настройку строки подключения к базе данных — это может быть как локальный экземпляр Postgres на вашей машине, так и удалённый. Я использовал удаленную строку подключения, чтобы связаться с базой на своём сервере. После подключения база данных отображается как MCP Server — готова к использованию.

Сервер Postgres добавлен, и наша IDE стала мощнее
Сервер Postgres добавлен, и наша IDE стала мощнее

Теперь, при любом вводе команды в интерфейсе Cascade, LLM может по своему усмотрению использовать подключённый MCP-сервер. Начнём с запроса по промокодам:

«Сколько пользователей активировали промокоды Kagi за последние 10 дней?»

LLM пытается сгенерировать SQL-запрос к серверу, чтобы получить ответ, но ошибается в названии таблицы — вполне типичная ситуация для LLM:

LLM попыталась использовать мою базу PostgreSQL, но указала несуществующее имя таблицы.
LLM попыталась использовать мою базу PostgreSQL, но указала несуществующее имя таблицы.

И вот тут начинается «магия»: благодаря возможности итеративного взаимодействия с новой базой данных, LLM делает следующий шаг — она обращается к моей PostgreSQL-инстанции, чтобы найти правильное имя таблицы.

LLM начинает корректно использовать PostgreSQL MCP Server и определяет, к каким таблицам у неё есть доступ.
LLM начинает корректно использовать PostgreSQL MCP Server и определяет, к каким таблицам у неё есть доступ.

Затем она формирует новый SQL-запрос:

Еще одна попытка — на этот раз с правильным именем таблицы.
Еще одна попытка — на этот раз с правильным именем таблицы.

Упс! — снова ошибка, теперь в названиях столбцов. Но LLM сразу же делает запрос к схеме таблицы и быстро всё исправляет:

LLM использует PostgreSQL MCP Server, чтобы самокорректироваться.
LLM использует PostgreSQL MCP Server, чтобы самокорректироваться.

В итоге — она получает правильный результат:

Верный результат.
Верный результат.

Что впечатляет — весь процесс занял всего несколько секунд, и мне не пришлось вводить ни единого символа. LLM сама «разобралась» в названиях таблиц и столбцов, имея доступ к базе данных.

LLM-слой поверх PostgreSQL

Теперь, когда моя база данных добавлена как MCP-сервер, я могу «разговаривать» с данными на естественном языке, а LLM конвертирует запрос в SQL, выполняет его и интерпретирует результат в контексте исходного вопроса. Это работает не только для простых запросов, сводящихся к одному SQL-выражению, но и для более сложных или неоднозначных вопросов.

Вот примеры других запросов, которые я задавал:

  • «Был ли необычный всплеск регистраций за последние 2 месяца?»

  • «Какие подозрительные email-адреса регистрировались недавно? Есть ли паттерны?»

  • «На каких доменах больше всего регистраций?»

  • «Сколько промокодов ещё не активировано?»

Возможность «разговаривать» с девтулзами через IDE это почти «будущее». Не то чтобы я не мог получить ответы на эти вопросы раньше — я мог бы написать SQL-запросы, цепочку запросов или небольшой скрипт, который бы всё это автоматизировал и подвёл итоги. Но, скорее всего, я бы не стал этим заниматься — написание SQL занимает время. А вот просто задать вопрос — легко, и именно поэтому я сделал все именно так.

Представьте, что произойдет, когда вы сможете общаться с инструментами разработчика через IDE. Например, используя естественный язык для взаимодействия с:

  • Системой контроля версий
    «Можешь создать pull request со всеми изменениями, кроме index.ts?»

  • Базой данных
    «Создай новую таблицу для логирования регистраций. Используй автоинкрементный счётчик как первичный ключ и сохраняй timestamp каждого события»

  • Системой тикетов/багтрекинга
    «Есть ли заведённые баги, связанные с этой фичей?»

  • Системой мониторинга/логирования
    «Были ли всплески login/logout-ошибок за последнюю неделю?»

  • Системой feature flags / A/B-тестов
    «Какие флаги были полностью выкатаны больше недели назад? Можешь помочь их найти и создать PR на удаление?»

Возможность использовать эти инструменты прямо из IDE делает работу заметно проще. А если можем использовать мы — смогут и AI-агенты, что означает рост сложности задач, которые они смогут решать.

По моим ощущениям, концепция MCP — это еще один шаг в сторону повышения продуктивности разработчиков. Она также может существенно усилить возможности AI-агентов, предоставляя им доступ к новым, более сложным тулзам.

Трудно представить, что коммерческие вендоры не начнут срочно внедрять поддержку MCP-серверов — ведь это даст их пользователям возможность гораздо проще использовать инструменты прямо из IDE.

Как разработчики, мы получим возможность экспериментировать с новым классом инструментов, способных прокачать нашу эффективность. Правда, есть и оговорка: MCP всё ещё на ранней стадии. Единый маркетплейс отсутствует, поддержка в IDE появилась всего несколько месяцев назад, а текущие реализации MCP вызывают серьезные опасения по части безопасности.

2. Происхождение MCP

Протокол MCP был задуман и реализован двумя инженерами-программистами из Anthropic — Дэвидом Сориа Парра и Джастином Спар-Саммерсом. Дэвид рассказал историю создания протокола в одном из выпусков подкаста Latent Space.

«В июле 2024 года я работал над внутренними девтулзами. В компании шёл активный процесс поощрения сотрудников к глубокой интеграции с нашими моделями и максимально активному dogfooding — использовать наши модели в своей повседневной работе.

У меня бэкграунд в developer tooling, и я очень быстро оценил, насколько крут Claude Desktop — особенно с такими возможностями, как Artifacts. Но одновременно начал испытывать раздражение: функциональность была ограниченной, и никак не расширялась. В то же время, моя основная работа проходит в IDE, у которой есть доступ, например, к локальной файловой системе, но нет ничего похожего на Artifacts.

В итоге я всё время копировал данные туда-сюда между Claude Desktop и IDE — и это начало серьёзно раздражать. Я-то знаю, как строить интеграции, но подумал: а что нужно сделать, чтобы сами IDE могли подключать интеграции?

Когда смотришь на проблему глубже, понимаешь, что задача интеграции AI — это задача масштаба M×N: у тебя есть M приложений (например, IDE) и N интеграций.

Пока я об этом размышлял, параллельно вёл внутренний проект по Language Server Protocol (LSP) — он, правда, никуда не дошёл. Но когда сложил всё это вместе — концепт LSP, неудовлетворённость интеграциями, — дал идее немного повариться, и в итоге появилась мысль: а почему бы не создать протокол, который всё это решит?»

Больше о происхождении протокола MCP можно узнать в соответствующем выпуске подкаста Latent Space.

Открытие исходного кода протокола MCP

Дэвид объединился с другим инженером — Джастином, и вместе они создали первые прототипы, продолжали итерации, и уже через шесть недель у них была первая рабочая интеграция MCP с Claude Desktop.

Они поделились прототипом внутри компании, и команда инженеров в Anthropic восприняла его с энтузиазмом. Пока шла подготовка к open source-релизу, на внутреннем хакатоне Anthropic было создано множество интересных приложений на базе MCP — включая MCP-сервер для управления 3D-принтером. Это подтвердило ожидания Дэвида и Джастина: MCP действительно может быть полезен в реальных сценариях.

После доработки и шлифовки, 25 ноября прошлого года они официально объявили об открытии исходного кода протокола MCP. На тот момент под «MCP Protocol» входили:

  • Веб-сайт с описанием протокола, инструкциями по реализации MCP-сервера и гидами для клиентов (например, для IDE по интеграции протокола)

  • Спецификация самого протокола

  • SDK для Python, TypeScript, Java, Kotlin и C#

  • Примеры реализаций серверов и клиентов в качестве референсов

Быстрое внедрение в индустрии

Всего за четыре месяца MCP прошёл путь от «удобного протокола, который использует Claude Desktop» до открытого стандарта, который начали внедрять все основные IDE и AI-инструменты, включая OpenAI.

  • Июль 2024: разработка MCP начинается внутри Anthropic.
    Август:
    Редактор Zed добавляет поддержку MCP-серверов.
    – Забавный факт: Дэвид и Джастин использовали Zed в работе и встроили в него MCP-клиент!

  • Январь 2025:
    Zed официально анонсирует поддержку MCP
    Cline добавляет поддержку MCP
    Cursor интегрирует MCP

  • Февраль:
    – Anthropic выпускает Claude Code — агентную CLI-утилиту с поддержкой MCP
    Windsurf добавляет поддержку MCP
    – В Neovim появляется поддержка MCP через плагин

  • Март:
    Cloudflare публикует гайд по деплою продакшн-готового удалённого MCP-сервера
    Sentry запускает свой MCP-сервер, становясь первым крупным вендором с продакшн-реализацией. Их сервер был основан на гайде Cloudflare
    OpenAI добавляет MCP-поддержку в свой Agents SDK

  • Апрель:
    VS Code интегрирует поддержку MCP
    GitHub запускает официальный MCP-сервер (в публичной превью-версии)
    Zapier публикует каталог доступных MCP-серверов
    – CI/CD-сервисы, такие как Bitrise и CircleCI, запускают собственные MCP-серверы

Единственный крупный игрок, пока не внедривший MCP, — IDE от JetBrains, но поддержка уже анонсирована и ожидается в следующем релизе. Такой стремительный уровень принятия индустрией — редкость. Очевидно, что MCP даёт разработчикам реальные преимущества при использовании AI-инструментов, и именно поэтому IDE-решения спешат внедрить поддержку. Примечательно, что именно те разработчики, которых IDE чаще всего упоминали как любимые в контексте AI-функциональности — Cursor, VS Code, Windsurf, Zed, Neovim и Cline — оказались в числе первых, кто внедрил MCP.

Но как это всё работает?

3. Чтобы понять MCP, нужно понять LSP

Давайте немного отвлечёмся и посмотрим на Language Server Protocol (LSP) — именно это решение вдохновило на создание MCP.

На протяжении десятилетий IDE сталкивались с одной и той же проблемой: они хотели поддерживать как можно больше языков программирования. А это автоматически означало необходимость реализовывать:

  • Подсветку синтаксиса

  • Автодополнение кода (autocomplete)

  • Inline-подсказки об ошибках и предупреждениях

  • Простые операции по рефакторингу

Если у нас есть M IDE и N языков программирования, то задача становится классической MxN-проблемой. Наивный подход заключался в том, чтобы каждая из M IDE реализовывала поддержку каждого из N языков вручную — насколько это возможно.

Для вендоров IDE это означало огромное количество работы, причём каждый раз, когда появлялся новый язык, приходилось заново проделывать весь цикл.

Статус-кво до примерно 2016 года: каждая IDE реализует языковые функции для каждого поддерживаемого языка
Статус-кво до примерно 2016 года: каждая IDE реализует языковые функции для каждого поддерживаемого языка

Для нас, разработчиков, это означало, что IDE хорошо поддерживали только ограниченное число языков. Например, удачи вам с написанием кода на C# в Android Studio!

Расширения и плагины стали временным решением, позволяющим IDE делегировать сложную логику: IDE с поддержкой плагин-системы позволяли сторонним разработчикам создавать плагины — например, для подсветки синтаксиса конкретного языка. Это было лучше, чем ничего, но всё равно требовало огромного объема работы. К тому же, далеко не все IDE предлагали такой SDK для расширений, который позволял бы реализовать полноценный опыт разработки — с нормальным автокомплитом, подсветкой и т. д.

В 2016 году Microsoft представила спецификацию Language Server Protocol (LSP) — протокола, изначально разработанного для Visual Studio Code. Идея была проста: каждый язык предоставляет свою LSP-реализацию, которая отвечает за языковые фичи. Редакторы кода теперь могли использовать LSP-сервер — готовую реализацию (чаще всего с открытым исходным кодом), вместо того чтобы писать всё с нуля.

Идея LSP: отдельный LSP-сервер для каждого языка, соответствующего спецификации
Идея LSP: отдельный LSP-сервер для каждого языка, соответствующего спецификации

Это кардинально изменило подход к разработке IDE:

  • Новые и существующие IDE могут легко добавлять поддержку языков, просто следуя протоколу LSP

  • Для большинства языков существует официальная LSP-реализация, разработанная мейнтейнерами языка (например, gopls для Go)

  • Часто существует несколько реализаций LSP, из которых разработчики или IDE-вендоры могут выбрать нужную. Например, для C# популярны OmniSharp и csharp-ls

Сегодня LSP поддерживают такие IDE и редакторы, как:

  • VS Code

    Все производные от VS Code: Cursor, Windsurf и др.

  • Zed Editor

  • Инструменты JetBrains (IntelliJ IDEs)

  • Eclipse, Neovim, Emacs

  • Множество более лёгких редакторов: Atom, Helix Editor, Kate и другие

Некоторые исключения:

  • Visual Studio (не путать с VS Code) — флагманская IDE от Microsoft. Использует проприетарные средства для поддержки языков, LSP не поддерживает

  • Xcode — существует официальный LSP-сервер для Swift, но Xcode полагается на собственную, закрытую систему code intelligence

  • Android Studio — не поддерживает LSP, так как построена на базе IntelliJ Community Edition, которая предоставляет ограниченную языковую поддержку по сравнению с полнофункциональными IDE JetBrains

Теги:
Хабы:
+2
Комментарии0

Публикации

Ближайшие события