Compare commits
No commits in common. "main" and "v0.0.1" have entirely different histories.
|
|
@ -38,9 +38,8 @@ AI ↔ Spring Boot(Dewey)
|
|||
│ └── com.pandol365.dewey
|
||||
│ ├── api <-- 외부로 노출되는 REST API 계층
|
||||
│ │ ├── controller <-- 요청을 받아 Service 호출하는 곳 (Endpoint)
|
||||
│ │ └── dto <-- Controller에서 사용하는 DTO
|
||||
│ │ ├── request <-- 요청 DTO
|
||||
│ │ └── response <-- 응답 DTO
|
||||
│ │ ├── request <-- Controller에서 사용하는 요청 DTO
|
||||
│ │ └── response <-- 응답 DTO (API Response 전용)
|
||||
│ │
|
||||
│ ├── config <-- Spring 설정, Bean 등록, CORS, Filter, ModelConfig 등
|
||||
│ │
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
package com.pandol365.dewey.api.request;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* MCP JSON-RPC 2.0 Request DTO
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class McpRequest {
|
||||
|
||||
@JsonProperty("jsonrpc")
|
||||
@Builder.Default
|
||||
private String jsonrpc = "2.0";
|
||||
|
||||
private String id;
|
||||
|
||||
private String method;
|
||||
|
||||
private McpParams params;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class McpParams {
|
||||
private String name;
|
||||
private String version;
|
||||
private Object arguments;
|
||||
private String uri;
|
||||
private String prompt;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package com.pandol365.dewey.api.response;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* MCP initialize 메서드 응답 결과
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class McpInitializeResult {
|
||||
|
||||
private String protocolVersion;
|
||||
|
||||
private Map<String, Object> capabilities;
|
||||
|
||||
private ServerInfo serverInfo;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class ServerInfo {
|
||||
private String name;
|
||||
private String version;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
package com.pandol365.dewey.api.response;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* MCP Prompt 정의
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class McpPrompt {
|
||||
|
||||
private String name;
|
||||
|
||||
private String description;
|
||||
|
||||
private List<PromptArgument> arguments;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class PromptArgument {
|
||||
private String name;
|
||||
private String description;
|
||||
private Boolean required;
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class PromptListResult {
|
||||
private List<McpPrompt> prompts;
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class PromptGetResult {
|
||||
private String name;
|
||||
private List<PromptMessage> messages;
|
||||
private Map<String, Object> arguments;
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class PromptMessage {
|
||||
private String role;
|
||||
private Object content;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
package com.pandol365.dewey.api.response;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* MCP Resource 정의
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class McpResource {
|
||||
|
||||
private String uri;
|
||||
|
||||
private String name;
|
||||
|
||||
private String description;
|
||||
|
||||
private String mimeType;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class ResourceListResult {
|
||||
private List<McpResource> resources;
|
||||
}
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class ResourceReadResult {
|
||||
private String uri;
|
||||
private String mimeType;
|
||||
private String text;
|
||||
private Map<String, Object> metadata;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
package com.pandol365.dewey.api.response;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* MCP JSON-RPC 2.0 Response DTO
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class McpResponse {
|
||||
|
||||
@JsonProperty("jsonrpc")
|
||||
@Builder.Default
|
||||
private String jsonrpc = "2.0";
|
||||
|
||||
private String id;
|
||||
|
||||
private Object result;
|
||||
|
||||
private McpError error;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class McpError {
|
||||
private Integer code;
|
||||
private String message;
|
||||
private Object data;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
package com.pandol365.dewey.api.response;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* MCP Tool 정의
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class McpTool {
|
||||
|
||||
private String name;
|
||||
|
||||
private String description;
|
||||
|
||||
@JsonProperty("inputSchema")
|
||||
private Map<String, Object> inputSchema;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class ToolListResult {
|
||||
private List<McpTool> tools;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
package com.pandol365.dewey.api.response;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* MCP tools/call 메서드 응답 결과
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class McpToolCallResult {
|
||||
|
||||
@JsonProperty("isError")
|
||||
private Boolean isError;
|
||||
|
||||
private String content;
|
||||
|
||||
private List<Map<String, Object>> parts;
|
||||
|
||||
private Map<String, Object> metadata;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue