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 (нач. 2026), через GitHub Copilot Chat
- ChatGPT (OpenAI) — интеграция через MCP
- Gemini (Google) — поддержка MCP серверов
- Microsoft Copilot — интеграция в Copilot, VS Code и Windows 11
- Windsurf (Codeium) — поддержка в IDE
- JetBrains — нативная поддержка с мая 2026 (IntelliJ IDEA 2025.2+, поддержка входящего MCP-сервера IDE и исходящего клиента)
- 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.
Код и репозитории
| Сервер | Пакет | Описание |
|---|---|---|
| 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
Подготовка
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. Подробный разбор production-паттернов для кастомных серверов — авторизация, rate limiting, деплой — в гайде по MCP-серверам в production.
Авторизация
Спецификация MCP (текущая revision 2025-11-25; RC 2026-07-28 заморожен с 21 мая 2026, финальная публикация — 28 июля) описывает авторизацию для HTTP-транспорта на базе OAuth 2.1. Для stdio авторизация — на уровне окружения: переменные и файлы конфигурации.
В июне 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
Для сравнения: npm-пакету React потребовалось 3 года для достижения 100M установок в месяц. MCP прошёл ту же отметку за 16 месяцев.
Заключение
MCP — не buzzword. Это инфраструктурный стандарт, решающий конкретную проблему: подключение AI к реальному миру через единый протокол.
Что делать сейчас:
- Подключите 2-3 MCP-сервера к Claude Code или Cursor. GitHub + Brave Search или Exa — минимум для любого разработчика
- Напишите свой сервер — 30 строк на TypeScript или Python. Оберните внутренний API или базу данных
- Следите за спецификацией — roadmap 2026 меняет транспорт и мультиагентные сценарии
MCP меняет не то, что AI делает, а то, к чему у него есть доступ. Правильные инструменты в правильном контексте — разница между AI-ассистентом и AI-напарником.