MCP-серверы
MCP (Model Context Protocol)
В этой папке собрана подробная документация и примеры конфигураций MCP-серверов, а также сценарии их использования с Claude Code.
Обзор
MCP (Model Context Protocol) - это стандартизированный способ предоставить Claude доступ к внешним инструментам, API и источникам актуальных данных. В отличие от Memory, MCP обеспечивает доступ к динамически изменяющимся данным в режиме реального времени.
Ключевые особенности:
- Доступ к внешним сервисам в реальном времени
- Синхронизация данных «на лету»
- Расширяемая архитектура
- Безопасная аутентификация
- Взаимодействие через инструменты (tools)
Архитектура MCP
graph TB A["Claude"] B["MCP Server"] C["External Service"] A -->|Request: list_issues| B B -->|Query| C C -->|Data| B B -->|Response| A A -->|Request: create_issue| B B -->|Action| C C -->|Result| B B -->|Response| A style A fill:#e1f5fe,stroke:#333,color:#333 style B fill:#f3e5f5,stroke:#333,color:#333 style C fill:#e8f5e9,stroke:#333,color:#333Экосистема MCP
graph TB A["Claude"] -->|MCP| B["Filesystem<br/>MCP Server"] A -->|MCP| C["GitHub<br/>MCP Server"] A -->|MCP| D["Database<br/>MCP Server"] A -->|MCP| E["Slack<br/>MCP Server"] A -->|MCP| F["Google Docs<br/>MCP Server"] B -->|File I/O| G["Local Files"] C -->|API| H["GitHub Repos"] D -->|Query| I["PostgreSQL/MySQL"] E -->|Messages| J["Slack Workspace"] F -->|Docs| K["Google Drive"] style A fill:#e1f5fe,stroke:#333,color:#333 style B fill:#f3e5f5,stroke:#333,color:#333 style C fill:#f3e5f5,stroke:#333,color:#333 style D fill:#f3e5f5,stroke:#333,color:#333 style E fill:#f3e5f5,stroke:#333,color:#333 style F fill:#f3e5f5,stroke:#333,color:#333 style G fill:#e8f5e9,stroke:#333,color:#333 style H fill:#e8f5e9,stroke:#333,color:#333 style I fill:#e8f5e9,stroke:#333,color:#333 style J fill:#e8f5e9,stroke:#333,color:#333 style K fill:#e8f5e9,stroke:#333,color:#333Способы установки MCP
Claude Code поддерживает несколько транспортных протоколов для подключения к MCP-серверам:
HTTP-транспорт (рекомендуется)
Транспорт Stdio (локальный)
Для локально запущенных MCP-серверов:
CLAUDE_PROJECT_DIR для stdio-серверов (v2.1.139+)
Каждый MCP stdio-сервер запускается с уже установленной в его окружении переменной CLAUDE_PROJECT_DIR=<абсолютный путь к корню репозитория> - по тому же соглашению, что и для hooks. В плагинных и проектных файлах .mcp.json можно ссылаться на ${CLAUDE_PROJECT_DIR} в значениях command, args и env; подстановка выполняется до вызова execve():
Используйте это, когда вашему stdio-серверу нужно читать файлы относительно корня проекта независимо от того, из какой директории был запущен Claude Code.
stdio MCP-серверы также получают CLAUDE_CODE_SESSION_ID (совпадающий со значением, передаваемым в hooks и Bash), в том числе при возобновлении сессии через --resume (v2.1.163+).
Транспорт SSE (устаревший)
Транспорт Server-Sent Events признан устаревшим в пользу http, но по-прежнему поддерживается:
Рабочие каталоги сессии (roots/list)
MCP-серверы могут получать список рабочих каталогов сессии: каталог запуска и все записи --add-dir/additionalDirectories возвращаются через MCP-запрос roots/list, а при любом изменении этого набора отправляется уведомление notifications/roots/list_changed (v2.1.203). Тайм-аут простоя теперь распространяется и на stdio-серверы (30 минут), при этом заданный для сервера timeout служит нижней границей времени простоя (v2.1.203).
Особенности Windows
В нативной Windows (не WSL) для команд npx используйте cmd /c:
Аутентификация OAuth 2.0
Claude Code поддерживает OAuth 2.0 для MCP-серверов, которым он требуется. При подключении к серверу с поддержкой OAuth Claude Code берёт на себя весь процесс аутентификации:
| Feature | Description |
|---|---|
| Interactive OAuth | Use /mcp to trigger the browser-based OAuth flow |
| Pre-configured OAuth clients | Built-in OAuth clients for common services like Notion, Stripe, and others (v2.1.30+) |
| Pre-configured credentials | --client-id, --client-secret, --callback-port flags for automated setup |
| Token storage | Tokens are stored securely in your system keychain |
| Step-up auth | Supports step-up authentication for privileged operations |
| Discovery caching | OAuth discovery metadata is cached for faster reconnections |
| Metadata override | oauth.authServerMetadataUrl in .mcp.json to override default OAuth metadata discovery |
Переопределение discovery метаданных OAuth
Если ваш MCP server возвращает ошибки на стандартном endpoint метаданных OAuth (/.well-known/oauth-authorization-server), но при этом предоставляет рабочий OIDC endpoint, вы можете указать Claude Code получать метаданные OAuth с определённого URL. Задайте authServerMetadataUrl в объекте oauth в конфигурации вашего сервера:
URL должен использовать https://. Для этой опции требуется Claude Code v2.1.64 или более поздней версии.
Уведомление об аутентификации при запуске и обновление динамических заголовков (v2.1.193)
- Уведомление об аутентификации при запуске (v2.1.193+): При запуске Claude Code выводит уведомление со списком MCP-серверов, которым всё ещё требуется аутентификация, чтобы сервер, требующий входа, не оставался молча неработающим.
- Автообновление
headersHelper(v2.1.193+): если вы передаёте пользовательскую аутентификацию черезheadersHelper, helper автоматически вызывается повторно, когда сервер возвращает HTTP 401 или 403. Учётные данные обновляются на лету без ручного переподключения. См. Использование динамических заголовков для пользовательской аутентификации.
MCP-коннекторы Claude.ai
MCP-серверы, настроенные в вашей учётной записи Claude.ai, автоматически доступны в Claude Code. Это означает, что любые MCP-подключения, настроенные через веб-интерфейс Claude.ai, будут доступны без дополнительной конфигурации.
MCP-коннекторы Claude.ai также доступны в режиме --print (v2.1.83+), что позволяет использовать их в неинтерактивном режиме и в скриптах.
Замечание о запуске (v2.1.117+): когда одновременно настроены локальные и claude.ai MCP-серверы, по умолчанию используется параллельное подключение (ранее - последовательное), что снижает задержку запуска при работе с несколькими серверами.
Чтобы отключить MCP-серверы Claude.ai в Claude Code, установите переменной окружения ENABLE_CLAUDEAI_MCP_SERVERS значение false:
Примечание: Эта функция доступна только пользователям, выполнившим вход с учётной записью Claude.ai.
Процесс настройки MCP
sequenceDiagram participant User participant Claude as Claude Code participant Config as Config File participant Service as External Service User->>Claude: Type /mcp Claude->>Claude: List available MCP servers Claude->>User: Show options User->>Claude: Select GitHub MCP Claude->>Config: Update configuration Config->>Claude: Activate connection Claude->>Service: Test connection Service-->>Claude: Authentication successful Claude->>User: ✅ MCP connected!Команда /mcp
Введите /mcp в сессии, чтобы вывести список подключённых серверов, запустить OAuth-аутентификацию и проверить состояние подключения.
- Начиная с версии v2.1.121, MCP повторяет попытку начального подключения до 3 раз при временных ошибках.
- Начиная с версии v2.1.128,
/mcpотображает количество инструментов для каждого подключённого сервера и визуально помечает серверы, у которых заявлено 0 инструментов, - так некорректно настроенные серверы сразу бросаются в глаза.
Поиск инструментов MCP
Когда описания инструментов MCP занимают более 10% окна контекста, Claude Code автоматически включает поиск по инструментам, чтобы подбирать нужные инструменты, не перегружая контекст модели.
| Setting | Value | Description |
|---|---|---|
ENABLE_TOOL_SEARCH | auto (default) | Automatically enables when tool descriptions exceed 10% of context |
ENABLE_TOOL_SEARCH | auto:<N> | Automatically enables at a custom threshold of N tools |
ENABLE_TOOL_SEARCH | true | Always enabled regardless of tool count |
ENABLE_TOOL_SEARCH | false | Disabled; all tool descriptions sent in full |
Примечание: Для поиска инструментов требуется Sonnet 4 или новее, либо Opus 4 или новее. Модели Haiku поиском инструментов не поддерживаются.
Отключение поиска инструментов для отдельных серверов (v2.1.121+)
Если инструменты определённого MCP-сервера нужны на каждом шаге, укажите в его
конфигурации "alwaysLoad": true, чтобы пропустить отложенную загрузку через поиск
и держать эти инструменты постоянно доступными:
Используйте умеренно - каждый постоянно загружаемый инструмент занимает место в контексте, которое иначе могло бы использоваться поиском по инструментам для подбора более подходящего.
Динамическое обновление инструментов
Claude Code поддерживает MCP-уведомления list_changed. Когда MCP-сервер динамически добавляет, удаляет или изменяет доступные инструменты, Claude Code получает уведомление и автоматически обновляет список инструментов - переподключение или перезапуск не требуются.
MCP Apps
MCP Apps - первое официальное расширение MCP, позволяющее вызовам MCP-инструментов возвращать интерактивные UI-компоненты, которые отрисовываются прямо в интерфейсе чата. Вместо ответов простым текстом MCP-серверы могут отдавать полноценные дашборды, формы, визуализации данных и многошаговые сценарии - всё отображается прямо в чате, без выхода из диалога.
MCP Elicitation
MCP-серверы могут запрашивать у пользователя структурированный ввод через интерактивные диалоги (v2.1.49+). Это позволяет MCP-серверу запросить дополнительную информацию по ходу выполнения - например, попросить подтверждение, предложить выбор из списка вариантов или заполнение обязательных полей, - добавляя интерактивности во взаимодействие с MCP-сервером.
Ограничение размера описаний и инструкций
Начиная с v2.1.84, Claude Code применяет ограничение в 2 КБ на описания и инструкции инструментов для каждого MCP-сервера. Это не даёт отдельным серверам занимать чрезмерно много контекста излишне многословными определениями инструментов, уменьшает раздувание контекста и сохраняет эффективность взаимодействий.
MCP-промпты как slash-команды
MCP-серверы могут предоставлять промпты, которые отображаются в Claude Code как slash-команды. Промпты доступны по следующему соглашению об именовании:
Например, если сервер с именем github предоставляет prompt с названием review, вызвать его можно как /mcp__github__review.
Дедупликация серверов
Когда один и тот же MCP-сервер определён на нескольких уровнях (local, project, user), приоритет имеет локальная конфигурация. Это позволяет без конфликтов переопределять настройки MCP уровня проекта или пользователя локальными изменениями.
Недавние исправления жизненного цикла (v2.1.136)
В версии v2.1.136 исправлены две давние ошибки жизненного цикла MCP - если у вас конфигурация с несколькими серверами, ради этого стоит обновиться:
- MCP-серверы сохраняются после
/clear: серверы, настроенные через.mcp.json, плагины или коннекторы claude.ai, больше не исчезают после/clearв VS Code, JetBrains и Agent SDK. В предыдущих версиях они молча пропадали, и требовался перезапуск. - Исправление гонки при одновременном обновлении OAuth refresh token: конфигурации с несколькими OAuth-серверами больше не теряют refresh token, когда несколько серверов одновременно пытаются его обновить. Это устраняет ситуацию «каждое утро приходится заново авторизовываться», с которой сталкивались пользователи с несколькими MCP-серверами под защитой OAuth.
MCP-ресурсы через @-упоминания
Ссылаться на MCP-ресурсы прямо в prompt можно с помощью синтаксиса упоминаний через @:
Например, чтобы сослаться на конкретный ресурс базы данных:
Это позволяет Claude получать и встраивать содержимое ресурсов MCP непосредственно в контекст диалога.
Области действия MCP
Конфигурации MCP можно хранить в разных областях действия с различными уровнями общего доступа:
| Scope | Flag | Location | Description | Shared With | Requires Approval |
|---|---|---|---|---|---|
| Local (default) | --scope local | ~/.claude.json (under project path) | Private to current user, current project only (was called project in older versions) | Just you | No |
| Project | --scope project | .mcp.json | Checked into git repository | Team members | Yes (first use) |
| User | --scope user | ~/.claude.json | Available across all projects (was called global in older versions) | Just you | No |
При добавлении сервера укажите область действия с помощью --scope (краткая форма -s). Если её не указать, Claude Code использует local: |
Использование области проекта
Храните конфигурации MCP для конкретного проекта в .mcp.json:
Участники команды увидят запрос на подтверждение при первом использовании проектных MCP. В недоверенной рабочей области серверы, самоодобренные репозиторием через закоммиченный .claude/settings.json, не запускаются автоматически командами claude mcp list/get - для них отображается статус ⏸ Pending approval, пока вы не примете диалог доверия, а параметр enableAllProjectMcpServers в недоверенной папке игнорируется (v2.1.196).
Управление конфигурацией MCP
Добавление MCP-серверов
Примечание: В JSON-конфигурациях -
.mcp.json,~/.claude.jsonилиclaude mcp add-json- полеtypeпринимает значениеstreamable-httpкак алиас дляhttp. В спецификации MCP этот транспорт называетсяstreamable-http, поэтому конфигурации, скопированные из документации самого сервера, работают без изменений.
claude mcp login <name> / claude mcp logout <name> - неинтерактивный эквивалент OAuth-потока из меню /mcp: позволяет пройти аутентификацию или выйти, не открывая это меню. Добавьте флаг --no-browser к login, чтобы выполнить OAuth через SSH или в headless-сессии (поток будет перенаправлен через stdin).
Таблица доступных MCP-серверов
| MCP Server | Purpose | Common Tools | Auth | Real-time |
|---|---|---|---|---|
| Filesystem | File operations | read, write, delete | OS permissions | ✅ Yes |
| GitHub | Repository management | list_prs, create_issue, push | OAuth | ✅ Yes |
| Slack | Team communication | send_message, list_channels | Token | ✅ Yes |
| Database | SQL queries | query, insert, update | Credentials | ✅ Yes |
| Google Docs | Document access | read, write, share | OAuth | ✅ Yes |
| Asana | Project management | create_task, update_status | API Key | ✅ Yes |
| Stripe | Payment data | list_charges, create_invoice | API Key | ✅ Yes |
| Memory | Persistent memory | store, retrieve, delete | Local | ❌ No |
Практические примеры
Пример 1. Конфигурация GitHub MCP
Файл: .mcp.json (в корне проекта)
Доступные инструменты GitHub MCP:
Управление Pull Request'ами
list_prs- получить список всех PR в репозиторииget_pr- получить детали PR, включая diffcreate_pr- создать новый PRupdate_pr- обновить описание/заголовок PRmerge_pr- влить PR в ветку mainreview_pr- добавить комментарии к ревью
Пример запроса:
Управление issues
list_issues- список всех issuesget_issue- получить подробную информацию об issuecreate_issue- создать новый issueclose_issue- закрыть issueadd_comment- добавить комментарий к issue
Информация о репозитории
get_repo_info- сведения о репозиторииlist_files- структура дерева файловget_file_content- прочитать содержимое файлаsearch_code- поиск по кодовой базе
Операции с commits
list_commits- история commitsget_commit- сведения о конкретном commitcreate_commit- создать новый commit
Настройка:
Подстановка переменных окружения в конфигурации
Конфигурации MCP поддерживают подстановку переменных окружения со значениями по умолчанию в качестве fallback. Синтаксис ${VAR} и ${VAR:-default} работает в следующих полях: command, args, env, url и headers.
Переменные подставляются во время выполнения:
${VAR}- использует переменную окружения; если она не задана, возвращается ошибка${VAR:-default}- использует переменную окружения, а если она не задана, подставляет значение по умолчанию
Пример 2. Настройка MCP для базы данных
Конфигурация:
Пример использования:
Настройка:
Пример 3: рабочий процесс с несколькими MCP
Сценарий: ежедневная генерация отчётов
Текущая дата: вторник, 4 августа 2026 г.
<query>Настройка: </query>
Пример 4: Операции MCP с файловой системой
Конфигурация:
Доступные операции:
| Operation | Command | Purpose |
|---|---|---|
| List files | ls ~/projects | Show directory contents |
| Read file | cat src/main.ts | Read file contents |
| Write file | create docs/api.md | Create new file |
| Edit file | edit src/app.ts | Modify file |
| Search | grep "async function" | Search in files |
| Delete | rm old-file.js | Delete file |
| Текущая дата: вторник, 4 августа 2026 г. |
Настройка: </query>
MCP vs Memory: матрица выбора
graph TD A["Need external data?"] A -->|No| B["Use Memory"] A -->|Yes| C["Does it change frequently?"] C -->|No/Rarely| B C -->|Yes/Often| D["Use MCP"] B -->|Stores| E["Preferences<br/>Context<br/>History"] D -->|Accesses| F["Live APIs<br/>Databases<br/>Services"] style A fill:#fff3e0,stroke:#333,color:#333 style B fill:#e1f5fe,stroke:#333,color:#333 style C fill:#fff3e0,stroke:#333,color:#333 style D fill:#f3e5f5,stroke:#333,color:#333 style E fill:#e8f5e9,stroke:#333,color:#333 style F fill:#e8f5e9,stroke:#333,color:#333Шаблон «запрос/ответ»
sequenceDiagram participant App as Claude participant MCP as MCP Server participant DB as Database App->>MCP: Request: "SELECT * FROM users WHERE id=1" MCP->>DB: Execute query DB-->>MCP: Result set MCP-->>App: Return parsed data App->>App: Process result App->>App: Continue task Note over MCP,DB: Real-time access<br/>No cachingПеременные окружения
Храните конфиденциальные учётные данные в переменных окружения:
Затем укажите их в конфигурации MCP:
Claude в роли MCP-сервера (claude mcp serve)
Claude Code может сам выступать в роли MCP-сервера для других приложений. Это позволяет внешним инструментам, редакторам и системам автоматизации задействовать возможности Claude через стандартный протокол MCP.
После этого другие приложения могут подключаться к этому серверу так же, как к любому MCP-серверу на базе stdio. Например, чтобы добавить Claude Code в качестве MCP-сервера в другой экземпляр Claude Code:
Это удобно для построения мультиагентных сценариев, где один экземпляр Claude оркестрирует другой.
Управляемая конфигурация MCP (Enterprise)
В корпоративных развёртываниях IT-администраторы могут задавать политики MCP-серверов через конфигурационный файл managed-mcp.json. Этот файл обеспечивает исключительный контроль над тем, какие MCP-серверы разрешены или заблокированы в рамках всей организации.
Расположение:
- macOS:
/Library/Application Support/ClaudeCode/managed-mcp.json - Linux:
~/.config/ClaudeCode/managed-mcp.json - Windows:
%APPDATA%\ClaudeCode\managed-mcp.json
Возможности:
allowedMcpServers- белый список разрешённых серверовdeniedMcpServers- чёрный список запрещённых серверовallowAllClaudeAiMcps- управляемая настройка, разрешающая загрузку облачных MCP-коннекторов claude.ai в рамках всей организации (v2.1.149+)- Поддержка сопоставления по имени сервера, команде и URL-шаблонам
- Политики MCP уровня организации применяются раньше пользовательской конфигурации
- Предотвращает несанкционированные подключения к серверам
Пример конфигурации:
Примечание: Если сервер одновременно попадает под правила
allowedMcpServersиdeniedMcpServers, приоритет имеет запрещающее правило.
MCP-серверы из состава плагина
Плагины могут поставляться с собственными MCP-серверами, которые становятся доступны автоматически после установки плагина. MCP-серверы плагина можно задать двумя способами:
- Отдельный файл
.mcp.json- поместите файл.mcp.jsonв корневой каталог плагина. - Встроенное описание в
plugin.json- опишите MCP-серверы непосредственно в манифесте плагина.
Используйте переменную ${CLAUDE_PLUGIN_ROOT} для указания путей относительно каталога установки плагина:
MCP на уровне субагента
MCP-серверы можно объявлять прямо во frontmatter агента через ключ mcpServers:, привязывая их к конкретному субагенту, а не ко всему проекту. Это удобно, когда агенту нужен доступ к определённому MCP-серверу, который не требуется остальным агентам в рабочем процессе.
MCP-серверы, привязанные к области subagent, доступны только в контексте выполнения этого агента и не разделяются с родительским или родственными агентами.
Ограничения на вывод MCP
Claude Code применяет ограничения на вывод MCP-инструментов, чтобы предотвратить переполнение контекста:
| Limit | Threshold | Behavior |
|---|---|---|
| Warning | 10,000 tokens | A warning is displayed that the output is large |
| Default max | 25,000 tokens | Output is truncated beyond this limit |
| Disk persistence | 50,000 characters | Tool results exceeding 50K characters are persisted to disk |
Максимальный размер вывода настраивается через переменную окружения MAX_MCP_OUTPUT_TOKENS: |
Автоматический перевод длительных вызовов инструментов в фоновый режим (v2.1.212)
Вызовы MCP-инструментов, выполняющиеся дольше 2 минут, теперь автоматически уходят в фон - сессия остаётся доступной для работы и не блокируется на медленном инструменте. Порог срабатывания настраивается, а само поведение можно скорректировать или полностью отключить через CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS:
Решение проблемы раздувания контекста через выполнение кода
По мере роста популярности MCP подключение к десяткам серверов с сотнями и тысячами инструментов порождает серьёзную проблему - раздувание контекста. Пожалуй, это главная проблема MCP при работе в масштабе, и инженерная команда Anthropic предложила изящное решение: использовать выполнение кода вместо прямых вызовов инструментов.
Источник: Code Execution with MCP: Building More Efficient Agents - Anthropic Engineering Blog
Проблема: два источника напрасного расхода токенов
1. Определения инструментов перегружают контекстное окно
Большинство MCP-клиентов загружают все определения инструментов заранее. При подключении к тысячам инструментов модели приходится обрабатывать сотни тысяч токенов ещё до того, как она увидит запрос пользователя.
2. Промежуточные результаты съедают дополнительные токены
Каждый промежуточный результат работы инструмента проходит через контекст модели. Возьмём для примера перенос стенограммы встречи из Google Drive в Salesforce - полный текст стенограммы проходит через контекст дважды: сначала при чтении, а затем при записи в целевую систему. Для двухчасовой встречи это может означать более 50 000 лишних токенов.
graph LR A["Model"] -->|"Tool Call: getDocument"| B["MCP Server"] B -->|"Full transcript (50K tokens)"| A A -->|"Tool Call: updateRecord<br/>(re-sends full transcript)"| B B -->|"Confirmation"| A style A fill:#ffcdd2,stroke:#333,color:#333 style B fill:#f3e5f5,stroke:#333,color:#333Решение: MCP-инструменты как code API
Вместо того чтобы прогонять определения инструментов и их результаты через контекстное окно, агент пишет код, вызывающий MCP-инструменты как API. Код исполняется в изолированной среде, а модели возвращается только итоговый результат.
graph LR A["Model"] -->|"Writes code"| B["Code Execution<br/>Environment"] B -->|"Calls tools directly"| C["MCP Servers"] C -->|"Data stays in<br/>execution env"| B B -->|"Only final result<br/>(minimal tokens)"| A style A fill:#c8e6c9,stroke:#333,color:#333 style B fill:#e1f5fe,stroke:#333,color:#333 style C fill:#f3e5f5,stroke:#333,color:#333Как это работает
Инструменты MCP представлены в виде дерева файлов с типизированными функциями:
Каждый файл инструмента содержит типизированную обёртку:
Затем агент пишет код, оркеструющий инструменты:
Результат: расход токенов снижается со ~150 000 до ~2 000 - сокращение на 98,7%.
Ключевые преимущества
| Benefit | Description |
|---|---|
| Progressive Disclosure | Agent browses the filesystem to load only the tool definitions it needs, instead of all tools upfront |
| Context-Efficient Results | Data is filtered/transformed in the execution environment before returning to the model |
| Powerful Control Flow | Loops, conditionals, and error handling run in code without round-tripping through the model |
| Privacy Preservation | Intermediate data (PII, sensitive records) stays in the execution environment; never enters the model context |
| State Persistence | Agents can save intermediate results to files and build reusable skill functions |
Пример: фильтрация больших наборов данных
Пример: цикл без обращений к модели
Компромиссы, которые стоит учитывать
Выполнение кода привносит собственную сложность. Запуск кода, сгенерированного агентом, требует:
- Безопасной изолированной среды выполнения (sandbox) с соответствующими лимитами ресурсов
- Мониторинга и логирования выполняемого кода
- Дополнительных накладных расходов на инфраструктуру по сравнению с прямыми вызовами инструментов
Преимущества - снижение расхода токенов, уменьшение задержек, более удобная композиция инструментов - следует взвешивать с учётом этих затрат на реализацию. Для агентов, работающих всего с парой MCP-серверов, прямые вызовы инструментов могут оказаться проще. Для агентов, работающих в масштабе (десятки серверов, сотни инструментов), выполнение кода даёт существенный выигрыш.
MCPorter: среда исполнения для композиции MCP-инструментов
MCPorter - это TypeScript-рантайм и CLI-инструментарий, позволяющий обращаться к MCP-серверам без лишнего шаблонного кода и помогающий бороться с разрастанием контекста за счёт выборочного подключения инструментов и типизированных обёрток.
Какую задачу решает: вместо того чтобы заранее загружать все определения инструментов со всех MCP-серверов, MCPorter позволяет обнаруживать, изучать и вызывать конкретные инструменты по мере необходимости - сохраняя контекст компактным.
Ключевые возможности:
| Feature | Description |
|---|---|
| Zero-config discovery | Auto-discovers MCP servers from Cursor, Claude, Codex, or local configs |
| Typed tool clients | mcporter emit-ts generates .d.ts interfaces and ready-to-run wrappers |
| Composable API | createServerProxy() exposes tools as camelCase methods with .text(), .json(), .markdown() helpers |
| CLI generation | mcporter generate-cli converts any MCP server into a standalone CLI with --include-tools / --exclude-tools filtering |
| Parameter hiding | Optional parameters stay hidden by default, reducing schema verbosity |
| Установка: |
Пример - композиция инструментов на TypeScript:
Пример - вызов CLI-инструмента:
MCPorter дополняет описанный выше подход с выполнением кода, предоставляя runtime-инфраструктуру для вызова MCP-инструментов как типизированных API - благодаря чему промежуточные данные легко удерживать вне контекста модели.
Лучшие практики
Вопросы безопасности
Что делать ✅
- Используйте переменные окружения для всех учётных данных
- Регулярно ротируйте токены и API-ключи (рекомендуется ежемесячно)
- По возможности используйте токены только для чтения
- Ограничивайте область доступа MCP-сервера минимально необходимой
- Отслеживайте использование MCP-серверов и логи доступа
- Используйте OAuth для внешних сервисов, когда он доступен
- Реализуйте rate limiting для MCP-запросов
- Тестируйте MCP-подключения перед использованием в production
- Документируйте все активные MCP-подключения
- Своевременно обновляйте пакеты MCP-серверов
Чего не делать ❌
- Не хардкодьте учётные данные в конфигурационных файлах
- Не коммитьте токены и секреты в git
- Не передавайте токены в командных чатах или по email
- Не используйте личные токены для командных проектов
- Не выдавайте лишних разрешений
- Не игнорируйте ошибки аутентификации
- Не выставляйте MCP endpoints в публичный доступ
- Не запускайте MCP-серверы с правами root/admin
- Не кэшируйте чувствительные данные в логах
- Не отключайте механизмы аутентификации
Лучшие практики конфигурации
- Version Control: держите
.mcp.jsonв git, но используйте переменные окружения для секретов - Least Privilege: выдавайте каждому MCP-серверу минимально необходимые права
- Изоляция: по возможности запускайте разные MCP-серверы в отдельных процессах
- Мониторинг: логируйте все MCP-запросы и ошибки для аудита
- Тестирование: проверяйте все MCP-конфигурации перед развёртыванием в production
Советы по производительности
- Кэшируйте часто запрашиваемые данные на уровне приложения
- Формулируйте MCP-запросы точечно, чтобы сократить объём передаваемых данных
- Отслеживайте время отклика MCP-операций
- Рассмотрите возможность rate limiting для внешних API
- Используйте батчинг при выполнении нескольких операций подряд
Инструкции по установке
Предварительные требования
- Установлены Node.js и npm
- Установлен Claude Code CLI
- API-токены и учётные данные для внешних сервисов
Пошаговая настройка
- Добавьте свой первый MCP-сервер через CLI (на примере GitHub):
Или создайте файл .mcp.json в корне проекта:
- Задайте переменные окружения:
- Проверьте подключение:
- Используйте MCP-инструменты:
Установка для конкретных сервисов
GitHub MCP:
Database MCP:
Filesystem MCP:
Slack MCP:
Устранение неполадок
Начните с вывода ошибки (v2.1.219+)
Если сервер не подключается, выполните claude mcp list (или /mcp внутри сессии), прежде чем что-либо менять. Claude Code теперь выводит HTTP-код ответа и текст ошибки от сервера рядом со сбойным сервером, так что вместо общего «failed to connect» вы увидите 401 Unauthorized или 404 Not Found:
Сначала посмотрите на статус - он подскажет, какое исправление применить:
401/403→ неверные или просроченные учётные данные; повторно пройдите аутентификацию командойclaude mcp login <name>404→ неверный URL (обычная причина - отсутствующий суффикс пути/mcpили/sse)5xx/ timeout → удалённый сервер недоступен; см. Тайм-аут соединения
Скрытые пробельные символы в значениях конфигурации (v2.1.219+)
Claude Code выдаёт предупреждение, когда значение в конфигурации MCP содержит пробелы в начале или в конце. Это распространённая и труднозаметная причина сбоев аутентификации: токен, скопированный из браузера или из сообщения в чате, часто тянет за собой хвостовой пробел или перевод строки, которые затем без изменений уходят в заголовок Authorization и отбрасываются как некорректные учётные данные.
Если вы видите такое предупреждение, перепроверьте значение в .mcp.json (или переменную окружения, из которой оно подставляется) и удалите лишние пробелы:
Пропуск серверов в headless-запусках (v2.1.219+)
Серверы, переданные через --mcp-config и не прошедшие проверку конфигурации, пропускаются, а не приводят к прерыванию запуска, поэтому headless-скрипт может казаться рабочим, недосчитываясь при этом половины инструментов. Теперь Claude Code сообщает, какие серверы были отброшены:
- Headless-запуски / запуски с
-p: событиеinitв stream-json содержит полеmcp_server_errorsсо списком всех пропущенных записей. Проверяйте его, прежде чем полагаться на результат запуска. - Интерактивные запуски в терминале: то же самое выводится как предупреждение при старте сессии.
MCP-сервер не найден
Ошибка аутентификации
Тайм-аут подключения
- Проверьте сетевую доступность:
ping api.github.com - Убедитесь, что API endpoint доступен
- Проверьте rate limits API
- Попробуйте увеличить timeout в конфигурации
- Проверьте, не блокируют ли соединение firewall или proxy
Падения MCP-сервера
- Проверьте логи MCP-сервера:
~/.claude/logs/ - Убедитесь, что все переменные окружения заданы
- Проверьте корректность прав доступа к файлам
- Попробуйте переустановить пакет MCP-сервера
- Проверьте, нет ли конфликтующих процессов на том же порту
Связанные концепции
Memory и MCP
- Memory: хранит постоянные, неизменяемые данные (предпочтения, контекст, историю)
- MCP: обращается к живым, изменяющимся данным (API, базы данных, сервисы реального времени)
Когда что использовать
- Memory - для: пользовательских предпочтений, истории диалогов, накопленного контекста
- MCP - для: актуальных GitHub issues, запросов к живой базе данных, данных в реальном времени
Интеграция с другими возможностями Claude
- Комбинируйте MCP с Memory для получения богатого контекста
- Используйте MCP tools в промптах для более качественных рассуждений модели
- Задействуйте несколько MCP-серверов для сложных workflow
Дополнительные ресурсы
- Официальная документация MCP
- Спецификация протокола MCP
- Репозиторий MCP на GitHub
- Доступные MCP-серверы
- MCPorter - TypeScript runtime и CLI для вызова MCP-серверов без boilerplate-кода
- Code Execution with MCP - статья в инженерном блоге Anthropic о решении проблемы разрастания контекста
- Справочник по Claude Code CLI
- Документация Claude API
Последнее обновление: 4 августа 2026 Версия Claude Code: 2.1.220 Источники:
- https://code.claude.com/docs/en/mcp
- https://code.claude.com/docs/en/changelog
- https://github.com/anthropics/claude-code/releases/tag/v2.1.117
- https://github.com/anthropics/claude-code/releases/tag/v2.1.139
- https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md
- https://code.claude.com/docs/en/model-config Совместимые модели: Claude Fable 5, Claude Opus 5, Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.8, Claude Haiku 4.5