# MCP-серверы

MCP (Model Context Protocol — Протокол контекста моделей) — это открытый стандарт от Anthropic, позволяющий Claude Code подключаться к внешним инструментам, базам данных, API и сервисам. С помощью MCP вы можете значительно расширить возможности Claude Code.

## Что такое MCP?

### Основные понятия

MCP — это **открытый протокол**, определяющий стандарт взаимодействия между ИИ-ассистентом и внешними системами. Он включает три основных компонента:

| Компонент | Описание | Примеры |
|-----------|----------|---------|
| **Tools (Инструменты)** | Выполняемые действия | Запросы к БД, HTTP-запросы, операции с файлами |
| **Resources (Ресурсы)** | Данные для чтения | Содержимое файлов, ответы API, записи в БД |
| **Prompts (Промпты)** | Предопределённые шаблоны задач | Шаблоны ревью кода, генерации отчётов |

### Зачем нужен MCP?

- **Расширение возможностей**: даёт Claude доступ к системам, которые иначе недоступны

- **Актуальные данные**: получение свежей документации, содержимого БД, данных API

- **Автоматизация операций**: деплой, отправка уведомлений, управление ресурсами

- **Конфиденциальность**: данные обрабатываются локально, без загрузки в облако

## Быстрый старт

### Проверка статуса MCP

```
> /mcp
```

Показывает статус текущих настроенных MCP-серверов.

### Добавление MCP-сервера

Используйте команду `claude mcp add` для добавления сервера:

```bash
# Добавление сервера файловой системы
claude mcp add filesystem npx -y @modelcontextprotocol/server-filesystem /path/to/directory

# Добавление сервера базы данных SQLite
claude mcp add sqlite npx -y mcp-server-sqlite ./database.db

# Добавление пользовательского сервера
claude mcp add my-server node /path/to/server.js
```

### Настройка через конфигурационный файл

Также можно создать файл `.mcp.json` в корне проекта:

```json
{
  "filesystem": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"]
  },
  "database": {
    "command": "npx",
    "args": ["-y", "mcp-server-sqlite", "./data.db"]
  }
}
```

## Популярные MCP-серверы

### Файловая система

Доступ к локальной файловой системе:

```json
{
  "filesystem": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/directory"]
  }
}
```

**Возможности**: чтение, запись, поиск файлов в указанной директории.

### База данных SQLite

Подключение к базе данных SQLite:

```json
{
  "sqlite": {
    "command": "npx",
    "args": ["-y", "mcp-server-sqlite", "./database.db"]
  }
}
```

**Возможности**: выполнение SQL-запросов, управление структурой базы данных.

### GitHub

Подключение к репозиториям GitHub:

```json
{
  "github": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-github"],
    "env": {
      "GITHUB_TOKEN": "${GITHUB_TOKEN}"
    }
  }
}
```

**Возможности**: управление Issues, PR, операции с репозиториями.

### Context7 (Поиск документации)

Получение актуальной документации библиотек:

```json
{
  "context7": {
    "command": "npx",
    "args": ["-y", "@context7/mcp-server"]
  }
}
```

**Возможности**: получение актуальной документации и примеров кода любых библиотек.

### Supabase

Подключение к бэкенду Supabase:

```json
{
  "supabase": {
    "command": "npx",
    "args": ["-y", "@supabase/mcp-server"],
    "env": {
      "SUPABASE_URL": "${SUPABASE_URL}",
      "SUPABASE_KEY": "${SUPABASE_KEY}"
    }
  }
}
```

**Возможности**: операции с базой данных, аутентификация, управление хранилищем.

### Playwright (Автоматизация браузера)

Автоматизация браузерных операций и создание снимков страниц:

```json
{
  "playwright": {
    "command": "npx",
    "args": ["-y", "@anthropic-ai/mcp-server-playwright"]
  }
}
```

**Возможности**: скриншоты страниц, заполнение форм, навигация, клики по элементам.

### Tavily (Веб-поиск)

Предоставление Claude возможности поиска в интернете в реальном времени:

```json
{
  "tavily": {
    "command": "npx",
    "args": ["-y", "tavily-mcp-server"],
    "env": {
      "TAVILY_API_KEY": "${TAVILY_API_KEY}"
    }
  }
}
```

**Возможности**: веб-поиск, извлечение содержимого страниц, исследования.

### Docker

Управление контейнерами:

```json
{
  "docker": {
    "command": "npx",
    "args": ["-y", "@docker/mcp-server"]
  }
}
```

**Возможности**: управление контейнерами, образами, сетями.

## Типы серверов

### stdio (Локальный процесс)

Наиболее распространённый тип, запускается как локальный дочерний процесс:

```json
{
  "my-server": {
    "command": "node",
    "args": ["./server.js"],
    "env": {
      "API_KEY": "${API_KEY}"
    }
  }
}
```

**Особенности**:

- Работает локально, данные не покидают машину

- Claude Code управляет жизненным циклом процесса

- Подходит для файловой системы, локальных баз данных и т. п.

### SSE (Server-Sent Events)

> **⚠️ Начиная с MCP spec 2025-11-25, SSE объявлен устаревшим.** Для новых подключений используйте **Streamable HTTP** (см. раздел HTTP ниже). SSE сохраняется только для обратной совместимости с существующими серверами.


Подключение к удалённым MCP-серверам:

```json
{
  "remote-server": {
    "type": "sse",
    "url": "https://mcp.example.com/sse"
  }
}
```

**Особенности**:

- Подходит для облачных сервисов

- Поддержка OAuth-аутентификации

- Не требует локальной установки

### HTTP

REST API-подход:

```json
{
  "api-server": {
    "type": "http",
    "url": "https://api.example.com/mcp",
    "headers": {
      "Authorization": "Bearer ${API_TOKEN}"
    }
  }
}
```

## Переменные окружения

Конфигурация MCP поддерживает подстановку переменных окружения:

```json
{
  "my-server": {
    "command": "node",
    "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],
    "env": {
      "DATABASE_URL": "${DATABASE_URL}",
      "API_KEY": "${API_KEY}",
      "DEFAULT_NAMESPACE": "${K8S_NAMESPACE:-default}"
    }
  }
}
```

**Синтаксис**:

- `${VAR}` — подстановка значения переменной окружения

- `${VAR:-default}` — если переменная не задана, используется значение по умолчанию

## Практические примеры

### Пример 1: Помощник для работы с базой данных

```json
{
  "postgres": {
    "command": "npx",
    "args": ["-y", "mcp-server-postgres"],
    "env": {
      "DATABASE_URL": "postgresql://user:pass@localhost/mydb"
    }
  }
}
```

Использование:

```
> Посчитай общую сумму заказов за последние 7 дней
> Найди топ-10 пользователей по количеству покупок
```

### Пример 2: Администрирование Kubernetes

```json
{
  "kubernetes": {
    "command": "node",
    "args": ["./k8s-mcp-server.js"],
    "env": {
      "KUBECONFIG": "${KUBECONFIG}",
      "K8S_NAMESPACE": "${K8S_NAMESPACE:-default}"
    }
  }
}
```

Использование:

```
> Покажи статус всех подов
> Перезапусти деплоймент api-server
> Покажи последние логи ошибок
```

### Пример 3: Конфигурация нескольких серверов

```json
{
  "filesystem": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "./src"]
  },
  "database": {
    "command": "npx",
    "args": ["-y", "mcp-server-sqlite", "./data.db"]
  },
  "github": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-github"],
    "env": {
      "GITHUB_TOKEN": "${GITHUB_TOKEN}"
    }
  }
}
```

## Устранение неполадок

### Сервер не запускается

1. Проверьте, что команда правильно установлена:
   ```bash
   npx -y @modelcontextprotocol/server-filesystem --help
   ```

2. Проверьте, что переменные окружения заданы:
   ```bash
   echo $GITHUB_TOKEN
   ```

3. Просмотрите логи Claude Code для получения информации об ошибке

### Инструменты недоступны

1. Используйте `/mcp` для проверки статуса сервера

2. Убедитесь в корректности формата конфигурационного файла (синтаксис JSON)

3. Перезапустите Claude Code для перезагрузки конфигурации

### Проблемы с правами доступа

- Убедитесь, что есть права на чтение/запись по указанным путям

- Проверьте корректность строки подключения к базе данных

- Убедитесь, что API-токен действителен и имеет достаточные права

## Рекомендации по безопасности

1. **Принцип минимальных привилегий**: предоставляйте только необходимые права доступа

2. **Защита конфиденциальной информации**: храните токены и пароли в переменных окружения

3. **Ограничение доступа к путям**: сервер файловой системы должен открывать только необходимые директории

4. **Регулярная ротация ключей**: периодически обновляйте API-токены

## Замечания по безопасности

MCP-сервер работает с вашими правами — он может читать данные, вызывать инструменты и получать доступ к учётным данным. Подключение стороннего MCP-сервера фактически означает встраивание внешнего кода в вашу среду разработки, поэтому относиться к нему следует осторожно.

**Основные риски**

- **Утечка данных**: вредоносный или скомпрометированный сервер может отправить ваш код, файлы или содержимое переписки на внешний адрес.

- **Отравление инструментов (tool poisoning)**: сервер встраивает скрытые инструкции в описания инструментов, подталкивая Claude к действиям, которые вы не авторизовали.

- **Раскрытие учётных данных**: неправильно настроенный сервер может прочитать переменные окружения, секреты или токены.

- **Избыточные полномочия**: предоставление возможностей инструментов сверх реально необходимого расширяет поверхность атаки.

**Ключевые меры защиты**

- **Устанавливайте только доверенные серверы**: отдавайте предпочтение официальным, проверенным или открытым и поддающимся аудиту MCP-серверам; избегайте реализаций неизвестного происхождения.

- **Минимальные привилегии**: проверяйте заявленные области действия инструментов каждого сервера по отдельности и открывайте только действительно нужные возможности и каталоги.

- **Сохраняйте этапы ручного подтверждения**: Claude Code запрашивает разрешение перед вызовом инструмента — не подтверждайте вслепую и не включайте полное автоодобрение для деструктивных операций, записи или действий с учётными данными.

- **Изолируйте учётные данные**: при запуске команд в песочнице используйте `sandbox.credentials`, чтобы запретить процессам в песочнице чтение секретов и переменных окружения.

- **Аудит вызовов**: записывайте и периодически проверяйте журнал вызовов инструментов, чтобы вовремя выявлять аномальное поведение.

Полную модель угроз, настройку песочницы и изоляции учётных данных см. в разделе [Лучшие практики безопасности](/docs/advanced/security).

## Следующие шаги

- Изучите [Систему плагинов](/docs/advanced/plugins) для создания пользовательской функциональности

- Смотрите [Советы по CLI](/docs/usage/cli-tips) для повышения эффективности

- Исследуйте [Советы по рабочим процессам](/docs/usage/workflow-tips) для оптимизации процесса разработки