MCP (Model Context Protocol): как LLM подключаются к данным и инструментам
MCP — Model Context Protocol, открытый стандарт подключения языковых моделей к внешним данным и инструментам. До MCP каждая интеграция LLM с внешним сервисом писалась отдельно: своя реализация для Slack в одной системе, своя для Google Drive в другой, своя для GitHub в третьей. MCP меняет это: один стандарт описывает, как любой клиент (Claude, IDE, агент) подключается к любому серверу (БД, API, файловая система), и интеграции переиспользуются между приложениями.
В этой статье — что такое MCP, зачем он понадобился, как устроена архитектура из Host, Client и Server, какие транспорты используются, как создать свой MCP-сервер и в каком состоянии экосистема в 2026 году.
Что такое MCP
Model Context Protocol — открытый стандарт, запущенный Anthropic в ноябре 2024 года. Описывает, как LLM-приложения (Claude Desktop, IDE с AI-функциями, кастомные агенты) обмениваются данными с внешними источниками — файловыми системами, базами данных, API, локальными инструментами.
Аналогия из обычного программирования: USB. До стандарта USB каждый периферийный девайс имел свой разъём и свой драйвер. С USB любой девайс работает с любым компьютером через единый интерфейс. MCP делает то же самое для контекста LLM: единый протокол вместо десятков несовместимых интеграций.
Протокол открытый — спецификация публикуется на modelcontextprotocol.io, реализации существуют на нескольких языках (Python, TypeScript, Go, Rust, C#), референсные SDK поддерживаются Anthropic.
Зачем нужен MCP
LLM «из коробки» — изолированная модель, имеющая знания только из обучения. Чтобы стать полезным инструментом, ей нужен доступ к актуальным данным и возможность выполнять действия. До MCP это решалось одним из нескольких подходов, каждый со своими ограничениями:
- RAG с собственным retrieval. Работает для статичных документов, плохо подходит для интерактивных данных и действий.
- Function calling через JSON Schema. Каждое приложение определяет свои функции и реализует их обработку. Несовместимо между приложениями.
- Прямая интеграция в код приложения. Каждая интеграция пишется индивидуально. Не переиспользуется.
- Plugins-ecosystem конкретного провайдера. Например, ChatGPT plugins. Закрыто и ограничено одним провайдером.
MCP решает все эти проблемы единым подходом: интеграция, написанная как MCP-сервер, работает с любым MCP-совместимым приложением — Claude Desktop, Cursor, IDE, кастомные агенты.
История запуска
Anthropic анонсировала MCP 25 ноября 2024 года вместе с публикацией спецификации, референсных серверов и SDK. К моменту запуска уже были готовы серверы для самых популярных задач: файловая система, GitHub, Slack, PostgreSQL, Brave Search, Google Drive.
В течение 2025 года экосистема росла стремительно. Сторонние разработчики выпустили серверы для сотен сервисов. К 2026 году MCP стал де-факто стандартом интеграции LLM в большинстве AI-инструментов: Cursor, Claude Code, Anthropic Console, JetBrains AI, Replit Agent.
В начале 2025 года к поддержке MCP присоединились OpenAI (через адаптеры) и Microsoft (через Copilot integrations). Это сделало MCP первым по-настоящему отраслевым стандартом для LLM-интеграций.
Архитектура: Host, Client, Server
MCP-система состоит из трёх ключевых компонентов.
Host (Хост)
Приложение, в которое встроена LLM. Это Claude Desktop, Cursor, IDE с AI-плагином, кастомный агент. Host оркестрирует работу с моделью и MCP-серверами.
Client (Клиент)
Компонент внутри Host, отвечающий за коммуникацию с конкретным MCP-сервером. Один Host может содержать множество Client-инстансов — по одному на каждый подключённый сервер.
Server (Сервер)
Отдельный процесс или сервис, предоставляющий ресурсы, инструменты и промпты Host-приложению. Может работать как локальный процесс (запускается Host-ом) или как удалённый сервис.
Схема коммуникации:
- Host запускает Server (через настройки или конфиг)
- Client устанавливает соединение с Server
- Server предоставляет список своих возможностей (capabilities)
- LLM в составе Host видит эти возможности и может их вызывать
- Когда LLM запрашивает выполнение действия, Client передаёт запрос Server-у, Server выполняет и возвращает результат
- Host передаёт результат обратно LLM для дальнейшей обработки
Что предоставляет MCP-сервер
MCP-сервер может экспонировать три типа ресурсов.
Resources (Ресурсы)
Файлы, документы, записи БД — статичные или динамические данные, которые LLM может прочитать. Каждый ресурс имеет URI, тип содержимого, опционально — метаданные.
Примеры ресурсов: файлы из локальной файловой системы, страницы из Confluence, тикеты из Jira, записи из PostgreSQL.
Tools (Инструменты)
Функции, которые LLM может вызывать для выполнения действий. Каждый инструмент имеет имя, описание, схему параметров (в формате JSON Schema).
Примеры инструментов: send_email, create_github_issue, query_database, search_web. LLM решает, когда и с какими аргументами вызвать инструмент.
Prompts (Промпты)
Шаблоны промптов, которые сервер предоставляет Host-у для использования. Это могут быть стартовые промпты для конкретных задач или динамически генерируемые шаблоны.
Примеры: «code-review prompt», «summarize-document prompt». Пользователь Host-а может вызвать такой промпт через slash-команду или меню.
Транспорты: stdio, SSE, Streamable HTTP
MCP поддерживает несколько способов транспортировки сообщений между Client и Server.
| Транспорт | Применение | Преимущества |
|---|---|---|
| stdio | Локальные серверы, запускаемые Host-ом | Простота, безопасность через изоляцию процессов |
| SSE (Server-Sent Events) | Удалённые HTTP-серверы (deprecated в 2025) | Работает через стандартный HTTP |
| Streamable HTTP | Современный замена SSE | Двунаправленный поток, переподключения |
stdio — самый частый сценарий: Host (например, Claude Desktop) запускает Server как дочерний процесс и общается с ним через stdin/stdout. Это безопасно (Server не доступен извне), просто настраивается, не требует сетевой инфраструктуры.
Streamable HTTP — для удалённых серверов, развёрнутых как сервис. Используется, когда сервер должен обслуживать множество Host-ов или когда он работает в защищённой сетевой зоне.
Сообщения и протокол
В основе MCP — JSON-RPC 2.0. Все взаимодействия — обмен JSON-сообщениями с определёнными типами:
- Request. Client запрашивает у Server действие или ресурс.
- Response. Server возвращает результат или ошибку.
- Notification. Однонаправленное сообщение (например, Server уведомляет Client об изменении ресурса).
Стандартные методы:
initialize— установка соединения, обмен версиями и capabilitiesresources/list,resources/read— работа с ресурсамиtools/list,tools/call— работа с инструментамиprompts/list,prompts/get— работа с промптамиlogging/setLevel,notifications/message— логирование
Примеры MCP-серверов
Anthropic поддерживает референсные серверы как примеры реализации и готовые компоненты:
| Сервер | Что делает |
|---|---|
| filesystem | Чтение, запись, поиск файлов на локальной системе |
| github | Работа с репозиториями, issues, pull requests |
| git | Локальные git-операции (commit, diff, log) |
| gitlab | Аналог github для GitLab |
| postgres | Запросы к PostgreSQL-базам |
| sqlite | Локальные SQLite-базы |
| slack | Чтение и отправка сообщений в Slack |
| google-drive | Работа с файлами в Google Drive |
| brave-search | Веб-поиск через Brave Search API |
| puppeteer | Браузерная автоматизация |
| memory | Постоянная память между сессиями |
| fetch | HTTP-запросы к произвольным URL |
| time | Текущее время в разных часовых поясах |
| sequential-thinking | Структурированное рассуждение для LLM |
Помимо официальных серверов, экосистема включает сотни третьесторонних реализаций для Notion, Linear, Figma, Sentry, Stripe, Shopify, AWS-сервисов и многого другого. Каталоги серверов: mcp.so, awesome-mcp-servers на GitHub.
Как подключиться к MCP-серверу
Claude Desktop
Настройка через файл claude_desktop_config.json. Указывается команда запуска сервера и его параметры:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/Documents"]
}
}
}
После перезапуска Claude Desktop видит сервер и его инструменты, доступные в чате.
Cursor и IDE
Cursor, JetBrains AI, и другие IDE с AI-функциями поддерживают MCP через свои настройки. Обычно конфигурация аналогична Claude Desktop — JSON-файл с описанием серверов.
Кастомные приложения
Разработчики могут встроить MCP-Client в свои приложения, используя официальные SDK:
- Python:
pip install mcp - TypeScript:
npm install @modelcontextprotocol/sdk
SDK предоставляют классы для запуска Client, подключения к Server, обработки сообщений.
Безопасность
MCP — мощный инструмент, который потенциально даёт LLM доступ к чувствительным данным и возможность выполнять действия. Безопасность строится на нескольких уровнях.
Авторизация и согласие пользователя
В Host-приложениях (например, Claude Desktop) каждое действие, выполняемое через MCP-сервер, по умолчанию требует подтверждения пользователя. Можно настроить автоматическое разрешение для конкретных серверов и инструментов.
Изоляция процессов
Серверы по транспорту stdio работают как отдельные процессы, изолированные от Host-а. Доступ ограничен переданными параметрами (например, директорией для filesystem-сервера).
OAuth для удалённых серверов
В 2025 году протокол получил расширения для авторизации удалённых серверов через OAuth 2.1. Это позволяет безопасно подключаться к корпоративным сервисам с проверкой прав доступа пользователя.
Sandbox для инструментов
Серверы могут запускать инструменты в изолированных окружениях (контейнеры, sandboxes), ограничивая возможный вред от выполнения LLM-инициированных команд.
Risks и best practices
- Prompt injection. Содержимое ресурсов, прочитанных через MCP, может содержать инструкции, пытающиеся изменить поведение LLM. Host-приложения должны разделять инструкции пользователя и контент ресурсов.
- Доступ к чувствительным данным. При настройке серверов соблюдайте принцип минимальных привилегий: давайте доступ только к нужному.
- Untrusted servers. Сторонние MCP-серверы должны проходить аудит перед использованием в production. Доверяйте только проверенным источникам.
Сравнение с function calling
| Параметр | Function calling | MCP |
|---|---|---|
| Стандарт | Зависит от провайдера (OpenAI, Anthropic, Google) | Открытый, единый |
| Переносимость | Между приложениями нужен ре-имплемент | Сервер работает с любым клиентом |
| Способ выполнения | В коде приложения | В отдельном процессе/сервисе |
| Безопасность | На стороне разработчика приложения | Через изоляцию процессов и OAuth |
| Экосистема | Каждое приложение собственная | Общая, переиспользуемая |
| Discovery | Закодировано в приложении | Динамическое через protocol |
MCP не отменяет function calling — он построен на основе той же концепции «модель вызывает функции». Разница в архитектуре: MCP стандартизирует, как функции упаковываются и доставляются клиенту, что радикально упрощает интеграцию.
Создание своего MCP-сервера
Минимальный сервер на Python:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("MyServer")
@mcp.tool()
def get_weather(city: str) -> str:
"""Получить погоду в указанном городе."""
# Здесь логика получения погоды
return f"В {city} сегодня солнечно, +20°C"
if __name__ == "__main__":
mcp.run()
Этого достаточно для рабочего MCP-сервера с одним инструментом. Декораторы FastMCP автоматически генерируют JSON Schema по типам аргументов и docstring-у функции.
Этапы создания production-grade сервера:
- Спроектировать API: какие ресурсы предоставлять, какие инструменты экспонировать, какие промпты включить.
- Реализовать логику с использованием SDK (Python, TypeScript).
- Добавить обработку ошибок и логирование.
- Написать тесты — MCP SDK включает testing-utilities.
- Документировать сервер — README с примерами использования.
- Опубликовать (npm, PyPI или приватный реестр).
- Добавить в каталог MCP-серверов (mcp.so, awesome-mcp-servers) для discoverability.
Состояние экосистемы 2026
К началу 2026 года MCP стал стандартом отрасли. Ключевые показатели зрелости:
- Спецификация прошла несколько ревизий, стабильная версия 1.x.
- SDK для всех основных языков программирования.
- Сотни референсных и сторонних серверов в открытом доступе.
- Поддержка во всех основных AI-IDE: Cursor, Claude Code, JetBrains AI, Continue, Cline.
- Корпоративные внедрения в крупных компаниях для интеграции AI с внутренней инфраструктурой.
- Адаптеры для OpenAI и других провайдеров LLM.
- Marketplace MCP-серверов с проверкой безопасности.
Параллельно развиваются конкурирующие подходы (например, Google Agent Connectors), но MCP остаётся доминирующим стандартом благодаря открытости и поддержке индустрии.
Типичные ошибки
- Создание «сервера на всё». MCP-сервер должен делать одну вещь хорошо. Раздутые серверы со множеством несвязанных функций трудно поддерживать.
- Отсутствие документации. LLM лучше работает с инструментами, у которых ясные описания. Краткий docstring — половина успеха.
- Игнорирование ошибок. Сервер должен корректно обрабатывать exceptional cases и возвращать понятные ошибки, а не падать молча.
- Чрезмерные права доступа. Filesystem-сервер с доступом ко всей системе вместо конкретной директории — риск безопасности.
- Использование непроверенных сторонних серверов. Сервер из репозитория с двумя звёздами может содержать вредоносный код.
- Игнорирование квот и rate limits. Если сервер обращается к внешним API, нужно учитывать их ограничения.
- Слишком мелкие инструменты. 50 инструментов с однострочной логикой — антипаттерн. Объединяйте связанные операции.
- Отсутствие тестов. MCP SDK поддерживает тестирование, но многие разработчики его игнорируют.
- Игнорирование протокольных нюансов. Например, корректная обработка cancellation, progress notifications. Без этого UX страдает.
- Production-сервер на stdio. Для масштабируемого деплоя нужен HTTP-транспорт. stdio — для локальных сценариев.
Часто задаваемые вопросы
MCP — это альтернатива RAG?
Не альтернатива, а дополнение. RAG — конкретный паттерн извлечения контекста для генерации. MCP — общий протокол подключения LLM к данным и инструментам. RAG можно реализовать через MCP: сервер предоставляет инструмент «поиск по базе знаний».
Можно ли использовать MCP без Claude?
Да. Протокол открытый, не привязан к конкретной LLM. Через SDK или адаптеры MCP работает с OpenAI, Gemini, локальными моделями (Llama, Mistral). Главное — Host-приложение должно поддерживать протокол.
Безопасно ли запускать MCP-серверы локально?
При использовании проверенных серверов из официальных источников — да. Серверы изолируются как отдельные процессы. Главные риски — установка непроверенных сторонних серверов и недостаточно ограниченные права доступа.
Сколько ресурсов потребляет MCP-сервер?
Зависит от логики. Простой filesystem-сервер — десятки МБ памяти, минимальная нагрузка на CPU. Сложные серверы с встроенными ML-моделями могут потреблять гигабайты. Большинство серверов лёгкие.
Можно ли создать MCP-сервер для проприетарного API?
Да, и это одно из главных применений. Компании создают MCP-серверы для своих внутренних API, давая сотрудникам через Claude или другие инструменты доступ к корпоративным данным без необходимости отдельного UI.
Каков порог входа для разработки MCP-сервера?
Низкий. Минимальный сервер пишется за час с нуля. С опытом веб-разработки и базовым Python или TypeScript ничего нового изучать не нужно — концепция протокола интуитивна.
Заключение
MCP — инфраструктурный стандарт, который меняет способ интеграции LLM с реальным миром. Подход переиспользования вместо реимплементации экономит огромное количество усилий разработчиков. Команды, которые освоили MCP, в 2026 году получают возможность собирать сложные AI-приложения из готовых компонентов: «возьми Claude + filesystem MCP + database MCP + slack MCP — вот тебе ассистент, который читает твой код, спрашивает БД, отчитывается в Slack». Этот сборочный подход — будущее AI-интеграций, и MCP открыл к нему путь.