O recurso de conector do "Model Context Protocol", ou MCP, do Claude permite que você se conecte a servidores MCP remotos diretamente a partir da Messages API sem um cliente MCP separado.
Versão atual: Este recurso requer o cabeçalho beta: "anthropic-beta": "mcp-client-2025-11-20"
A versão anterior (mcp-client-2025-04-04) está obsoleta. Consulte Versão obsoleta: mcp-client-2025-04-04.
Este recurso não é elegível para Zero Data Retention (ZDR). Os dados são retidos de acordo com a política de retenção padrão do recurso.
Uma vez que um servidor MCP está conectado, o Claude chama suas ferramentas quando a solicitação do usuário corresponde à capacidade descrita de uma ferramenta, seja explicitamente ("pesquise no Jira por bugs abertos") ou implicitamente ("o que está bloqueando o lançamento?" com um servidor Jira anexado).
O Claude não chama uma ferramenta MCP para perguntas de conhecimento geral sobre um serviço conectado. Perguntar "como funcionam os bancos de dados do Notion?" com um servidor Notion anexado é respondido diretamente; perguntar "o que está no meu banco de dados de Projetos?" aciona a ferramenta.
Você pode orientar a prontidão com que o Claude chama ferramentas MCP através do seu prompt do sistema. Consulte Quando o Claude usa ferramentas para orientações gerais e exemplos de formulações.
O conector MCP usa dois componentes:
mcp_servers): Define os detalhes de conexão do servidor (URL, autenticação)tools): Configura quais ferramentas habilitar e como configurá-lasEste exemplo habilita todas as ferramentas de um servidor MCP com configuração padrão:
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)Cada servidor MCP no array mcp_servers define os detalhes de conexão:
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "example-mcp",
"authorization_token": "YOUR_TOKEN"
}| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
type | string | Sim | Atualmente apenas "url" é suportado. |
url | string | Sim | A URL do servidor MCP. Deve começar com https://. |
name | string | Sim | Um identificador único para este servidor MCP. Deve ser referenciado por exatamente um MCPToolset no array tools. |
authorization_token | string | Não | Token de autorização OAuth, se exigido pelo servidor MCP. Consulte a especificação MCP. |
O MCPToolset fica no array tools e configura quais ferramentas do servidor MCP estão habilitadas e como devem ser configuradas.
{
"type": "mcp_toolset",
"mcp_server_name": "example-mcp",
"default_config": {
"enabled": true,
"defer_loading": false
},
"configs": {
"specific_tool_name": {
"enabled": true,
"defer_loading": true
}
}
}| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
type | string | Sim | Deve ser "mcp_toolset". |
mcp_server_name | string | Sim | Deve corresponder a um nome de servidor definido no array mcp_servers. |
default_config | object | Não | Configuração padrão aplicada a todas as ferramentas neste conjunto. Configurações individuais de ferramentas em configs substituem esses padrões. |
configs | object | Não | Substituições de configuração por ferramenta. As chaves são nomes de ferramentas, os valores são objetos de configuração. |
cache_control | object | Não | Configuração de ponto de interrupção de cache do cache de prompt para este toolset. |
Cada ferramenta (seja configurada em default_config ou em configs) suporta os seguintes campos:
| Propriedade | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled | boolean | true | Se esta ferramenta está habilitada. |
defer_loading | boolean | false | Se true, a descrição da ferramenta não é enviada ao modelo inicialmente. Usado com a Tool search tool. |
Para o diretório completo de ferramentas fornecidas pela Anthropic e propriedades opcionais como defer_loading, consulte a Referência de ferramentas. Para pesquisar em grandes conjuntos de ferramentas, consulte Tool search tool.
Os valores de configuração são mesclados com esta precedência (da mais alta para a mais baixa):
configsdefault_config no nível do conjuntoExemplo:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"default_config": {
"defer_loading": true
},
"configs": {
"search_events": {
"enabled": false
}
}
}Resulta em:
search_events: enabled: false (de configs), defer_loading: true (de default_config)enabled: true (padrão do sistema), defer_loading: true (de default_config)O padrão mais simples - habilitar todas as ferramentas de um servidor:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp"
}Defina enabled: false como padrão e, em seguida, habilite explicitamente ferramentas específicas:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"default_config": {
"enabled": false
},
"configs": {
"search_events": {
"enabled": true
},
"create_event": {
"enabled": true
}
}
}Habilite todas as ferramentas por padrão e, em seguida, desabilite explicitamente ferramentas indesejadas. Bloquear ferramentas de escrita ou destrutivas é recomendado ao criar assistentes somente leitura, ou quando você deseja uma etapa de confirmação humana antes de mudanças de estado:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"configs": {
"delete_all_events": {
"enabled": false
},
"share_calendar_publicly": {
"enabled": false
}
}
}Combine lista de permissão com configuração personalizada para cada ferramenta:
{
"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
}
}
}Neste exemplo:
search_events está habilitada com defer_loading: falselist_events está habilitada com defer_loading: true (herdado de default_config)A API aplica estas regras de validação:
mcp_server_name em um MCPToolset deve corresponder a um servidor definido no array mcp_serversmcp_servers deve ser referenciado por exatamente um MCPToolsetconfigs não existir no servidor MCP, um aviso de backend é registrado, mas nenhum erro é retornado (servidores MCP podem ter disponibilidade dinâmica de ferramentas)Quando o Claude usa ferramentas MCP, a resposta inclui dois novos tipos de blocos de conteúdo:
{
"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"
}
]
}Você pode se conectar a múltiplos servidores MCP incluindo múltiplas definições de servidor em mcp_servers e um MCPToolset correspondente para cada um no array 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
}
}
]
}Com muitas ferramentas disponíveis, o Claude seleciona com base nos nomes e descrições das ferramentas. Descrições de ferramentas claras e específicas melhoram a precisão da seleção. Para grandes conjuntos de ferramentas (dezenas de ferramentas em vários servidores), considere habilitar defer_loading com a Tool search tool para que apenas ferramentas relevantes sejam apresentadas por consulta.
Para servidores MCP que exigem autenticação OAuth, você precisará obter um token de acesso. O beta do conector MCP suporta passar um parâmetro authorization_token na definição do servidor MCP.
Espera-se que os consumidores da API lidem com o fluxo OAuth e obtenham o token de acesso antes de fazer a chamada à API, e que atualizem o token conforme necessário.
O MCP inspector pode guiá-lo pelo processo de obtenção de um token de acesso para fins de teste.
Execute o inspector com o seguinte comando. Você precisa ter o Node.js instalado em sua máquina.
npx @modelcontextprotocol/inspectorNa barra lateral à esquerda, em "Transport type", selecione "SSE" ou "Streamable HTTP".
Insira a URL do servidor MCP.
Na área à direita, clique no botão "Open Auth Settings" após "Need to configure authentication?".
Clique em "Quick OAuth Flow" e autorize na tela OAuth.
Siga as etapas na seção "OAuth Flow Progress" do inspector e clique em "Continue" até chegar em "Authentication complete".
Copie o valor de access_token.
Cole-o no campo authorization_token na configuração do seu servidor MCP.
Depois de obter um token de acesso usando qualquer um dos fluxos OAuth anteriores, você pode usá-lo na configuração do seu servidor MCP:
{
"mcp_servers": [
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "authenticated-server",
"authorization_token": "YOUR_ACCESS_TOKEN_HERE"
}
]
}Para explicações detalhadas do fluxo OAuth, consulte a seção de Autorização na especificação MCP.
Se você gerencia sua própria conexão de cliente MCP (por exemplo, com servidores stdio locais, prompts MCP ou recursos MCP), os SDKs fornecem funções auxiliares que convertem entre tipos MCP e tipos da API do Claude. Isso elimina código de conversão manual ao usar um SDK MCP (como o TypeScript MCP SDK) junto com o SDK da Anthropic.
Esses helpers estão disponíveis nos SDKs de Python, TypeScript, Java, Go, Ruby e PHP. Ainda não estão disponíveis no SDK de C#. Os exemplos nesta seção usam TypeScript; em outras linguagens, importe os helpers equivalentes de:
anthropic.lib.tools.mcp (instale com pip install anthropic[mcp])com.anthropic.mcp.BetaMcp no módulo anthropic-java-mcpgithub.com/anthropics/anthropic-sdk-go/mcpAnthropic::Mcp (requer a gem mcp)Anthropic\Lib\Tools\BetaMcpUse o parâmetro mcp_servers da API quando você tiver servidores remotos acessíveis por URL e precisar apenas de suporte a ferramentas. Use os helpers do lado do cliente quando precisar de servidores locais, prompts, recursos ou mais controle sobre a conexão com o SDK base.
Instale tanto o SDK da Anthropic quanto o SDK MCP:
npm install @anthropic-ai/sdk @modelcontextprotocol/sdkImporte os helpers do namespace beta:
import {
mcpTools,
mcpMessages,
mcpResourceToContent,
mcpResourceToFile
} from "@anthropic-ai/sdk/helpers/beta/mcp";| Helper | Descrição |
|---|---|
mcpTools(tools, mcpClient) | Converte ferramentas MCP em ferramentas da API do Claude para uso com client.beta.messages.toolRunner() |
mcpMessages(messages) | Converte mensagens de prompt MCP para o formato de mensagem da API do Claude |
mcpResourceToContent(resource) | Converte um recurso MCP em um bloco de conteúdo da API do Claude |
mcpResourceToFile(resource) | Converte um recurso MCP em um objeto de arquivo para upload |
Converta ferramentas MCP para uso com o tool runner do SDK, que lida com a execução de ferramentas automaticamente:
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();
// Conectar a um servidor MCP
const transport = new StdioClientTransport({ command: "mcp-server", args: [] });
const mcpClient = new Client({ name: "my-client", version: "1.0.0" });
await mcpClient.connect(transport);
// Listar ferramentas e convertê-las para a API do Claude
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);Converta mensagens de prompt MCP para o formato de mensagem da API do Claude:
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);Converta recursos MCP em blocos de conteúdo para incluir em mensagens, ou em objetos de arquivo para upload:
import { mcpResourceToContent, mcpResourceToFile } from "@anthropic-ai/sdk/helpers/beta/mcp";
// Como um bloco de conteúdo em uma mensagem
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" }
]
}
]
});
// Como um upload de arquivo
const fileResource = await mcpClient.readResource({ uri: "file:///path/to/data.json" });
await anthropic.beta.files.upload({ file: mcpResourceToFile(fileResource) });As funções de conversão lançam UnsupportedMCPValueError se um valor MCP não for suportado pela API do Claude. Isso pode acontecer com tipos de conteúdo não suportados, tipos MIME ou links de recursos não HTTP.
Você pode incluir mcp_servers em requisições da Message Batches API. Chamadas de ferramentas MCP através da Batches API têm o mesmo preço que aquelas em requisições regulares da Messages API.
O conector MCP não é coberto por acordos ZDR. Dados trocados com servidores MCP, incluindo definições de ferramentas e resultados de execução, são retidos de acordo com a política padrão de retenção de dados da Anthropic.
Para elegibilidade ZDR em todos os recursos, consulte API e retenção de dados.
Se você está usando o cabeçalho beta obsoleto mcp-client-2025-04-04, siga este guia para migrar para a nova versão.
mcp-client-2025-04-04 para mcp-client-2025-11-20tools como objetos MCPToolset, não na definição do servidor MCPAntes (obsoleto):
{
"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"]
}
}
]
}Depois (atual):
{
"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
}
}
}
]
}| Padrão antigo | Padrão novo |
|---|---|
Sem tool_configuration (todas as ferramentas habilitadas) | MCPToolset sem default_config ou configs |
tool_configuration.enabled: false | MCPToolset com default_config.enabled: false |
tool_configuration.allowed_tools: [...] | MCPToolset com default_config.enabled: false e ferramentas específicas habilitadas em configs |
Esta versão está obsoleta. Migre para mcp-client-2025-11-20 usando o guia de migração anterior.
A versão anterior do conector MCP incluía a configuração de ferramentas diretamente na definição do servidor 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"]
}
}
]
}| Propriedade | Tipo | Descrição |
|---|---|---|
tool_configuration | object | Obsoleto: Use MCPToolset no array tools em vez disso |
tool_configuration.enabled | boolean | Obsoleto: Use default_config.enabled no MCPToolset |
tool_configuration.allowed_tools | array | Obsoleto: Use o padrão de lista de permissão com configs no MCPToolset |
Was this page helpful?