Функция коннектора «Model Context Protocol» (MCP) в Claude позволяет подключаться к удалённым серверам MCP напрямую через Messages API без отдельного клиента MCP.
Текущая версия: Эта функция требует бета-заголовка: "anthropic-beta": "mcp-client-2025-11-20"
Предыдущая версия (mcp-client-2025-04-04) устарела. См. Устаревшая версия: mcp-client-2025-04-04.
Эта функция не подпадает под действие политики Zero Data Retention (ZDR). Данные хранятся в соответствии со стандартной политикой хранения данных для этой функции.
После подключения сервера MCP Claude вызывает его инструменты, когда запрос пользователя соответствует описанной возможности инструмента — либо явно («найди в Jira открытые баги»), либо неявно («что блокирует релиз?» при подключённом сервере Jira).
Claude не вызывает инструмент MCP для общих вопросов о подключённом сервисе. На вопрос «как работают базы данных Notion?» при подключённом сервере Notion ответ даётся напрямую; вопрос «что находится в моей базе данных Projects?» запускает инструмент.
Вы можете управлять тем, насколько охотно Claude вызывает инструменты MCP, через системную подсказку. См. Когда Claude использует инструменты для общих рекомендаций и примеров формулировок.
Коннектор MCP использует два компонента:
mcp_servers): задаёт параметры подключения к серверу (URL, аутентификация)tools): настраивает, какие инструменты включить и как их сконфигурироватьЭтот пример включает все инструменты с сервера MCP с конфигурацией по умолчанию:
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-4-8",
max_tokens=1000,
messages=[{"role": "user", "content": "What tools do you have available?"}],
mcp_servers=[
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "example-mcp",
"authorization_token": "YOUR_TOKEN",
}
],
tools=[{"type": "mcp_toolset", "mcp_server_name": "example-mcp"}],
betas=["mcp-client-2025-11-20"],
)
print(response)Каждый сервер MCP в массиве mcp_servers определяет параметры подключения:
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "example-mcp",
"authorization_token": "YOUR_TOKEN"
}| Свойство | Тип | Обязательное | Описание |
|---|---|---|---|
type | string | Да | В настоящее время поддерживается только "url". |
url | string | Да | URL сервера MCP. Должен начинаться с https://. |
name | string | Да | Уникальный идентификатор этого сервера MCP. На него должен ссылаться ровно один MCPToolset в массиве tools. |
authorization_token | string | Нет | Токен авторизации OAuth, если он требуется сервером MCP. См. спецификацию MCP. |
MCPToolset находится в массиве tools и настраивает, какие инструменты с сервера MCP включены и как они должны быть сконфигурированы.
{
"type": "mcp_toolset",
"mcp_server_name": "example-mcp",
"default_config": {
"enabled": true,
"defer_loading": false
},
"configs": {
"specific_tool_name": {
"enabled": true,
"defer_loading": true
}
}
}| Свойство | Тип | Обязательное | Описание |
|---|---|---|---|
type | string | Да | Должно быть "mcp_toolset". |
mcp_server_name | string | Да | Должно совпадать с именем сервера, определённым в массиве mcp_servers. |
default_config | object | Нет | Конфигурация по умолчанию, применяемая ко всем инструментам в этом наборе. Конфигурации отдельных инструментов в configs переопределяют эти значения по умолчанию. |
configs | object | Нет | Переопределения конфигурации для отдельных инструментов. Ключи — имена инструментов, значения — объекты конфигурации. |
cache_control | object | Нет | Конфигурация точки разрыва кэша для кэширования подсказок для этого набора инструментов. |
Каждый инструмент (настроенный в default_config или в configs) поддерживает следующие поля:
| Свойство | Тип | По умолчанию | Описание |
|---|---|---|---|
enabled | boolean | true | Включён ли этот инструмент. |
defer_loading | boolean | false | Если true, описание инструмента изначально не отправляется модели. Используется с инструментом поиска инструментов. |
Полный каталог инструментов, предоставляемых Anthropic, и дополнительные свойства, такие как defer_loading, см. в справочнике по инструментам. Для поиска по большим наборам инструментов см. инструмент поиска инструментов.
Значения конфигурации объединяются со следующим приоритетом (от высшего к низшему):
configsdefault_config на уровне набораПример:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"default_config": {
"defer_loading": true
},
"configs": {
"search_events": {
"enabled": false
}
}
}Результат:
search_events: enabled: false (из configs), defer_loading: true (из default_config)enabled: true (системное значение по умолчанию), defer_loading: true (из default_config)Самый простой шаблон — включить все инструменты с сервера:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp"
}Установите enabled: false по умолчанию, затем явно включите конкретные инструменты:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"default_config": {
"enabled": false
},
"configs": {
"search_events": {
"enabled": true
},
"create_event": {
"enabled": true
}
}
}Включите все инструменты по умолчанию, затем явно отключите нежелательные. Запрет инструментов записи или деструктивных инструментов рекомендуется при создании ассистентов только для чтения или когда требуется подтверждение человеком перед изменением состояния:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"configs": {
"delete_all_events": {
"enabled": false
},
"share_calendar_publicly": {
"enabled": false
}
}
}Объедините список разрешённых с пользовательской конфигурацией для каждого инструмента:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"default_config": {
"enabled": false,
"defer_loading": true
},
"configs": {
"search_events": {
"enabled": true,
"defer_loading": false
},
"list_events": {
"enabled": true
}
}
}В этом примере:
search_events включён с defer_loading: falselist_events включён с defer_loading: true (унаследовано из default_config)API применяет следующие правила валидации:
mcp_server_name в MCPToolset должен совпадать с сервером, определённым в массиве mcp_serversmcp_servers, должен ссылаться ровно один MCPToolsetconfigs не существует на сервере MCP, в журнал бэкенда записывается предупреждение, но ошибка не возвращается (серверы MCP могут иметь динамическую доступность инструментов)Когда Claude использует инструменты MCP, ответ включает два новых типа блоков содержимого:
{
"type": "mcp_tool_use",
"id": "mcptoolu_014Q35RayjACSWkSj4X2yov1",
"name": "echo",
"server_name": "example-mcp",
"input": { "param1": "value1", "param2": "value2" }
}{
"type": "mcp_tool_result",
"tool_use_id": "mcptoolu_014Q35RayjACSWkSj4X2yov1",
"is_error": false,
"content": [
{
"type": "text",
"text": "Hello"
}
]
}Вы можете подключиться к нескольким серверам MCP, включив несколько определений серверов в mcp_servers и соответствующий MCPToolset для каждого в массив tools:
{
"model": "claude-opus-4-8",
"max_tokens": 1000,
"messages": [
{
"role": "user",
"content": "Use tools from both mcp-server-1 and mcp-server-2 to complete this task"
}
],
"mcp_servers": [
{
"type": "url",
"url": "https://mcp.example1.com/sse",
"name": "mcp-server-1",
"authorization_token": "TOKEN1"
},
{
"type": "url",
"url": "https://mcp.example2.com/sse",
"name": "mcp-server-2",
"authorization_token": "TOKEN2"
}
],
"tools": [
{
"type": "mcp_toolset",
"mcp_server_name": "mcp-server-1"
},
{
"type": "mcp_toolset",
"mcp_server_name": "mcp-server-2",
"default_config": {
"defer_loading": true
}
}
]
}При наличии множества доступных инструментов Claude выбирает их на основе имён и описаний инструментов. Чёткие, конкретные описания инструментов повышают точность выбора. Для больших наборов инструментов (десятки инструментов на нескольких серверах) рассмотрите возможность включения defer_loading вместе с инструментом поиска инструментов, чтобы для каждого запроса отображались только релевантные инструменты.
Для серверов MCP, требующих аутентификации OAuth, вам потребуется получить токен доступа. Бета-версия коннектора MCP поддерживает передачу параметра authorization_token в определении сервера MCP.
Ожидается, что потребители API самостоятельно выполнят процесс OAuth и получат токен доступа до выполнения вызова API, а также будут обновлять токен по мере необходимости.
Инспектор MCP может провести вас через процесс получения токена доступа для целей тестирования.
Запустите инспектор следующей командой. На вашем компьютере должен быть установлен Node.js.
npx @modelcontextprotocol/inspectorВ боковой панели слева для «Transport type» выберите «SSE» или «Streamable HTTP».
Введите URL сервера MCP.
В правой области нажмите кнопку «Open Auth Settings» после «Need to configure authentication?».
Нажмите «Quick OAuth Flow» и авторизуйтесь на экране OAuth.
Следуйте шагам в разделе «OAuth Flow Progress» инспектора и нажимайте «Continue», пока не дойдёте до «Authentication complete».
Скопируйте значение access_token.
Вставьте его в поле authorization_token в конфигурации вашего сервера MCP.
После получения токена доступа с помощью любого из описанных выше процессов OAuth вы можете использовать его в конфигурации вашего сервера MCP:
{
"mcp_servers": [
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "authenticated-server",
"authorization_token": "YOUR_ACCESS_TOKEN_HERE"
}
]
}Подробные объяснения процесса OAuth см. в разделе об авторизации спецификации MCP.
Если вы управляете собственным клиентским подключением MCP (например, с локальными серверами stdio, подсказками MCP или ресурсами MCP), SDK предоставляют вспомогательные функции, которые преобразуют типы MCP в типы Claude API и обратно. Это избавляет от необходимости писать код преобразования вручную при использовании SDK MCP (например, TypeScript MCP SDK) вместе с Anthropic SDK.
Эти вспомогательные функции доступны в SDK для Python, TypeScript, Java, Go, Ruby и PHP. Они пока недоступны в SDK для C#. Примеры в этом разделе используют TypeScript; в других языках импортируйте эквивалентные вспомогательные функции из:
anthropic.lib.tools.mcp (установка через pip install anthropic[mcp])com.anthropic.mcp.BetaMcp в модуле anthropic-java-mcpgithub.com/anthropics/anthropic-sdk-go/mcpAnthropic::Mcp (требуется gem mcp)Anthropic\Lib\Tools\BetaMcpИспользуйте параметр API mcp_servers, если у вас есть удалённые серверы, доступные по URL, и вам нужна только поддержка инструментов. Используйте вспомогательные функции на стороне клиента, если вам нужны локальные серверы, подсказки, ресурсы или больший контроль над подключением с помощью базового SDK.
Установите Anthropic SDK и MCP SDK:
npm install @anthropic-ai/sdk @modelcontextprotocol/sdkИмпортируйте вспомогательные функции из пространства имён beta:
import {
mcpTools,
mcpMessages,
mcpResourceToContent,
mcpResourceToFile
} from "@anthropic-ai/sdk/helpers/beta/mcp";| Вспомогательная функция | Описание |
|---|---|
mcpTools(tools, mcpClient) | Преобразует инструменты MCP в инструменты Claude API для использования с client.beta.messages.toolRunner() |
mcpMessages(messages) | Преобразует сообщения подсказок MCP в формат сообщений Claude API |
mcpResourceToContent(resource) | Преобразует ресурс MCP в блок содержимого Claude API |
mcpResourceToFile(resource) | Преобразует ресурс MCP в объект файла для загрузки |
Преобразуйте инструменты MCP для использования с исполнителем инструментов SDK, который автоматически обрабатывает выполнение инструментов:
import { mcpTools } from "@anthropic-ai/sdk/helpers/beta/mcp";
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const anthropic = new Anthropic();
// Подключение к серверу MCP
const transport = new StdioClientTransport({ command: "mcp-server", args: [] });
const mcpClient = new Client({ name: "my-client", version: "1.0.0" });
await mcpClient.connect(transport);
// Получение списка инструментов и их преобразование для Claude API
const { tools } = await mcpClient.listTools();
const finalMessage = await anthropic.beta.messages.toolRunner({
model: "claude-opus-4-8",
max_tokens: 1024,
messages: [{ role: "user", content: "What tools do you have available?" }],
tools: mcpTools(tools, mcpClient)
});
console.log(finalMessage);Преобразуйте сообщения подсказок MCP в формат сообщений Claude API:
import { mcpMessages } from "@anthropic-ai/sdk/helpers/beta/mcp";
const { messages } = await mcpClient.getPrompt({ name: "my-prompt" });
const response = await anthropic.beta.messages.create({
model: "claude-opus-4-8",
max_tokens: 1024,
messages: mcpMessages(messages)
});
console.log(response);Преобразуйте ресурсы MCP в блоки содержимого для включения в сообщения или в объекты файлов для загрузки:
import { mcpResourceToContent, mcpResourceToFile } from "@anthropic-ai/sdk/helpers/beta/mcp";
// Как блок содержимого в сообщении
const resource = await mcpClient.readResource({ uri: "file:///path/to/doc.txt" });
await anthropic.beta.messages.create({
model: "claude-opus-4-8",
max_tokens: 1024,
messages: [
{
role: "user",
content: [
mcpResourceToContent(resource),
{ type: "text", text: "Summarize this document" }
]
}
]
});
// Как загруженный файл
const fileResource = await mcpClient.readResource({ uri: "file:///path/to/data.json" });
await anthropic.beta.files.upload({ file: mcpResourceToFile(fileResource) });Функции преобразования выбрасывают UnsupportedMCPValueError, если значение MCP не поддерживается Claude API. Это может произойти с неподдерживаемыми типами содержимого, MIME-типами или ссылками на ресурсы, отличными от HTTP.
Вы можете включать mcp_servers в запросы Message Batches API. Вызовы инструментов MCP через Batches API тарифицируются так же, как и в обычных запросах Messages API.
Коннектор MCP не покрывается соглашениями ZDR. Данные, которыми обмениваются с серверами MCP, включая определения инструментов и результаты выполнения, хранятся в соответствии со стандартной политикой хранения данных Anthropic.
Информацию о применимости ZDR ко всем функциям см. в разделе API и хранение данных.
Если вы используете устаревший бета-заголовок mcp-client-2025-04-04, следуйте этому руководству для миграции на новую версию.
mcp-client-2025-04-04 на mcp-client-2025-11-20tools в виде объектов MCPToolset, а не в определении сервера MCPДо (устаревшая версия):
{
"model": "claude-opus-4-8",
"max_tokens": 1000,
"messages": [
// ...
],
"mcp_servers": [
{
"type": "url",
"url": "https://mcp.example.com/sse",
"name": "example-mcp",
"authorization_token": "YOUR_TOKEN",
"tool_configuration": {
"enabled": true,
"allowed_tools": ["tool1", "tool2"]
}
}
]
}После (текущая версия):
{
"model": "claude-opus-4-8",
"max_tokens": 1000,
"messages": [
// ...
],
"mcp_servers": [
{
"type": "url",
"url": "https://mcp.example.com/sse",
"name": "example-mcp",
"authorization_token": "YOUR_TOKEN"
}
],
"tools": [
{
"type": "mcp_toolset",
"mcp_server_name": "example-mcp",
"default_config": {
"enabled": false
},
"configs": {
"tool1": {
"enabled": true
},
"tool2": {
"enabled": true
}
}
}
]
}| Старый шаблон | Новый шаблон |
|---|---|
Нет tool_configuration (все инструменты включены) | MCPToolset без default_config и configs |
tool_configuration.enabled: false | MCPToolset с default_config.enabled: false |
tool_configuration.allowed_tools: [...] | MCPToolset с default_config.enabled: false и конкретными инструментами, включёнными в configs |
Эта версия устарела. Выполните миграцию на mcp-client-2025-11-20, используя приведённое выше руководство по миграции.
Предыдущая версия коннектора MCP включала конфигурацию инструментов непосредственно в определение сервера MCP:
{
"mcp_servers": [
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "example-mcp",
"authorization_token": "YOUR_TOKEN",
"tool_configuration": {
"enabled": true,
"allowed_tools": ["example_tool_1", "example_tool_2"]
}
}
]
}| Свойство | Тип | Описание |
|---|---|---|
tool_configuration | object | Устарело: вместо этого используйте MCPToolset в массиве tools |
tool_configuration.enabled | boolean | Устарело: используйте default_config.enabled в MCPToolset |
tool_configuration.allowed_tools | array | Устарело: используйте шаблон списка разрешённых с configs в MCPToolset |
Was this page helpful?