Redmine #726 · Select AI SHOWPROMPT 진단 MCP
목표
기존 Text2SQL 생성·실행 tool과 분리된 읽기 전용 SHOWPROMPT 진단 tool을
MCP tools/list에 추가한다. 일반 질문 처리 Agent는 포털 allowlist를 통해
기존 tool만 사용하고, FAIL 개선 제안 버튼만 진단 tool을 직접 호출한다.
외부 설정
BACKOFFICE_MCP_SHOWPROMPT_TOOL_NAMEBACKOFFICE_MCP_SHOWPROMPT_TOOL_LABELBACKOFFICE_MCP_SHOWPROMPT_TOOL_DESCRIPTION
기본값은 제품 중립적인 oracle.select_ai.data_showprompt와 업무 데이터
표현을 사용한다. 스마일게이트 운영값은 외부 env에서 고객 전용 이름으로
설정한다.
동작
- HTTP Bearer Token을 기존 업무 사용자 토큰으로 검증한다.
- prompt를 기존 4,000자 제한으로 검증한다.
- schema-owned Select AI 연결에서
DBMS_CLOUD_AI.GENERATE(prompt, profile, 'showprompt')를 호출한다. - SQL을 실행하지 않고 다음 JSON을 반환한다.
status=SHOWPROMPTprofileselectAiPrompt
변경 함수
| 파일/함수 | 변경 |
|---|---|
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은 기존과 동일하게 거절한다.