The MCP (Model Context Protocol) connector allows Claude to access tools from external MCP servers. This enables integration with third-party services and custom tool providers.
Note: MCP connector requires the beta header mcp-client-2025-11-20. Set this in the AnthropicOptions.BetaHeaders property.
Use the convenience method to create a message with an MCP server.
Anthropic := TsgcHTTP_API_Anthropic.Create(nil);
Anthropic.AnthropicOptions.ApiKey := 'API_KEY';
Anthropic.AnthropicOptions.BetaHeaders := 'mcp-client-2025-11-20';
WriteLn(Anthropic._CreateMessageWithMCP('claude-sonnet-4-20250514',
'What tools are available?',
'https://my-mcp-server.example.com/sse',
'my-mcp-server'));
Use the typed classes for full control over MCP server configuration, including authentication.
Anthropic := TsgcHTTP_API_Anthropic.Create(nil);
Anthropic.AnthropicOptions.ApiKey := 'API_KEY';
Anthropic.AnthropicOptions.BetaHeaders := 'mcp-client-2025-11-20';
oRequest := TsgcAnthropicClass_Request_Messages.Create;
Try
oRequest.Model := 'claude-sonnet-4-20250514';
oRequest.MaxTokens := 4096;
// Configure MCP server
oServer := TsgcAnthropicClass_Request_MCPServer.Create;
oServer.ServerType := 'url';
oServer.Url := 'https://my-mcp-server.example.com/sse';
oServer.Name := 'my-server';
oServer.AuthorizationToken := 'OAUTH_TOKEN'; // Optional auth
oServers := oRequest.MCPServers;
SetLength(oServers, 1);
oServers[0] := oServer;
oRequest.MCPServers := oServers;
// Add MCP toolset
oTool := TsgcAnthropicClass_Request_Tool.Create;
oTool.ToolType := 'mcp_toolset';
oTool.MCPServerName := 'my-server';
oTools := oRequest.Tools;
SetLength(oTools, 1);
oTools[0] := oTool;
oRequest.Tools := oTools;
// Add user message
oMessage := TsgcAnthropicClass_Request_Message.Create;
oMessage.Role := 'user';
oMessage.Content := 'Search for recent news about AI.';
oMessages := oRequest.Messages;
SetLength(oMessages, 1);
oMessages[0] := oMessage;
oRequest.Messages := oMessages;
oResponse := Anthropic.CreateMessage(oRequest);
Try
for i := 0 to Length(oResponse.Content) - 1 do
begin
if oResponse.Content[i].ContentType = 'text' then
WriteLn(oResponse.Content[i].Text)
else if oResponse.Content[i].ContentType = 'mcp_tool_use' then
WriteLn(Format('MCP tool call: %s on %s',
[oResponse.Content[i].Name, oResponse.Content[i].ServerName]));
end;
Finally
oResponse.Free;
End;
Finally
oServer.Free;
oTool.Free;
oMessage.Free;
oRequest.Free;
End;