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.

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

Характеристика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. Подробный ранжированный разбор с заметками по настройке - в подборке лучших MCP-серверов 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

Здесь пример намеренно короткий. Полная последовательность — окружение, дизайн 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()

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

  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. Отдельный гайд по безопасности 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.

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

  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

Отметку в 100M установок в месяц MCP прошёл к апрелю 2026 - примерно через полтора года после запуска.

Заключение

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-модель понимает, какой инструмент вызвать и с какими параметрами - без дополнительного промптинга.