저장소 문서를 다시 추적하고 계약 예제를 복원한다
All checks were successful
Deploy Gateway / deploy (push) Successful in 2m52s

계약 테스트는 docs/contracts 아래 예제를 golden example로 읽는다.
docs/와 README.md가 ignore되어 있어 예제 파일이 사라졌고 9건이
실패하고 있었다. 문서가 온전했던 마지막 상태(3de052a)에서 복원하고
.gitignore에서 두 항목을 제거한다. 에이전트 산출물인
docs/superpowers/ 제외는 유지한다.

initialize 응답의 capabilities.tools.listChanged를 문서는 true로
적고 있었으나 InitializeHandler는 false를 낸다. 현재 HTTP 단발 응답
transport가 notification을 push할 수 없으므로 false가 맞다. 예제와
architecture.md를 코드에 맞추고, ToolListChangedEvent가 발행되지만
아직 소비되지 않는다는 점과 SSE 도입 시 true로 바꾼다는 조건을
남긴다.

169개 테스트 전부 통과.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 17:16:13 +09:00
parent 2d730ea9c1
commit 58d3014a0f
70 changed files with 3689 additions and 2 deletions

View File

@@ -0,0 +1,13 @@
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-11-25",
"capabilities": {},
"clientInfo": {
"name": "toolbox-executor",
"version": "0.1.0"
}
}
}

View File

@@ -0,0 +1,9 @@
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2025-11-25",
"serverInfo": {},
"capabilities": {}
}
}

View File

@@ -0,0 +1,5 @@
{
"jsonrpc": "2.0",
"method": "notifications/initialized",
"params": {}
}

View File

@@ -0,0 +1,13 @@
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "customer.search@1.0.0: timed out"
}
],
"isError": true
}
}

View File

@@ -0,0 +1,11 @@
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "customer.search",
"arguments": {
"customerNo": "1234567890"
}
}
}

View File

@@ -0,0 +1,16 @@
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "{\"customerName\":\"Hong\"}"
}
],
"structuredContent": {
"customerName": "Hong"
},
"isError": false
}
}

View File

@@ -0,0 +1,17 @@
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2025-11-25",
"capabilities": {
"tools": {
"listChanged": false
}
},
"serverInfo": {
"name": "shl-axhub-mcp-server-external",
"title": "SHL AX HUB MCP Server (EXTERNAL)",
"version": "1.0.0"
}
}
}

View File

@@ -0,0 +1,13 @@
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "customer.search@1.0.0: timed out"
}
],
"isError": true
}
}

View File

@@ -0,0 +1,8 @@
{
"jsonrpc": "2.0",
"id": 3,
"error": {
"code": -32602,
"message": "Invalid params: 'query' is required"
}
}

View File

@@ -0,0 +1,12 @@
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "processing",
"arguments": {
"query": "processing system information inquiry",
"category": "processing"
}
}
}

View File

@@ -0,0 +1,16 @@
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "processing complete",
"_meta": {
"searchTime": 976.1
}
}
],
"isError": false
}
}

View File

@@ -0,0 +1,67 @@
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"tools": [
{
"name": "insurance.processing.test",
"title": "처리계 연계 점검",
"description": "처리계 연계 경로와 요청·응답 형식을 점검하는 테스트 전용 도구입니다. 실제 보험 업무 데이터는 처리하지 않습니다.",
"inputSchema": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "테스트 요청 식별자입니다."
}
}
},
"annotations": {
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
}
},
{
"name": "insurance.corebanking.test",
"description": "계정계 연계 경로와 요청·응답 형식을 점검하는 테스트 전용 도구입니다. 실제 계약·수납·지급 처리는 수행하지 않습니다.",
"inputSchema": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "테스트 요청 식별자입니다."
}
}
}
},
{
"name": "insurance.information.test",
"description": "정보계 연계 경로와 요청·응답 형식을 점검하는 테스트 전용 도구입니다. 실제 고객·계약 정보를 조회하지 않습니다.",
"inputSchema": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "테스트 요청 식별자입니다."
}
}
}
},
{
"name": "insurance.channel.test",
"description": "채널계 연계 경로와 요청·응답 형식을 점검하는 테스트 전용 도구입니다. 실제 고객 채널 업무를 수행하지 않습니다.",
"inputSchema": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "테스트 요청 식별자입니다."
}
}
}
}
]
}
}