На заре появления LLM пользователям приходилось просто копировать свой код в текстовое окно, чтобы ИИ могла его обработать. Естественно, такой подход быстро всех утомил, и разработчики начали искать свои способы загрузки данных в модель. У этого подхода была серьезная проблема — каждому приходилось изобретать велосипед заново. Именно поэтому появился протокол MCP (Model Context Protocol) — универсальный способ дать искусственному интеллекту доступ к нужным данным, неважно где они хранятся — на компьютере пользователя или же в интернете.
Как это работает?
Протокол состоит из трех главных частей:
-
Хост — это приложения с ИИ внутри (например, Claude Desktop или другие среды разработки), которые хотят получить доступ к данным
-
Клиентская часть — находится внутри такой программы и держит связь с сервером
-
Серверная часть — предоставляет доступ к данным, инструментам и шаблонам запросов
Как устроена серверная часть
Если вы уже работали с инструментами для ИИ, то вам будет несложно разобраться. Давайте посмотрим на пример — сервер для поиска через Brave Search.
Внутри программа сервера определяет инструменты, к которым у него есть доступ, и сообщает об их доступности клиенту.
server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: [WEB_SEARCH_TOOL, LOCAL_SEARCH_TOOL], }));
Например, инструмент для веб-поиска (WEB_SEARCH_TOOL
) описывается так:
{ name: "brave_web_search", description: "Поиск в интернете через Brave Search. Подходит для поиска новостей, статей и любой информации в сети. " + "Используйте для получения свежей информации или когда нужно найти разные источники по теме. " + "Умеет выдавать результаты постранично и фильтровать контент. " + "За раз можно получить до 20 результатов. ", inputSchema: { type: "object", properties: { query: { type: "string", description: "Что искать (до 400 символов или 50 слов)" }, count: { type: "number", description: "Сколько результатов показать (от 1 до 20, обычно 10)", default: 10 }, offset: { type: "number", description: "С какого результата начать (до 9, обычно с первого)", default: 0 }, }, required: ["query"], }, }
Насколько я могу судить, этот формат похож на то, как работают инструменты в Anthropic Claude Tool Use или OpenAI Function Calling.
Дальше создается обработчик запросов:
server.setRequestHandler(CallToolRequestSchema, async (request) => { // ... });
Когда приходит запрос, обработчик смотрит, какой инструмент нужен, и вызывает соответствующую функцию:
case "brave_web_search": { if (!isBraveWebSearchArgs(args)) { throw new Error("Неправильные параметры для поиска"); } const { query, count = 10 } = args; const results = await performWebSearch(query, count); return { content: [{ type: "text", text: results }], isError: false, }; }
Каждый такой сервер работает как отдельная программа, имеет свой адрес (например, tool://brave_web_search/brave_web_search
) и общается с клиентами через JSON-RPC. Запустить сервер Brave Search можно простой командой:
Сначала нужно получить бесплатный ключ API: просто зарегистрируйтесь в Brave.
$ export BRAVE_API_KEY=your-api-key $ npx -y @modelcontextprotocol/server-brave-search
Как работает клиентская часть
Для начала клиент должен знать, к какому серверу подключаться:
const transport = new StdioClientTransport({ command: "tool://brave_web_search/brave_web_search" });
Затем устанавливаем соединение:
await client.connect(transport);
При подключении происходит «рукопожатие» — клиент и сервер договариваются о том, как они будут работать:
-
Клиент сообщает, какую версию протокола использует и что умеет делать
-
Сервер отвечает своими возможностями и версией протокола
-
Клиент подтверждает, что всё понял
-
После этого можно начинать обмен данными
Теперь клиент может отправлять запросы:
const resources = await client.request( { method: "brave_web_search" }, BraveWebSearchResultSchema );
В протоколе есть четыре типа сообщений:
-
Запросы — когда нужен ответ
-
Уведомления — просто сообщить что-то, ответ не нужен
-
Результаты — успешные ответы на запросы
-
Ошибки — когда что-то пошло не так
Как передаются данные
Протокол MCP умеет работать двумя способами:
-
Через стандартный ввод/вывод
-
Самый простой способ для программ на одном компьютере
-
Работает как обычный обмен текстом между программами
-
-
Через HTTP с Server-Sent Events (SSE)
-
Сервер отправляет данные клиенту через SSE
-
Клиент общается с сервером через обычные HTTP POST-запросы
-
В обоих случаях для передачи данных используется формат JSON-RPC 2.0 — простой и надёжный способ удалённого вызова функций.
Как работает Хост
Программа-хост — это то приложение, которое решает, к каким серверам подключаться и когда. Её главная задача — понять, что умеет делать каждый сервер, и придумать, как с их помощью решить задачу пользователя.
Надо сказать, что эта часть протокола описана довольно расплывчато. Насколько я понимаю, предполагается, что каждый разработчик сам решает, как именно его приложение будет выбирать и использовать серверы. Если интересно, я рассказывал об этом подробнее в статье «Как научить ИИ пользоваться инструментами«.
Что уже есть в открытом доступе
Готовые библиотеки для разработчиков:
Готовые серверы:
-
Filesystem — безопасный доступ к файлам с гибкими настройками прав
-
GitHub — работа с репозиториями и API GitHub
-
Google Drive — поиск и доступ к файлам
-
PostgreSQL — чтение из базы данных с анализом её структуры
-
Slack — управление каналами и отправка сообщений
-
Memory — система долговременной памяти на основе графов знаний
-
Puppeteer — автоматизация браузера и сбор данных с веб-страниц
-
Brave Search — поиск в интернете и на компьютере через API Brave
-
Google Maps — всё для работы с картами: поиск мест, построение маршрутов и подробная информация о местах
-
Fetch — загрузка веб-страниц в формате, удобном для обработки ИИ
Серверы от сообщества:
-
MCP YouTube — скачивает субтитры с YouTube через
yt-dlp
Кто уже использует MCP
Протокол уже взяли на вооружение несколько известных проектов:
-
Sourcegraph Cody: использует для улучшения контекста при работе с кодом
-
Zed Editor: расширяет возможности для разработчиков
Пример от Sourcegraph Cody
В их блоге есть отличный пример:
Cody подключается к базе PostgreSQL, смотрит её схему и на основе этого пишет запрос Prisma.

Пример от Zed Editor
А вот что пишут в своем блоге разработчики Zed:
Они сделали расширение для PostgreSQL, которое сразу даёт модели ИИ информацию о структуре базы данных. Теперь, когда пользователь просит написать запрос, ИИ точно знает, какие таблицы и столбцы есть в базе и какие у них типы данных.

В блоге Sourcegraph также есть пример построения линейной интеграции с TypeScript и MCP.
Тестируем MCP в Claude Desktop
Давайте попробуем запустить MCP — проще всего это сделать через приложение Claude Desktop.
Сначала нужно настроить приложение. Откройте любым текстовым редактором файл конфигурации:
~/Library/Application Support/Claude/claude_desktop_config.json
Важно: этого файла скорее всего у вас нет, его нужно создать. И не перепутайте с файлом ~/Library/Application Support/Claude/config.json
— это совсем другой файл, его не трогаем.
Добавьте в файл такие настройки:
{ "mcpServers": { "brave_search": { "command": "npx", "args": ["@modelcontextprotocol/server-brave-search"], "env": { "BRAVE_API_KEY": "ваш-ключ-api" } } } }
Этой записью мы говорим приложению:
-
Есть сервер MCP под названием
brave_search
-
Запускать его нужно командой
npx @modelcontextprotocol/server-brave-search
-
Для работы ему нужен ваш ключ API от Brave
Сохраните файл и перезапустите Claude Desktop.
Теперь можно попросить приложение что-нибудь поискать в интернете. Например, напишите «поищи в интернете информацию о glama.ai».
При первом запросе приложение спросит разрешение на использование MCP — это диалоговое окно с запросом прав.

Нажмите «Разрешить для этого чата» (Allow for This Chat), и Claude Desktop начнёт поиск через сервер Brave Search.
Есть ли альтернативы?
Да, есть несколько проектов с открытым исходным кодом, которые решают те же задачи:
-
Web Applets — открытая спецификация и набор инструментов для создания приложений, с которыми могут работать ИИ-ассистенты
Что дальше?
Я думаю, что MCP станет по-настоящему популярным только когда появится поддержка HTTP. Но уже можно представить будущее, где в таких приложениях как Glama или Claude Desktop появится что-то вроде магазина MCP-серверов — пользователи смогут просто подключать нужные сервисы к своим рабочим процессам.
Первые впечатления
Хотя MCP позиционируется как открытый стандарт, пока что он больше заточен под работу с Claude от Anthropic. Есть и другие проблемы:
-
Нет чёткой документации по совместимости с другими провайдерами ИИ (AWS Bedrock, Google Vertex AI)
-
Настройка серверов в Claude Desktop делается вручную, нет удобных инструментов
-
Приходится давать разрешение на использование MCP каждый раз при запуске приложения
Поэтому можно сделать вывод, что до полноценного стандарта еще далеко…
Лично я думаю, что победителем в этой гонке станет Computer Use — он сможет решить все те задачи, которые пытается решить MCP, и даже больше. Поэтому, шансов стать новым стандартом у него гораздо больше.
ссылка на оригинал статьи https://habr.com/ru/articles/862312/
Добавить комментарий