Delphi MCP Server Resources (4/4)

· 기능

MCP에서 리소스는 서버가 노출하는 주소 지정 가능한 데이터 객체예요. 파일, 데이터베이스 레코드, 생성된 문서, 동적 API 출력 등이 있어요.

리소스는 클라이언트 제어로, 클라이언트가 요청할 리소스와 콘텐츠 해석 방법을 결정할 수 있어요.





관련된 두 가지 주요 메서드가 있어요:

또한 서버가 선언된 기능에서 resources.listChanged = true로 설정하면 리소스 카탈로그가 업데이트될 때 notifications/resources/list_changed 같은 알림을 보낼 수 있어요.

리소스 목록

서버는 TsgcAI_MCP_ResourcesList에 리소스의 인메모리 카탈로그를 유지해요. 리소스는 uri로 고유하게 보장되며, 설명을 노출하고 사양의 resources.list 메서드에 대한 응답에 포함되는 JSON 스키마 같은 입력 uri를 제공해요. 클라이언트가 resources.list를 호출하면 TsgcWSAPIServer_MCP가 요청을 로드하고, 현재 카탈로그를 직렬화하여 200 HTTP 상태 코드와 함께 반환해요.

파일 리소스를 게시하는 예제 코드예요:

procedure TMainForm.FormCreate(Sender: TObject);
begin
  MCPServer.Resources.Clear;
  MCPServer.Resources.AddResource(
	'file:///project/src/main.rs', // URI
    'main.rs',  // Name
	'Rust Software Application Main File', // Title
    'Primary application entry point', // Description
	'text/x-rust');
end; 

리소스 요청

클라이언트가 resource.read JSON-RPC 요청을 보내면 TsgcWSAPIServer_MCPOnMCPRequestResource 이벤트를 발생시키기 전에 강력하게 형식화된 요청 객체(uri 리소스, 이름, 제공된 인수 포함)를 채워요. 핸들러가 응답 페이로드를 채우면 성공 HTTP 상태 코드와 함께 클라이언트로 직렬화되어 전송돼요.

일반적인 핸들러는 다음과 같아요:

procedure OnMCPRequestResource(Sender: TObject;
  const aSession: TsgcAI_MCP_Session; const aRequest: TsgcAI_MCP_Request_ResourcesRead;
  const aResponse: TsgcAI_MCP_Response_ResourcesRead);
begin
  if aRequest.Params.Uri = 'file:///project/src/main.rs' then
    aResponse.Result.Contents.AddContentText('file:///project/src/main.rs',
      'main.rs', 'Rust Software Application Main File', 'text/x-rust',
      'fn main() {\n    println!(\"Hello world!\");\n}');
end; 

더 알아보기

심층 문서와 컴포넌트 참조는 다음을 방문하세요:


sgcWebSockets MCP Prompts Resources Guide 

Windows용 Delphi MCP 서버 데모를 아래에서 찾아볼 수 있어요: