MCP серверы: что это, зачем нужны и как подключить
Что такое MCP сервер?
MCP (Model Context Protocol) - открытый стандарт от Anthropic для подключения AI-моделей к внешним инструментам, данным и сервисам. MCP сервер - это программа, которая реализует этот протокол и предоставляет AI-ассистенту доступ к конкретному ресурсу: базе данных, API, файловой системе, сервису. Аналогия: USB - универсальный разъём для периферии, MCP - универсальный протокол для AI-интеграций.
TL;DR
- -MCP (Model Context Protocol) - открытый стандарт для подключения AI к внешним инструментам. Один протокол вместо сотен кастомных интеграций. 110M+ установок SDK в месяц
- -Архитектура: Host (Claude Code, Cursor) → Client → Server → Resource. Транспорт: stdio для локальных серверов, Streamable HTTP для удалённых
- -Три типа capabilities: Tools (действия - запросы к API, запись в БД), Resources (данные - файлы, схемы), Prompts (шаблоны взаимодействия)
- -Подключение к Claude Code: файл .mcp.json или команда claude mcp add. К Cursor: файл .cursor/mcp.json или Settings → MCP
- -Написать свой MCP сервер - 30-40 строк кода на TypeScript (@modelcontextprotocol/sdk v1.29) или Python (mcp v1.28). FastMCP покрывает 70% серверов в экосистеме
- -MCP передан в Linux Foundation (Agentic AI Foundation, дек 2025). Поддерживается Claude, Cursor, VS Code, Gemini, ChatGPT, Windsurf, Microsoft Copilot, JetBrains, OpenAI Codex CLI, Xcode, Eclipse и др. - 300+ клиентов
MCP (Model Context Protocol) - открытый стандарт для подключения AI-моделей к внешним инструментам, данным и сервисам. Создан Anthropic в ноябре 2024, передан в Linux Foundation в декабре 2025. За 18 месяцев - 110 миллионов установок SDK в месяц, 10 000+ серверов в официальном реестре (а вместе с PulseMCP и Smithery - свыше 20 000), поддержка от 300+ клиентов: Claude, Cursor, VS Code, Gemini, ChatGPT, Windsurf, Microsoft Copilot, JetBrains, Xcode и десятков других.
Эта статья - полный гайд: от концепции до рабочего кода. Архитектура, подключение готовых серверов к Claude Code и Cursor, написание своего сервера на TypeScript и Python, production-нюансы.
Что такое MCP (Model Context Protocol)
Проблема: каждая интеграция - с нуля
AI-ассистент умеет генерировать текст и код. Но чтобы работать с реальным миром - базами данных, API, файлами, сервисами - ему нужны интеграции. До MCP каждая интеграция была кастомной.
Хотите подключить Claude к GitHub? Пишите обёртку над GitHub API. К PostgreSQL? Другую обёртку. К Slack? Третью. Каждая - со своим форматом, транспортом, логикой авторизации. Cursor делает то же самое по-своему. VS Code - по-своему.
Итог: N AI-платформ × M инструментов = N×M кастомных интеграций. Не масштабируется.
Решение: один протокол для всех
MCP решает это на уровне протокола. Один стандарт - как AI-ассистент общается с внешними инструментами. Любой MCP-сервер работает с любым MCP-клиентом.
Аналогия - USB. До USB каждое устройство имело свой разъём: клавиатура - PS/2, принтер - LPT, модем - COM-порт. USB стандартизировал подключение: один разъём для всего. MCP делает то же самое для AI.
- Один MCP сервер для GitHub работает и в Claude Code, и в Cursor, и в VS Code, и в ChatGPT
- Разработчик инструмента пишет сервер один раз - он доступен на всех платформах
- Разработчик AI-платформы реализует клиент один раз - получает доступ ко всем серверам
Формула: N + M вместо N × M.
Кто поддерживает MCP
По состоянию на июнь 2026 MCP поддерживается:
- Claude Code и Claude Desktop (Anthropic) - нативная поддержка, MCP изначально создавался для Claude
- Cursor - полная поддержка в Agent-режиме
- VS Code - нативная поддержка с версии 1.99 (март 2025), через GitHub Copilot Chat
- ChatGPT (OpenAI) - интеграция через MCP
- Gemini (Google) - поддержка MCP серверов
- Microsoft Copilot - интеграция в Copilot, VS Code и Windows 11
- Windsurf (Codeium) - поддержка в IDE
- JetBrains - MCP-клиент в AI Assistant с версии 2025.1, встроенный MCP-сервер IDE - с 2025.2
- OpenAI Codex CLI - поддержка MCP-клиентов и серверов (
codex mcp add); с июня 2026 - Codex Plugins, объединяющие MCP-конфигурацию, skills и app integrations в одну единицу - Xcode - поддержка в Apple Intelligence Developer Mode (ранний доступ)
- Eclipse - через плагин MCP Bridge
- Zed - встроенная поддержка через Agent Panel
MCP - не проприетарный протокол одной компании. Это открытый стандарт, управляемый Linux Foundation через Agentic AI Foundation (AAIF).
Архитектура MCP
Четыре уровня
MCP использует клиент-серверную архитектуру с чётким разделением ответственности:
Host (Claude Code, Cursor)
└── MCP Client
└── MCP Server
└── Resource (DB, API, файлы)
Host - приложение, в котором работает AI-модель: Claude Code, Cursor, VS Code с Copilot. Host управляет жизненным циклом MCP-клиентов.
MCP Client - компонент внутри Host, держит соединение с одним MCP-сервером. Три сервера - три клиента.
MCP Server - программа, реализующая протокол. Принимает запросы от клиента, транслирует их в вызовы к ресурсу, возвращает результат. Локальный процесс или удалённый HTTP-сервер.
Resource - то, к чему сервер открывает доступ: база данных, REST API, файловая система, SaaS-сервис, внутренний инструмент.
Протокол: JSON-RPC 2.0
Под капотом MCP использует JSON-RPC 2.0 - стандартный протокол удалённого вызова процедур. Каждый запрос - JSON-объект с методом, параметрами и идентификатором:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_issues",
"arguments": {
"query": "bug in auth module",
"state": "open"
}
}
}
Клиент отправляет запрос, сервер возвращает результат. Формат стандартизирован - реализация на любом языке совместима с любым MCP-клиентом.
Транспорт: stdio и Streamable HTTP
Транспорт определяет, как клиент и сервер обмениваются JSON-RPC сообщениями. MCP поддерживает два механизма:
stdio - стандартный ввод/вывод. Сервер запускается как дочерний процесс Host. Клиент пишет в stdin, читает из stdout. Самый простой вариант для локальных серверов.
Host запускает: npx @modelcontextprotocol/server-filesystem /path/to/dir
stdin → JSON-RPC запрос
stdout ← JSON-RPC ответ
Когда использовать: локальная разработка, CLI-инструменты, серверы, которые работают на машине разработчика.
Streamable HTTP - HTTP-транспорт, введённый в марте 2025. Сервер работает как независимый HTTP-процесс, принимает POST-запросы. При необходимости использует Server-Sent Events (SSE) для потоковых ответов.
Client → POST /mcp → MCP Server (удалённый)
Client ← SSE stream ← MCP Server
Когда использовать: удалённые серверы, production-деплой, серверы в Docker/Kubernetes, multi-tenant архитектуры.
HTTP+SSE (legacy) - предыдущий транспорт для удалённых серверов, deprecated в пользу Streamable HTTP. Существующие серверы на SSE продолжают работать, новые реализации - переходят на Streamable HTTP.
Сравнение транспортов
| Характеристика | stdio | Streamable HTTP |
|---|---|---|
| Развёртывание | Локальный процесс | Удалённый сервер |
| Клиенты | Один (запустивший процесс) | Множество одновременно |
| Масштабирование | Нет | Горизонтальное (load balancer) |
| Аутентификация | Через env | OAuth 2.1, bearer tokens |
| Латентность | Минимальная (IPC) | Сетевая (HTTP) |
| Настройка | Простая (command + args) | Нужен HTTP-сервер |
| Типичное применение | Dev tools, CLI | SaaS, team servers, production |
Начинайте со stdio. Переходите на Streamable HTTP, когда серверу нужно обслуживать нескольких разработчиков или работать удалённо.
Жизненный цикл соединения
Подключение MCP-клиента к серверу проходит через несколько этапов:
- Initialize - клиент отправляет
initializeс информацией о себе (имя, версия, поддерживаемые capabilities) - Server response - сервер отвечает своими capabilities (какие tools, resources, prompts доступны)
- Initialized - клиент подтверждает готовность нотификацией
notifications/initialized - Working - обмен запросами:
tools/list,tools/call,resources/readи т.д. - Shutdown - закрытие соединения при завершении сессии
Весь обмен идёт через JSON-RPC 2.0 - запросы, ответы и нотификации. Клиент и сервер могут отправлять нотификации асинхронно (например, сервер уведомляет об изменении списка tools).
Capabilities: Tools, Resources, Prompts
MCP-сервер может предоставлять три типа возможностей:
| Тип | Кто вызывает | Аналогия | Пример |
|---|---|---|---|
| Tools | AI-модель | POST-endpoint | Создать issue в GitHub, выполнить SQL-запрос |
| Resources | Приложение (Host) | GET-endpoint | Схема базы данных, содержимое файла |
| Prompts | Пользователь | Шаблон | «Проанализируй этот код на безопасность» |
Подробнее о каждом типе - в разделе «Resources vs Tools vs Prompts».
Как подключить MCP сервер к Claude Code
Способ 1: команда claude mcp add
Самый быстрый способ - CLI-команда:
# Remote (рекомендуется) — использует официальный HTTP-endpoint GitHub
claude mcp add-json github '{"type":"http","url":"https://api.githubcopilot.com/mcp","headers":{"Authorization":"Bearer YOUR_GITHUB_PAT"}}'
Формат: claude mcp add-json <имя> '<JSON-конфигурация>'
Примеры:
# Файловая система (доступ к конкретной директории)
claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /home/user/projects
# Brave Search (официальный пакет от Brave; старый @modelcontextprotocol/server-brave-search архивирован)
claude mcp add brave-search -- npx -y @brave/brave-search-mcp-server
# PostgreSQL (@modelcontextprotocol/server-postgres архивирован; используйте актуальный сторонний пакет, например mcp-postgres-server)
claude mcp add postgres -- npx -y mcp-postgres-server postgresql://localhost/mydb
Конфигурация сохраняется - сервер доступен при следующем запуске Claude Code.
Способ 2: файл .mcp.json
Для проектной конфигурации - файл .mcp.json в корне проекта:
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp",
"headers": {
"Authorization": "Bearer $GITHUB_PERSONAL_ACCESS_TOKEN"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"],
"env": {}
},
"postgres": {
"command": "npx",
"args": ["-y", "mcp-postgres-server", "postgresql://localhost/mydb"],
"env": {}
}
}
}
- Переменные окружения - значения в
envподдерживают синтаксис$VARи${VAR}. Переменные берутся из shell-окружения при запуске - JSON без trailing commas - частая ошибка. JSON запятую после последнего элемента не допускает
- Путь к файлу:
.mcp.jsonв корне проекта - для проектных серверов;~/.claude/.mcp.json- для глобальных (персональных)
Способ 3: удалённый HTTP-сервер
Для серверов, работающих по HTTP:
{
"mcpServers": {
"my-remote-api": {
"type": "http",
"url": "https://mcp.example.com/v1",
"headers": {
"Authorization": "Bearer $MY_API_TOKEN"
}
}
}
}
Три уровня конфигурации
Claude Code поддерживает три scope для MCP-серверов:
| Scope | Файл | Кто видит | Когда использовать |
|---|---|---|---|
| Проект (shared) | .mcp.json в корне проекта | Вся команда (коммитится в git) | Серверы, нужные всем на проекте |
| Проект (personal) | .claude/.mcp.json | Только вы | Персональные серверы для проекта |
| Глобальный | ~/.claude/.mcp.json | Только вы, во всех проектах | Серверы, нужные везде |
Общие серверы проекта (GitHub, Sentry, Supabase) - в .mcp.json. Персональные инструменты (Notion, Slack) - глобально.
Проверка подключения
Более широкий обзор повседневной работы с Claude Code, за пределами MCP-серверов, - в полном гайде по Claude Code.
После настройки перезапустите Claude Code и проверьте:
claude mcp list
Или в сессии Claude Code: /mcp покажет статус всех подключённых серверов.
Частые ошибки при настройке
Сервер не запускается. Для локальных серверов проверьте доступность пакета: npx -y @modelcontextprotocol/server-filesystem --help. Пустой вывод - проблема с npm или Node.js. Для remote-серверов (GitHub) - проверьте доступность токена: echo $GITHUB_PERSONAL_ACCESS_TOKEN.
Переменные окружения не подставляются. Проверьте echo $GITHUB_TOKEN. Пусто - добавьте в .zshrc / .bashrc или .envrc.
JSON syntax error. Trailing comma после последнего элемента - JSON такое не принимает. Валидируйте: cat .mcp.json | python -m json.tool.
Сервер подключён, но tools не видны. Перезапустите Claude Code полностью (exit + новая сессия). Некоторые серверы загружаются с задержкой - дайте несколько секунд.
Как подключить MCP сервер к Cursor
Конфигурация
В Cursor - тот же формат конфигурации, другое расположение файлов:
Проектный уровень - файл .cursor/mcp.json в корне проекта:
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp",
"headers": {
"Authorization": "Bearer your-token-here"
}
}
}
}
Глобальный уровень - файл ~/.cursor/mcp.json:
{
"mcpServers": {
"brave-search": {
"command": "npx",
"args": ["-y", "@brave/brave-search-mcp-server"],
"env": {
"BRAVE_API_KEY": "your-key"
}
}
}
}
Особенности Cursor
- MCP-инструменты доступны только в Agent-режиме (не в Ask и не в Edit)
- Управление серверами: Settings → Tools & MCP - там виден статус каждого сервера и можно включать/отключать отдельные инструменты
- Cursor поддерживает как stdio, так и HTTP-транспорт
- Формат конфигурации идентичен Claude Code - тот же JSON с
mcpServers
Сравнение: Claude Code vs Cursor
| Параметр | Claude Code | Cursor |
|---|---|---|
| Файл конфигурации | .mcp.json | .cursor/mcp.json |
| Глобальный конфиг | ~/.claude/.mcp.json | ~/.cursor/mcp.json |
| Транспорт | stdio, HTTP | stdio, HTTP |
| Управление | CLI (claude mcp add/list) | GUI (Settings → MCP) |
| Agent-режим | Всегда (CLI - агентный) | Только в Agent mode |
Топ-20 MCP серверов
Из 10 000+ доступных серверов - двадцать, которые покрывают основные потребности разработчика. Все актуальны на июнь 2026. Подробный ранжированный разбор с заметками по настройке - в подборке лучших MCP-серверов 2026.
Код и репозитории
| Сервер | Пакет | Описание |
|---|---|---|
| GitHub | Remote: https://api.githubcopilot.com/mcp или Docker: ghcr.io/github/github-mcp-server | Полный доступ к GitHub: issues, PR, code search, файлы, actions. Самый популярный MCP сервер |
| GitLab | gitlab-org/gitlab-mcp (официальный от GitLab) | Аналог GitHub-сервера для GitLab: merge requests, issues, pipelines. Старый @modelcontextprotocol/server-gitlab - архивирован |
| Filesystem | @modelcontextprotocol/server-filesystem | Безопасный доступ к файловой системе. Ограничен указанными директориями |
Базы данных
| Сервер | Пакет | Описание |
|---|---|---|
| PostgreSQL | mcp-postgres-server (сторонний) | Запросы к PostgreSQL, чтение схемы, анализ данных. Официальный @modelcontextprotocol/server-postgres - архивирован |
| Supabase | MCP встроен в Supabase CLI | SQL-запросы, управление миграциями, edge functions. Учитывает Row Level Security |
| SQLite | @modelcontextprotocol/server-sqlite (Python, официальный) | Работа с SQLite-базами: запросы, анализ, создание таблиц |
Поиск и данные
| Сервер | Пакет | Описание |
|---|---|---|
| Brave Search | brave/brave-search-mcp-server (официальный от Brave) | Веб-поиск, поиск новостей, изображений, видео через Brave API. Старый @modelcontextprotocol/server-brave-search - архивирован |
| Exa | exa-mcp-server | Семантический поиск по вебу. Находит контент по смыслу, а не по ключевым словам |
| Fetch | @modelcontextprotocol/server-fetch | Загрузка веб-страниц, конвертация в Markdown для AI |
Коммуникации и документация
| Сервер | Пакет | Описание |
|---|---|---|
| Slack | zencoder-ai/mcp-server-slack (поддерживается Zencoder) | Чтение каналов, поиск сообщений, отправка, работа с тредами. Старый @modelcontextprotocol/server-slack - архивирован |
| Notion | Официальный от Notion | Поиск страниц, чтение и редактирование контента, работа с базами данных |
| Google Drive | Официальный от Google | Поиск и чтение файлов в Google Drive. Старый @modelcontextprotocol/server-gdrive - архивирован |
Мониторинг и DevOps
| Сервер | Пакет | Описание |
|---|---|---|
| Sentry | Официальный от Sentry | Поиск ошибок, анализ stack traces, корреляция с релизами |
| Grafana | Официальный от Grafana Labs | Дашборды, алерты, Prometheus/Loki запросы, инциденты |
| Kubernetes | @modelcontextprotocol/server-kubernetes | Управление кластерами, диагностика подов, анализ логов |
Дизайн и браузер
| Сервер | Пакет | Описание |
|---|---|---|
| Figma | figma-developer-mcp (официальный от Figma) | Чтение дизайн-файлов: токены, цвета, типографика, layout |
| Playwright | @playwright/mcp | Браузерная автоматизация: навигация, клики, скриншоты, тесты |
AI и Memory
| Сервер | Пакет | Описание |
|---|---|---|
| Memory | @modelcontextprotocol/server-memory | Персистентная память для AI: хранение фактов между сессиями в knowledge graph |
| Sequential Thinking | @modelcontextprotocol/server-sequential-thinking | Структурированное мышление: декомпозиция задач, пошаговый анализ |
Автоматизация
| Сервер | Пакет | Описание |
|---|---|---|
| Zapier | Через Zapier MCP Bridge | Подключение 7000+ сервисов: email, CRM, spreadsheets, уведомления |
Рекомендации по выбору
Три сервера - оптимально. Пять - потолок: дальше overhead от описаний инструментов начнёт съедать контекст.
Минимальный набор для разработчика:
- GitHub - код, issues, PR
- Brave Search или Exa - поиск документации и решений
- Sentry или Grafana - мониторинг и отладка
Дальше: PostgreSQL/Supabase для данных, Slack/Notion для коммуникации.
Написать свой MCP сервер на TypeScript
Подготовка
mkdir my-mcp-server && cd my-mcp-server
npm init -y
npm install @modelcontextprotocol/sdk zod
Полный пример: сервер с tool и resource
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",
});
// Tool: получить погоду по городу
server.registerTool(
"get_weather",
{
title: "Get Weather",
description: "Get current weather for a city",
inputSchema: {
city: z.string().describe("City name, e.g. 'Moscow'"),
},
},
async ({ city }) => {
// В реальном сервере — запрос к API погоды
const weather = {
city,
temperature: 18,
condition: "cloudy",
humidity: 65,
};
return {
content: [
{
type: "text" as const,
text: JSON.stringify(weather, null, 2),
},
],
};
}
);
// Resource: список поддерживаемых городов
server.registerResource(
"supported-cities",
"cities://supported",
{
description: "List of supported cities",
mimeType: "application/json",
},
async () => ({
contents: [
{
uri: "cities://supported",
text: JSON.stringify(["Moscow", "London", "Tokyo", "New York"]),
},
],
})
);
// Запуск через stdio-транспорт
const transport = new StdioServerTransport();
await server.connect(transport);
Что здесь происходит
- McpServer - экземпляр сервера с именем и версией
- registerTool - регистрация инструмента.
inputSchemaиспользует Zod для валидации. AI-модель видит описание и схему, вызывает инструмент с нужными параметрами - registerResource - регистрация ресурса с сигнатурой
(name, uri, metadata, handler). В отличие от tool, resource вызывает приложение (Host), а не AI-модель напрямую. Так в модель попадает контекст - StdioServerTransport - подключение через stdio. Сервер запускается как дочерний процесс Claude Code или Cursor
Подключение к Claude Code
{
"mcpServers": {
"weather": {
"command": "npx",
"args": ["tsx", "/path/to/my-mcp-server/index.ts"]
}
}
}
Или через CLI:
claude mcp add weather -- npx tsx /path/to/my-mcp-server/index.ts
Написать свой MCP сервер на Python
Здесь пример намеренно короткий. Полная последовательность — окружение, дизайн tools и локальная проверка — есть в отдельном гайде по MCP-серверу на Python.
Подготовка
mkdir my-mcp-server && cd my-mcp-server
pip install "mcp[cli]" # v1.28.1+
Или через uv (рекомендуется):
uv init my-mcp-server && cd my-mcp-server
uv add "mcp[cli]"
Полный пример: сервер с tool и resource
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("weather-server")
@mcp.tool()
def get_weather(city: str) -> dict:
"""Get current weather for a city.
Args:
city: City name, e.g. 'Moscow'
"""
# В реальном сервере — запрос к API погоды
return {
"city": city,
"temperature": 18,
"condition": "cloudy",
"humidity": 65,
}
@mcp.resource("cities://supported")
def supported_cities() -> str:
"""List of supported cities."""
import json
return json.dumps(["Moscow", "London", "Tokyo", "New York"])
@mcp.prompt()
def weather_report(city: str) -> str:
"""Generate a weather report prompt for a city."""
return f"Provide a detailed weather analysis for {city}. Include temperature trends, precipitation forecast, and clothing recommendations."
if __name__ == "__main__":
mcp.run()
Что здесь происходит
- FastMCP - высокоуровневый фреймворк из официального SDK. Генерирует описания инструментов из docstring и type hints автоматически
- @mcp.tool() - декоратор регистрации. Тип
city: strстановитсяinputSchema, docstring - описанием - @mcp.resource() - декоратор для ресурса с URI-паттерном
- @mcp.prompt() - декоратор для шаблона промпта
- mcp.run() - запуск сервера (по умолчанию stdio)
FastMCP покрывает около 70% серверов в экосистеме. Python type hints + docstrings = полноценное описание инструмента, никакого лишнего boilerplate.
Подключение к Claude Code
{
"mcpServers": {
"weather": {
"command": "python",
"args": ["/path/to/my-mcp-server/server.py"]
}
}
}
Или через uv:
{
"mcpServers": {
"weather": {
"command": "uv",
"args": ["run", "--directory", "/path/to/my-mcp-server", "server.py"]
}
}
}
Resources vs Tools vs Prompts
MCP определяет три типа capabilities. Каждый - для своего сценария. Путаница между ними - частая ошибка при проектировании серверов.
Tools - действия
Tools - то, что AI-модель вызывает самостоятельно. Аналог POST-endpoints в REST API.
Характеристики:
- Вызываются AI-моделью (model-controlled)
- Могут иметь побочные эффекты (запись в БД, отправка сообщения, создание файла)
- Принимают структурированный ввод (JSON Schema / Zod)
- Возвращают результат выполнения
Примеры:
create_issue- создать issue в GitHubexecute_sql- выполнить SQL-запросsend_message- отправить сообщение в Slacksearch_web- поиск в интернете
Модель видит список tools с описаниями и схемами - и сама решает, какой вызвать и с какими параметрами.
Resources - данные
Resources - данные, которые Host предоставляет AI-модели как контекст. Аналог GET-endpoints.
Характеристики:
- Вызываются приложением (application-controlled), не AI-моделью напрямую
- Только чтение - никаких побочных эффектов
- Используют URI-паттерны (
file:///path,db://schema/table,config://app) - Предоставляют контекст для принятия решений
Примеры:
db://schema- схема базы данныхfile:///src/config.ts- содержимое конфигурационного файлаgit://log/recent- последние коммитыenv://variables- доступные переменные окружения
Resources - способ дать модели контекст без вызова инструмента. Host решает, какие ресурсы прикрепить к запросу.
Prompts - шаблоны
Prompts - готовые шаблоны взаимодействия на выбор пользователя. Аналог сохранённых запросов.
Характеристики:
- Выбираются пользователем (user-controlled)
- Задают структуру диалога: системный промпт + пользовательское сообщение
- Могут принимать аргументы для параметризации
- Помогают стандартизировать типовые задачи
Примеры:
code_review- шаблон для ревью кода с фокусом на безопасностьsql_optimizer- анализ и оптимизация SQL-запросаbug_report- структурированное описание бага
Когда что использовать
| Вопрос | Tools | Resources | Prompts |
|---|---|---|---|
| AI должен сделать что-то? | Да | - | - |
| AI нужен контекст для решения? | - | Да | - |
| Пользователь хочет стандартный workflow? | - | - | Да |
| Есть побочные эффекты? | Возможно | Нет | Нет |
| Кто инициирует? | AI-модель | Приложение | Пользователь |
Практика: большинство серверов предоставляют tools. Resources полезны для серверов баз данных (схемы) и файловых систем. Prompts - для специализированных workflow (code review, security audit).
MCP в production
Безопасность
MCP-сервер выполняет действия от имени AI - в production это вектор атаки.
Принцип минимальных привилегий. Давайте серверу только необходимые права. PostgreSQL MCP не нужен SUPERUSER. GitHub MCP не нужен доступ к приватным репозиториям, если работа ведётся с публичными.
Валидация входных данных. SDK валидирует по схеме (Zod в TypeScript, type hints в Python), но этого мало. Проверяйте бизнес-логику: SQL-инъекции через tool-параметры реальны.
Секреты - через переменные окружения. Никогда не хардкодьте токены в конфигурации. Используйте $VAR синтаксис в .mcp.json:
{
"env": {
"DATABASE_URL": "$DATABASE_URL",
"API_TOKEN": "$MY_SECRET_TOKEN"
}
}
Аудит. Логируйте все вызовы tools - каждый потенциально деструктивен: удаление данных, отправка сообщений, изменения инфраструктуры. Без лога нет forensics. Отдельный гайд по безопасности MCP разбирает OAuth audience binding, tool approval, prompt injection, local sandboxing и безопасные audit fields. Reliability и deployment patterns описаны в гайде по MCP-серверам в production.
Авторизация
Актуальная спецификация MCP, опубликованная 28 июля 2026 года, описывает OAuth-based authorization для HTTP transports. В stdio credentials передаются через process environment, а не через этот HTTP authorization flow.
В июне 2026 стал стабильным Enterprise-Managed Authorization (EMA) - расширение для корпоративных сред. EMA позволяет организациям управлять авторизацией MCP-серверов централизованно через IdP (Okta, Microsoft Entra ID и др.): пользователь входит один раз через SSO и получает доступ ко всем подключённым серверам без отдельного OAuth для каждого. Уже поддерживают Anthropic, Microsoft, Okta, Asana, Atlassian, Canva, Figma, Linear, Supabase.
В production:
- HTTP-серверы - OAuth 2.1 с PKCE, bearer tokens в headers; в enterprise - EMA через IdP
- Stdio-серверы - секреты через env, ротация токенов
- Ограничение scope - сервер должен запрашивать минимально необходимые permissions
Мониторинг
Что мониторить:
- Latency - время ответа сервера прибавляется к latency AI-ответа
- Error rate - сломанный MCP-сервер роняет весь workflow
- Token overhead - описания инструментов занимают контекст. 20 tools по 200 токенов = 4000 токенов на каждый запрос
- Cost - каждый tool call добавляет цикл AI. Больше серверов - выше расход токенов
Grafana MCP + Prometheus для метрик, Sentry MCP для ошибок. Мониторинг MCP через MCP - рекурсия, которая работает. Для трассировки самих LLM-вызовов (латентность, стоимость, промпты) - отдельный слой observability, например Langfuse.
Масштабирование
Stdio - один процесс на одного клиента. Для командных серверов не масштабируется.
Streamable HTTP решает это: один сервер на множество клиентов. Stateless-архитектура - горизонтальное масштабирование за load balancer.
Паттерн для команды:
- Локальные серверы (filesystem, sqlite) - stdio, на машине разработчика
- Shared серверы (GitHub, Sentry, внутренние API) - Streamable HTTP, деплой в Docker/Kubernetes
- Конфигурация -
.mcp.jsonв репозитории для проектных,~/.cursor/mcp.json/~/.claude/.mcp.jsonдля персональных
Будущее MCP
Agentic AI Foundation (AAIF)
В декабре 2025 Anthropic передал MCP в Linux Foundation, где образовался Agentic AI Foundation (AAIF). Это изменение governance, а не косметический шаг:
- Нейтральное управление - MCP больше не контролируется одной компанией. Platinum-члены AAIF: AWS, Anthropic, Block, Bloomberg, Cloudflare, Google, Microsoft, OpenAI. К апрелю 2026 - 170+ членов. Председатель Governing Board - David Nalley (AWS), исполнительный директор - Mazin Gilbert
- Открытая спецификация - развитие через SEP-процесс (Specification Enhancement Proposals) с публичным обсуждением
- Совместимость - AAIF объединяет MCP, Goose (Block) и AGENTS.md (OpenAI), выравнивая стандарты
A2A Protocol
Agent-to-Agent Protocol (A2A) - стандарт от Google для коммуникации между AI-агентами, переданный в Linux Foundation. MCP закрывает связку «AI ↔ инструмент». A2A - «агент ↔ агент».
Протоколы дополняют друг друга:
- MCP: Claude Code вызывает GitHub через MCP-сервер
- A2A: Claude Code делегирует задачу специализированному агенту (например, security-reviewer), работающему со своими MCP-серверами
A2A является самостоятельным LF-проектом, не частью AAIF, но позиционируется как комплементарный стандарт. TSC A2A включает AWS, Cisco, Google, IBM Research, Microsoft, Salesforce, SAP, ServiceNow. Связка MCP + A2A - стандарт де-факто для мультиагентных систем. Как проектировать такие системы на практике - в статье про архитектуру мультиагентных систем.
Roadmap 2026
Ключевые направления из официального roadmap:
- Stateless core - MCP 2026-07-28 (Release Candidate заморожен 21 мая 2026, финальная публикация - 28 июля) делает протокол stateless на уровне ядра. Это крупнейшее изменение спецификации с момента запуска - спецификация больше не предполагает хранения состояния сессии на сервере, что позволяет горизонтально масштабировать за любым load balancer
- Extensions framework - расширения идентифицируются через reverse-DNS ID, версионируются независимо от спецификации, живут в отдельных
ext-*репозиториях - Tasks Extension - async долгоживущие операции: polling через
tasks/getвместо блокирующегоtasks/result - MCP Apps - интерактивные UI-приложения внутри MCP-хостов
- Enterprise readiness - формальная политика deprecation (12 месяцев между deprecated и removed), OAuth 2.1 hardening, audit logging
Цифры
- 110M+ установок SDK в месяц (апрель 2026; в марте - 97M+) - оба SDK в сумме
- 10 000+ серверов в официальном реестре; с учётом PulseMCP (15 000+) и Smithery (~7 300) - экосистема значительно крупнее
- Рост 4 750% за 16 месяцев (с 2M при запуске)
- npm SDK:
@modelcontextprotocol/sdk- v1.29.0 (stable, последняя в серии v1); stable v2 ожидается Q3 2026 - Python SDK:
mcp- v1.28.1 (stable), v2.0.0-beta публикуется на PyPI; stable v2 - конец июля 2026
Отметку в 100M установок в месяц MCP прошёл к апрелю 2026 - примерно через полтора года после запуска.
Заключение
MCP - не buzzword. Это инфраструктурный стандарт, решающий конкретную проблему: подключение AI к реальному миру через единый протокол.
Что делать сейчас:
- Подключите 2-3 MCP-сервера к Claude Code или Cursor. GitHub + Brave Search или Exa - минимум для любого разработчика
- Напишите свой сервер - 30 строк на TypeScript или Python. Оберните внутренний API или базу данных
- Следите за спецификацией - roadmap 2026 меняет транспорт и мультиагентные сценарии
MCP меняет не то, что AI делает, а то, к чему у него есть доступ. Правильные инструменты в правильном контексте - разница между AI-ассистентом и AI-напарником.