MCP 인증 Delphi

· 기능

sgcWebSockets 2025.10.0 릴리스는 클라이언트와 서버 컴포넌트 모두에 강화된 인증 계층을 적용해 Model Context Protocol(MCP) 연결성을 한 단계 향상시켜요. 이 글은 새 기능이 엔터프라이즈급 접근 제어와 Delphi 팀이 sgcWebSockets에서 기대하는 빠른 개발 워크플로를 어떻게 결합하는지 설명해요.

새로운 기능

MCP Client

MCP 클라이언트는 MCPOptions.AuthenticationOptions 속성을 통해 모든 보안 설정을 노출해요. 제로 트러스트 또는 테넌트 기반 정책을 충족하기 위해 API 키 또는 사용자 정의 헤더 흐름을 독립적으로 활성화하면 컴포넌트가 각 HTTP POST와 SSE 업그레이드 중에 필요한 헤더를 주입해요.


하트비트, 클라이언트 메타데이터, HTTP/TLS 사용자 정의와 함께 개발자 속도를 희생하지 않고도 MCP 대화를 조직의 규정 준수 체크리스트에 맞출 수 있어요.

MCP Server

서버는 전용 엔드포인트, 전송, MCP 설정 객체로 클라이언트 컨트롤을 미러링해요. 요청이 도착하면 컴포넌트가 들어오는 모든 헤더를 검증하고 자격 증명이 누락되거나 잘못된 경우 설명적인 오류를 발생시켜요. 검증이 요청이 비즈니스 로직에 진입하기 전에 이루어지므로 오용을 조기에 차단하고 코드를 도메인 가치에 집중할 수 있어요.

비즈니스 및 기술적 장점

Delphi Example

다음 스니펫은 단일 설정 루틴으로 Delphi에서 클라이언트와 서버 모두에 MCP 인증을 활성화하는 방법을 보여줘요. 자격 증명 값을 자신의 환경에 맞게 조정하세요.

procedure SetupMCPInfrastructure;
var
  MCPClient: TsgcWSAPIClient_MCP;
  MCPServer: TsgcWSServer_API_MCP;
begin
  MCPClient := TsgcWSAPIClient_MCP.Create(nil);
  MCPServer := TsgcWSServer_API_MCP.Create(nil);
  try
    // Client configuration
    MCPClient.MCPOptions.HttpOptions.URL := 'https://mcp.example.com/api';
    MCPClient.MCPOptions.AuthenticationOptions.ApiKey.Enabled := True;
    MCPClient.MCPOptions.AuthenticationOptions.ApiKey.Value := 'YOUR_API_KEY';
    MCPClient.MCPOptions.AuthenticationOptions.CustomHeader.Enabled := True;
    MCPClient.MCPOptions.AuthenticationOptions.CustomHeader.Header := 'X-Tenant';
    MCPClient.MCPOptions.AuthenticationOptions.CustomHeader.Value := 'Retail';
    MCPClient.MCPOptions.ClientInfo.Name := 'RetailAgent';
    MCPClient.MCPOptions.ClientInfo.Version := '2025.10.0';
    MCPClient.MCPOptions.HeartBeat.Enabled := True;
    MCPClient.MCPOptions.HeartBeat.Interval := 30;
    MCPClient.OnMCPInitialize := HandleMCPInitialize;
    MCPClient.OnMCPListTools := HandleMCPTools;
    MCPClient.Initialize;
    MCPClient.ListTools;
    // Server configuration
    MCPServer.EndpointOptions.Endpoint := '/mcp';
    MCPServer.MCPOptions.AuthenticationOptions.ApiKey.Enabled := True;
    MCPServer.MCPOptions.AuthenticationOptions.ApiKey.Value := 'YOUR_API_KEY';
    MCPServer.MCPOptions.AuthenticationOptions.CustomHeader.Enabled := True;
    MCPServer.MCPOptions.AuthenticationOptions.CustomHeader.Header := 'X-Tenant';
    MCPServer.MCPOptions.AuthenticationOptions.CustomHeader.Value := 'Retail';
    MCPServer.OnMCPInitialize := HandleServerInitialize;
    MCPServer.OnMCPRequestTool := HandleToolRequest;
    MCPServer.Active := True;
  finally
    MCPClient.Free;
    MCPServer.Free;
  end;
end;