Функция коннектора Model Context Protocol (MCP) Claude позволяет подключаться к удалённым серверам MCP непосредственно из Messages API без отдельного клиента MCP.
Текущая версия: Эта функция требует бета-заголовок: "anthropic-beta": "mcp-client-2025-11-20"
Предыдущая версия (mcp-client-2025-04-04) устарела. См. документацию устаревшей версии ниже.
This feature is not eligible for Zero Data Retention (ZDR). Data is retained according to the feature's standard retention policy.
Коннектор MCP использует два компонента:
mcp_servers): Определяет детали подключения сервера (URL, аутентификация)tools): Настраивает, какие инструменты включить и как их настроитьЭтот пример включает все инструменты с сервера MCP с конфигурацией по умолчанию:
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-4-7",
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-7",
"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
}
}
]
}Для серверов 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), TypeScript SDK предоставляет вспомогательные функции, которые преобразуют типы MCP в типы Claude API. Это исключает необходимость в коде ручного преобразования при использовании SDK MCP вместе с SDK Anthropic.
Эти вспомогательные функции в настоящее время доступны только в TypeScript SDK.
Используйте параметр API mcp_servers, когда у вас есть удалённые серверы, доступные через URL, и вам нужна только поддержка инструментов. Используйте вспомогательные функции на стороне клиента, когда вам нужны локальные серверы, подсказки, ресурсы или больше контроля над подключением с базовым SDK.
Установите как SDK Anthropic, так и SDK MCP:
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();
// Connect to an MCP server
const transport = new StdioClientTransport({ command: "mcp-server", args: [] });
const mcpClient = new Client({ name: "my-client", version: "1.0.0" });
await mcpClient.connect(transport);
// List tools and convert them for the Claude API
const { tools } = await mcpClient.listTools();
const runner = await anthropic.beta.messages.toolRunner({
model: "claude-sonnet-4-6",
max_tokens: 1024,
messages: [{ role: "user", content: "What tools do you have available?" }],
tools: mcpTools(tools, mcpClient)
});Преобразуйте сообщения подсказок 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-sonnet-4-6",
max_tokens: 1024,
messages: mcpMessages(messages)
});Преобразуйте ресурсы MCP в блоки содержимого для включения в сообщения или в объекты файлов для загрузки:
import { mcpResourceToContent, mcpResourceToFile } from "@anthropic-ai/sdk/helpers/beta/mcp";
// As a content block in a message
const resource = await mcpClient.readResource({ uri: "file:///path/to/doc.txt" });
await anthropic.beta.messages.create({
model: "claude-sonnet-4-6",
max_tokens: 1024,
messages: [
{
role: "user",
content: [
mcpResourceToContent(resource),
{ type: "text", text: "Summarize this document" }
]
}
]
});
// As a file upload
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 не охватывается соглашениями 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-7",
"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-7",
"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?