Туториалы

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.

Сравнение транспортов

ХарактеристикаstdioStreamable HTTP
РазвёртываниеЛокальный процессУдалённый сервер
КлиентыОдин (запустивший процесс)Множество одновременно
МасштабированиеНетГоризонтальное (load balancer)
АутентификацияЧерез envOAuth 2.1, bearer tokens
ЛатентностьМинимальная (IPC)Сетевая (HTTP)
НастройкаПростая (command + args)Нужен HTTP-сервер
Типичное применениеDev tools, CLISaaS, team servers, production

Начинайте со stdio. Переходите на Streamable HTTP, когда серверу нужно обслуживать нескольких разработчиков или работать удалённо.

Жизненный цикл соединения

Подключение MCP-клиента к серверу проходит через несколько этапов:

  1. Initialize — клиент отправляет initialize с информацией о себе (имя, версия, поддерживаемые capabilities)
  2. Server response — сервер отвечает своими capabilities (какие tools, resources, prompts доступны)
  3. Initialized — клиент подтверждает готовность нотификацией notifications/initialized
  4. Working — обмен запросами: tools/list, tools/call, resources/read и т.д.
  5. Shutdown — закрытие соединения при завершении сессии

Весь обмен идёт через JSON-RPC 2.0 — запросы, ответы и нотификации. Клиент и сервер могут отправлять нотификации асинхронно (например, сервер уведомляет об изменении списка tools).

Capabilities: Tools, Resources, Prompts

MCP-сервер может предоставлять три типа возможностей:

ТипКто вызываетАналогияПример
ToolsAI-модель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 CodeCursor
Файл конфигурации.mcp.json.cursor/mcp.json
Глобальный конфиг~/.claude/.mcp.json~/.cursor/mcp.json
Транспортstdio, HTTPstdio, HTTP
УправлениеCLI (claude mcp add/list)GUI (Settings → MCP)
Agent-режимВсегда (CLI — агентный)Только в Agent mode

Топ-20 MCP серверов

Из 10 000+ доступных серверов — двадцать, которые покрывают основные потребности разработчика. Все актуальны на июнь 2026.

Код и репозитории

СерверПакетОписание
GitHubRemote: https://api.githubcopilot.com/mcp или Docker: ghcr.io/github/github-mcp-serverПолный доступ к GitHub: issues, PR, code search, файлы, actions. Самый популярный MCP сервер
GitLabgitlab-org/gitlab-mcp (официальный от GitLab)Аналог GitHub-сервера для GitLab: merge requests, issues, pipelines. Старый @modelcontextprotocol/server-gitlab — архивирован
Filesystem@modelcontextprotocol/server-filesystemБезопасный доступ к файловой системе. Ограничен указанными директориями

Базы данных

СерверПакетОписание
PostgreSQLmcp-postgres-server (сторонний)Запросы к PostgreSQL, чтение схемы, анализ данных. Официальный @modelcontextprotocol/server-postgres — архивирован
SupabaseMCP встроен в Supabase CLISQL-запросы, управление миграциями, edge functions. Учитывает Row Level Security
SQLite@modelcontextprotocol/server-sqlite (Python, официальный)Работа с SQLite-базами: запросы, анализ, создание таблиц

Поиск и данные

СерверПакетОписание
Brave Searchbrave/brave-search-mcp-server (официальный от Brave)Веб-поиск, поиск новостей, изображений, видео через Brave API. Старый @modelcontextprotocol/server-brave-search — архивирован
Exaexa-mcp-serverСемантический поиск по вебу. Находит контент по смыслу, а не по ключевым словам
Fetch@modelcontextprotocol/server-fetchЗагрузка веб-страниц, конвертация в Markdown для AI

Коммуникации и документация

СерверПакетОписание
Slackzencoder-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Управление кластерами, диагностика подов, анализ логов

Дизайн и браузер

СерверПакетОписание
Figmafigma-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 от описаний инструментов начнёт съедать контекст.

Минимальный набор для разработчика:

  1. GitHub — код, issues, PR
  2. Brave Search или Exa — поиск документации и решений
  3. 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);

Что здесь происходит

  1. McpServer — экземпляр сервера с именем и версией
  2. registerTool — регистрация инструмента. inputSchema использует Zod для валидации. AI-модель видит описание и схему, вызывает инструмент с нужными параметрами
  3. registerResource — регистрация ресурса с сигнатурой (name, uri, metadata, handler). В отличие от tool, resource вызывает приложение (Host), а не AI-модель напрямую. Так в модель попадает контекст
  4. 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()

Что здесь происходит

  1. FastMCP — высокоуровневый фреймворк из официального SDK. Генерирует описания инструментов из docstring и type hints автоматически
  2. @mcp.tool() — декоратор регистрации. Тип city: str становится inputSchema, docstring — описанием
  3. @mcp.resource() — декоратор для ресурса с URI-паттерном
  4. @mcp.prompt() — декоратор для шаблона промпта
  5. 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 в GitHub
  • execute_sql — выполнить SQL-запрос
  • send_message — отправить сообщение в Slack
  • search_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 — структурированное описание бага

Когда что использовать

ВопросToolsResourcesPrompts
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.

Паттерн для команды:

  1. Локальные серверы (filesystem, sqlite) — stdio, на машине разработчика
  2. Shared серверы (GitHub, Sentry, внутренние API) — Streamable HTTP, деплой в Docker/Kubernetes
  3. Конфигурация — .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 к реальному миру через единый протокол.

Что делать сейчас:

  1. Подключите 2-3 MCP-сервера к Claude Code или Cursor. GitHub + Brave Search или Exa — минимум для любого разработчика
  2. Напишите свой сервер — 30 строк на TypeScript или Python. Оберните внутренний API или базу данных
  3. Следите за спецификацией — roadmap 2026 меняет транспорт и мультиагентные сценарии

MCP меняет не то, что AI делает, а то, к чему у него есть доступ. Правильные инструменты в правильном контексте — разница между AI-ассистентом и AI-напарником.

Часто задаваемые вопросы

Что такое MCP сервер и зачем он нужен?
MCP сервер — программа, которая реализует Model Context Protocol и предоставляет AI-ассистенту доступ к внешнему ресурсу (базе данных, API, файлам). Без MCP каждая интеграция требует кастомного кода. С MCP — один протокол для любых инструментов. Поддерживается Claude Code, Cursor, VS Code, ChatGPT и другими платформами.
Как подключить MCP сервер к Claude Code?
Два способа: 1) через CLI — команда claude mcp add имя-сервера, 2) через файл .mcp.json в корне проекта с конфигурацией серверов в формате JSON. Конфигурация включает команду запуска, аргументы и переменные окружения. Перезапустите Claude Code после добавления.
Сколько MCP серверов можно подключить одновременно?
Технически — без ограничений. Практически рекомендуется 3-5 серверов. Каждый сервер добавляет описания инструментов в контекст AI, что расходует токены. Подключайте только серверы, которые реально используете в текущем проекте.
Как написать свой MCP сервер?
Используйте официальный SDK: @modelcontextprotocol/sdk для TypeScript или mcp для Python. Минимальный сервер — 30-40 строк кода: создание экземпляра McpServer (TS) или FastMCP (Python), регистрация tools/resources, подключение транспорта. Подробные примеры — в документации modelcontextprotocol.io.
MCP и API — в чём разница?
API — интерфейс для программ. MCP — протокол для AI-ассистентов. MCP сервер может оборачивать любой API, но добавляет семантику: описание инструментов на естественном языке, типизированные схемы ввода/вывода, стандартный транспорт. AI-модель понимает, какой инструмент вызвать и с какими параметрами — без дополнительного промптинга.