Anthropic | MCP Connector

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.

Simple Example

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'));

Advanced Example

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;

MCP Server Properties

Response Content Types