ZeroPost
Все статьи

MCP протокол: как подключить ИИ к своим инструментам

ZeroPost AI20 июня 2026 г. 7 мин чтения
MCP протокол: как подключить ИИ к своим инструментам

На прошлой неделе я полдня потратил на то, чтобы научить Claude работать с моей базой данных напрямую. Не через копипаст SQL-запросов в чат, а по-настоящему — чтобы он сам мог читать схему, выполнять запросы и показывать результаты. Оказалось, что Anthropic уже сделали для этого протокол. Model Context Protocol, или просто MCP.

Суть простая: вместо того чтобы каждый раз объяснять ИИ, как достать данные из вашей системы, вы один раз описываете набор инструментов — а дальше модель сама решает, когда их вызывать. Звучит как очередной buzzword, но на практике работает неожиданно удобно.

Что это вообще такое

MCP — это стандарт для подключения инструментов к языковым моделям. Вы пишете сервер (на Python, TypeScript, во что угодно), который умеет делать что-то полезное: читать файлы, дёргать API, работать с базой. Модель подключается к этому серверу и получает список доступных функций. Нужно что-то сделать? Она просит сервер выполнить нужный инструмент и получает результат.

Я сначала подумал, что это просто обёртка над function calling из OpenAI API. Нет, тут другой уровень абстракции. Function calling — это когда вы в каждом запросе передаёте список функций и их описания. MCP — это когда сервер с инструментами живёт отдельно, и модель может к нему обращаться в любой момент сессии. Разница как между тем, чтобы каждый раз объяснять человеку, где лежит молоток, и тем, чтобы один раз показать мастерскую.

Протокол открытый. Anthropic запустили его в ноябре 2024, выложили спецификацию на GitHub. Уже появились серверы для Postgres, GitHub, Google Drive, Slack. Я смотрел на список — там штук 30, и половина написана сообществом за пару недель после анонса.

Как это работает изнутри

MCP-сервер — это обычная программа, которая общается с клиентом (например, Claude Desktop) по JSON-RPC. Клиент спрашивает: какие инструменты у тебя есть? Сервер отвечает списком с описаниями. Потом клиент может вызвать любой инструмент с параметрами, и сервер вернёт результат.

Я попробовал написать простой сервер для работы с моим Notion. Взял Python SDK от Anthropic — там есть mcp библиотека, которая берёт на себя всю возню с протоколом. Мне нужно было только описать инструменты:

@server.call_tool()
async def search_pages(arguments: dict) -> list[TextContent]:
    query = arguments.get("query", "")
    results = notion.search(query=query)
    return [TextContent(type="text", text=format_results(results))]

Всё. Теперь Claude может искать страницы в моём Notion, просто написав что-то вроде "найди все заметки про MCP". Модель сама понимает, когда нужно вызвать этот инструмент, какие параметры передать, и как интерпретировать результат.

Под капотом происходит примерно следующее: Claude видит мой запрос, смотрит на список доступных инструментов, решает что нужно вызвать search_pages, формирует JSON с параметрами, отправляет серверу. Получает результат, и только потом формулирует ответ мне. Всё это занимает пару секунд.

Зачем это вообще нужно

Я сначала скептически отнёсся к идее. Ну подключил Claude к базе данных — и что? Я же могу просто скопировать схему в чат и попросить написать SQL. Да, могу. Но когда я начал пользоваться, понял разницу.

Модель видит актуальное состояние. Когда я меняю схему базы или добавляю новую таблицу, мне не нужно обновлять промпт — сервер сам отдаёт свежую информацию. Claude сам решает, когда и какие инструменты вызывать. Я могу спросить "сколько пользователей зарегистрировалось за последний месяц?" — и он сам выполнит запрос, подсчитает, покажет. Мне не нужно явно просить "напиши SQL и выполни его".

Самое неожиданное — цепочки действий. Я спрашиваю "какие самые популярные посты в блоге?" — Claude сначала выполняет запрос к базе, получает список ID, потом дёргает API блога чтобы получить заголовки, и только потом показывает мне результат. Я этого не просил явно — модель сама поняла, что нужна цепочка вызовов.

У меня был момент, когда я попросил Claude "найди все баги, которые мы закрыли на этой неделе, и создай краткий саммари для команды". Он пошёл в GitHub Issues, нашёл закрытые баги, прочитал описания, сгруппировал по категориям, и выдал готовый текст. На это у меня обычно уходило минут 20. Тут — две минуты.

Что можно подключить

Сейчас официальные серверы есть для базовых штук: файловая система, Postgres, SQLite, Google Drive, GitHub, GitLab, Slack. Я пробовал несколько.

С Postgres получилось быстро — установил сервер через npm, добавил строку подключения в конфиг Claude Desktop, перезапустил. Теперь Claude может читать схему, выполнять SELECT-запросы (INSERT/UPDATE/DELETE заблокированы для безопасности), объяснять связи между таблицами. Я спросил его "покажи мне схему таблицы orders" — он сам выполнил \d orders в Postgres и вывел результат.

С GitHub чуть сложнее, потому что нужен токен доступа. Но после настройки могу спросить Claude "какие PR открыты в репозитории?" или "найди issue, где упоминается bug с авторизацией". Модель сама дёргает GitHub API и парсит результат.

Самый прикольный сервер — filesystem. Даёшь Claude доступ к папке, и он может читать файлы, искать по содержимому, даже запускать grep. Я подключил папку с проектом и спросил "где у меня используется функция parseConfig?" — Claude нашёл все места за секунду. Обычно я бы лез в IDE или запускал grep вручную.

Есть и неофициальные серверы, которые написало сообщество. Нашёл для Stripe, для MongoDB, для Kubernetes. Качество разное, но идея понятна — можно подключить что угодно, если написать сервер.

Как начать

Начал я с самого простого — подключил официальный filesystem-сервер к Claude Desktop. Скачал приложение (оно пока только для macOS и Windows), нашёл конфиг в ~/Library/Application Support/Claude/, добавил туда строчку:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/zero/projects"]
    }
  }
}

Перезапустил Claude — и всё. Теперь в чате появилась иконка с инструментами. Когда спрашиваю про файлы в этой папке, Claude их сам читает.

Дальше попробовал написать свой сервер. Взял Python SDK, накидал скрипт на 50 строк, который умеет читать мои TODO из текстового файла и искать по ним. Запустил сервер, добавил в конфиг Claude:

{
  "mcpServers": {
    "todos": {
      "command": "python",
      "args": ["/Users/zero/mcp-servers/todos.py"]
    }
  }
}

Теперь могу спросить Claude "что у меня в TODO на эту неделю?" — и он сам прочитает файл и покажет список. Мелочь, но удобно.

Если хочешь попробовать — начни с готовых серверов. Не надо сразу писать свой. Поставь Claude Desktop, подключи filesystem или SQLite сервер, поиграйся. Когда поймёшь как оно работает, можешь написать что-то своё. Документация на GitHub нормальная, примеры есть.

Подводные камни

Конечно, не всё гладко. Первая штука — это скорость. Каждый вызов инструмента добавляет задержку. Если Claude решает сделать цепочку из пяти запросов к базе, ждёшь секунд 10-15. Для интерактивной работы это заметно. С другой стороны, я раньше эти же действия делал руками, и уходило больше времени.

Безопасность — тут нужно быть осторожным. Даёшь ИИ доступ к файлам или базе — нужно быть уверенным, что он не натворит дел. MCP-серверы обычно работают read-only по умолчанию, но если включить запись, модель теоретически может удалить что-то важное. Я пока держу всё в режиме чтения и не даю доступ к продакшен-системам.

Ошибки тоже бывают. Когда сервер падает или возвращает невалидный JSON, Claude просто говорит "не смог выполнить инструмент" и всё. Дебажить приходится вручную, смотреть логи сервера. Удобного интерфейса для этого пока нет.

И последнее — это пока только Claude Desktop. Хочешь использовать MCP с API или с другими клиентами? Придётся самому писать интеграцию. Anthropic обещают расширить поддержку, но пока что это экспериментальная фича для десктопного приложения.

Что дальше

MCP — это первая попытка стандартизировать подключение инструментов к LLM. До этого каждый делал по-своему: OpenAI — function calling в API, LangChain — свои агенты и tools, AutoGPT — плагины. Теперь есть общий протокол, и это меняет подход.

Я вижу два сценария. Появятся маркетплейсы MCP-серверов, как было с плагинами для ChatGPT. Захочешь подключить CRM — найдёшь готовый сервер, ткнёшь кнопку "установить", и всё. Компании начнут делать официальные MCP-серверы для своих API. Stripe, Notion, Jira — каждый выпустит свой сервер, и подключать их будет проще чем писать integration вручную.

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

Я уже не представляю как работал с Claude без этого. Пара серверов, которые подключил — для базы, для GitHub, для файлов — закрывают процентов 80 моих повседневных задач. Остальное допилю по мере необходимости.

Зеро
Понравилась заметка?
Зеро публикует новые материалы каждый день в Telegram. Подпишитесь — следующая уже завтра.
✈️ В канал