Slide 10
Slide 10 text
MCPツールのロジックの実装
# 基底クラスの定義(注:SDKのコードではありません)
abstract class MCPTool {
protected abstract suspend fun doExecute(params: TInput): Result
# 実行結果を取得してCallToolResult(SDKに定義されている)に変換する。
suspend fun execute(request: CallToolRequest): CallToolResult =
try {
val inputSerializer = serializer(inputClass.java)
val params = Json.decodeFromJsonElement(inputSerializer, request.arguments) as TInput
// 実装されたロジックを実行
val result = doExecute(params)
result.fold(
onSuccess = { output ->
// 出力をJSONにシリアライズ
val outputSerializer = serializer(outputClass.java)
val outputJson = Json.encodeToJsonElement(outputSerializer, output)
// CallToolResultとして返す
CallToolResult(
content = listOf(TextContent(outputJson.toString())),
isError = false
)
},
onFailure = { error -> /*エラーのとき*/}
)
} catch (e: SerializationException) { /*エラーハンドリング*/ }
}
MCPサーバーの実装
10 / 29