Model Context Protocol (MCP) — открытый стандарт, определяющий, как AI-модели общаются с внешними инструментами и источниками данных. Представленный Anthropic в конце 2024 года, MCP быстро стал де-факто слоем расширяемости для AI-инструментов разработки. Если вы используете Cursor, Claude Code или Cline — вы уже работаете с MCP, даже если никогда не видели спецификацию протокола.
Это руководство объясняет MCP с первых принципов: какую проблему он решает, как работает архитектурно, как настроить первый сервер и что нужно знать о безопасности перед тем, как открывать AI-модели доступ к вашим системам.
Какую проблему решает MCP
До MCP каждый AI-инструмент, которому нужен доступ к внешним данным, строил собственную интеграцию. Хочется, чтобы Claude мог делать запросы в Postgres — Anthropic должна реализовать поддержку Postgres. Нужен Jira — ещё одна интеграция. Переход с Jira на Linear — снова новая интеграция, с другим API, другой авторизацией, другой обработкой ошибок.
Это та же проблема, которую REST решил для веб-сервисов в 2000-х: все строили самодельное HTTP-взаимодействие вместо стандарта. MCP для AI-инструментов — это то, что REST + JSON для веб-API: общий язык, на котором любой клиент может говорить с любым сервером без кастомного связующего кода для каждой комбинации.
Результат: вендоры инструментов пишут один MCP-сервер, и он работает с Cursor, Claude Code, Cline и любым будущим MCP-совместимым клиентом. Вы просматриваете каталог Mindaxis, выбираете серверы и подключаете их к своим инструментам.
Базовая архитектура: хосты, клиенты и серверы
MCP определяет три роли в каждом взаимодействии:
MCP Host (хост)
Хост — это AI-приложение: Cursor, Claude Code, Cline, Claude Desktop или любое приложение, встраивающее LLM. Хост управляет сессией пользователя и решает, к каким MCP-серверам подключаться.
MCP Client (клиент)
Клиент — это реализация протокола внутри хоста. Каждое подключение к серверу получает свой экземпляр клиента. Клиент выполняет рукопожатие MCP, согласование возможностей и маршрутизацию сообщений.
MCP Server (сервер)
Сервер — то, что пишете вы (или вендор инструмента). Он предоставляет возможности AI-модели через три примитива:
- Tools (инструменты) — функции, которые модель может вызывать:
query_database,create_jira_ticket,run_test_suite - Resources (ресурсы) — данные, которые модель может читать: содержимое файлов, записи БД, страницы документации
- Prompts (промпты) — шаблонные промпты, направляющие поведение модели для конкретных задач
Модель не вызывает MCP-серверы напрямую. Она просит хост вызвать их, используя формат вызова функций. Хост маршрутизирует вызов на нужный сервер, возвращает результат, и модель продолжает рассуждение с новой информацией.
Транспортный уровень: stdio vs SSE
MCP поддерживает два механизма транспорта. Правильный выбор важен для безопасности и архитектуры развёртывания.
stdio (локальные серверы)
stdio — простейший транспорт. Хост запускает MCP-сервер как дочерний процесс и общается через стандартный ввод/вывод, используя сообщения JSON-RPC 2.0. Пример конфига в формате Cursor:
{
"mcpServers": {
"my-local-tool": {
"command": "node",
"args": ["/path/to/my-mcp-server/index.js"],
"env": {
"DATABASE_URL": "${env:DATABASE_URL}"
}
}
}
}
Преимущества stdio:
- Простота — нет сети, портов и TLS-сертификатов
- Безопасность по умолчанию — сервер работает только пока работает хост, без открытого сокета
- Простая отладка — можно запустить сервер вручную и набирать JSON в консоли
Используйте stdio для: локальных инструментов разработки, клиентов БД, операций с файловой системой, запуска тестов, интеграции с git.
SSE (удалённые серверы)
Server-Sent Events (SSE) транспорт позволяет использовать удалённые MCP-серверы — процессы на отдельных машинах или в облаке. Хост подключается к HTTP-эндпоинту: SSE для потоковых ответов от сервера, стандартный HTTP POST для запросов от клиента.
{
"mcpServers": {
"remote-tool": {
"url": "https://api.example.com/mcp",
"headers": {
"Authorization": "Bearer ${env:API_TOKEN}"
}
}
}
}
SSE подходит для: общей командной инфраструктуры, SaaS-интеграций, сервисов с требованиями к персистентному состоянию и тяжёлым ресурсам.
Настройка первого MCP-сервера
Создадим минимальный MCP-сервер на Node.js с помощью пакета @modelcontextprotocol/sdk. Сервер предоставляет один инструмент: get_weather.
npm install @modelcontextprotocol/sdk
// weather-server.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "weather-server",
version: "1.0.0",
});
server.tool(
"get_weather",
"Получить текущую погоду для города",
{
city: z.string().describe("Название города"),
units: z.enum(["celsius", "fahrenheit"]).default("celsius"),
},
async ({ city, units }) => {
// В реальном сервере — вызов weather API
return {
content: [
{
type: "text",
text: JSON.stringify({
city,
temperature: units === "celsius" ? 18 : 64,
condition: "Переменная облачность",
}),
},
],
};
}
);
const transport = new StdioServerTransport();
await server.connect(transport);
Компилируйте и запускайте через npx tsx weather-server.ts. Затем добавьте в конфиг Cursor и перезапустите редактор.
Вместо ручной настройки используйте Mindaxis Builder: выберите серверы из каталога и получите правильные конфиги для Cursor, Claude Code, Claude Desktop и VS Code одновременно.
Согласование возможностей (handshake)
При подключении хоста к MCP-серверу выполняется рукопожатие:
- Initialize — клиент отправляет версию протокола и свои возможности; сервер отвечает своими
- List capabilities — клиент запрашивает список инструментов, ресурсов и промптов сервера
- Нормальная работа — модель вызывает инструменты и читает ресурсы по мере необходимости
Соображения безопасности
MCP-серверы выполняются с теми же правами, что и процесс, который их запускает. Сервер с доступом к шеллу выполняет команды от вашего имени с вашими правами на файловую систему. Безопасность критически важна.
Принцип минимальных привилегий
Каждый сервер должен иметь доступ только к тому, что ему нужно. Сервер документации не должен иметь прав на запись в файловую систему. Сервер БД должен использовать read-only подключение, если запись не требуется. Создавайте отдельные сервисные аккаунты для MCP-серверов с доступом к чувствительным ресурсам.
Никогда не доверяйте аргументам инструментов
AI-модели можно манипулировать, заставляя вызывать инструменты с неожиданными аргументами — это называется prompt injection. Ваш MCP-сервер должен валидировать все входные данные. Используйте схемную валидацию (Zod, JSON Schema) для всех параметров инструментов.
Избегайте выполнения произвольных shell-команд
Никогда не реализуйте MCP-инструмент, который передаёт произвольные строки в exec() или spawn() в режиме shell. Если выполнение команд необходимо — используйте allowlist команд и валидируйте все аргументы. Подробнее — в руководстве по безопасности Mindaxis.
Управление секретами
Никогда не хардкодьте API-ключи и секреты в конфиге MCP-серверов. Используйте ссылки на переменные окружения:
- Cursor:
${env:VAR_NAME} - VS Code:
${input:inputId} - Claude Desktop: поле
envв конфиге сервера, значения из shell profile
Аутентификация SSE
Удалённые MCP-серверы, доступные по сети, обязаны требовать аутентификацию. Используйте bearer-токены или API-ключи в заголовке Authorization. Не выставляйте неаутентифицированный MCP-эндпоинт в публичный интернет.
MCP на практике: основные категории серверов
В каталоге Mindaxis — более 100 доступных MCP-серверов. Наиболее полезные категории для разработчиков:
- Базы данных — Postgres, MySQL, SQLite, MongoDB, Redis: запросы к схеме, анализ планов запросов, генерация миграций
- Контроль версий — git: история коммитов, дифф веток, контекст изменений
- Трекеры задач — GitHub Issues, Jira, Linear, Notion: AI видит тикеты, acceptance criteria, связанные задачи
- Документация — внутренняя документация, ADR, runbooks: AI отвечает на вопросы о системе без постоянного копипасты
- Облачная инфраструктура — AWS, GCP, Azure: конфигурации ресурсов, CloudWatch-логи, состояние деплоев
Что MCP не является
MCP — это протокол для использования инструментов и предоставления контекста во время AI-сессий. Он не является:
- Универсальным RPC-фреймворком (для этого gRPC или tRPC)
- Системой оркестрации агентов (это управляет хост-приложение)
- Заменой вашего API-слоя (MCP-серверы обычно вызывают ваши API, а не заменяют их)
- Самостоятельной границей безопасности (безопасность MCP-сервера полностью зависит от его реализации)
Как начать работу с MCP
Самый быстрый способ — выбрать несколько хорошо поддерживаемых серверов из каталога Mindaxis и использовать Builder для генерации правильных конфигов. Builder разбирается с разницей форматов между Cursor, Claude Code, Claude Desktop и VS Code — вы просто выбираете нужные серверы.
Если хотите написать собственный MCP-сервер — официальная документация MCP содержит SDK для TypeScript, Python, Kotlin и C#. Начните с stdio-транспорта для локальной разработки, затем рассмотрите SSE, если сервер нужно разделить между командой.
