Files

Redmine #726 · Select AI SHOWPROMPT 진단 MCP

목표

기존 Text2SQL 생성·실행 tool과 분리된 읽기 전용 SHOWPROMPT 진단 tool을 MCP tools/list에 추가한다. 일반 질문 처리 Agent는 포털 allowlist를 통해 기존 tool만 사용하고, FAIL 개선 제안 버튼만 진단 tool을 직접 호출한다.

외부 설정

  • BACKOFFICE_MCP_SHOWPROMPT_TOOL_NAME
  • BACKOFFICE_MCP_SHOWPROMPT_TOOL_LABEL
  • BACKOFFICE_MCP_SHOWPROMPT_TOOL_DESCRIPTION

기본값은 제품 중립적인 oracle.select_ai.data_showprompt와 업무 데이터 표현을 사용한다. 스마일게이트 운영값은 외부 env에서 고객 전용 이름으로 설정한다.

동작

  1. HTTP Bearer Token을 기존 업무 사용자 토큰으로 검증한다.
  2. prompt를 기존 4,000자 제한으로 검증한다.
  3. schema-owned Select AI 연결에서 DBMS_CLOUD_AI.GENERATE(prompt, profile, 'showprompt')를 호출한다.
  4. SQL을 실행하지 않고 다음 JSON을 반환한다.
    • status=SHOWPROMPT
    • profile
    • selectAiPrompt

변경 함수

파일/함수 변경
McpProperties SHOWPROMPT tool 이름·label·description 외부 설정
SelectAiService.generatePrompt 인증·prompt 검증 후 SHOWPROMPT 반환
SelectAiService.generate showsql/showprompt action을 bind하는 공통 생성 함수
McpSseService.toolsListResult Text2SQL과 SHOWPROMPT 두 tool 등록
McpSseService.toolsCallResult exact tool name에 따라 query/diagnostic 분기

안전 조건

  • SHOWPROMPT tool은 생성 SQL을 실행하지 않는다.
  • 임의 action 인자를 사용자에게 받지 않는다.
  • 응답에 Bearer Token이나 DB 연결 정보를 포함하지 않는다.
  • 기존 Text2SQL tool 이름과 계약은 유지한다.

테스트

  • tools/list에 두 tool과 각 prompt schema가 존재한다.
  • Text2SQL 호출은 기존 generate-and-execute 경로를 유지한다.
  • SHOWPROMPT 호출은 generatePrompt만 실행한다.
  • 누락/비활성 Bearer Token은 기존과 동일하게 거절한다.