Files
dap-was-dapms/docs/decisions/ADR-0009-container-handles-public-mcp-path.md
koseokmin 4e4c341f5d Portal registry 결정을 문서로 확정하고 ADR 상태를 코드에 맞춘다
ADR-0007은 MCP 배포 하나가 Tool Service 하나만 보게 했으나 구현은
이미 Portal이 route와 endpoint를 소유하는 구조다. 결정 문서가 없어
ADR-0007이 Accepted로 남은 채 코드와 정반대되는 내용을 현재 설계
근거처럼 제시하고 있었다.

ADR-0013이 그 경로를 확정하고 ADR-0007 전체와 ADR-0009 결정 4를
대체한다. ADR-0010은 Tool 실행 주소의 소유자가 설정이 아니라 Tool
Service 매니페스트라는 6078852의 결정을 사후 기록한다. 두 ADR이
정본으로 인용하는 Portal-MCP 계약 v0.1도 함께 넣는다.

ADR-0013은 main 현재 코드에 맞춰 세 곳을 고쳤다. route 간 갱신 격리
부재는 6653030이 해소해 격리 표로 옮겼고, 제거된 mcp.portal.route-key
항목은 뺐다. 남은 위험 둘(Portal 모드 warm start 미동작, readiness의
route별 상태 미노출)은 코드에서 유효함을 확인해 남긴다.

ADR-0010이 기록하는 대로 endpoint 검증에는 도메인 허용목록이 없고
NetworkPolicy도 Ingress만 선언한다. 매니페스트 원천의 신뢰성이 곧
outbound 대상의 신뢰성이다. McpProperties와 application.yml의 주석이
이 결정과 반대로 남아 있다는 사실도 ADR에 적었다. 코드는 바꾸지
않는다.

192개 테스트 통과. 문서 상대링크 깨짐 없음.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 17:23:38 +09:00

2.3 KiB

ADR-0009 컨테이너가 공개 MCP path를 직접 처리한다

  • 상태: Accepted
  • 결정일: 2026-08-05
  • 대체: ADR-0008
  • 부분 대체됨: 결정 4는 ADR-0013이 대체한다
  • 관련: ADR-0007

배경

Agent Builder는 /mcp/core, /mcp/process, /mcp/information처럼 sub path까지 포함한 URL을 각각의 MCP로 등록한다. 각 URL은 독립 MCP 컨테이너와 Tool Service에 연결된다. 공개 path를 OpenShift Route가 내부 /mcp로 바꾸면 Agent Builder가 등록한 경로와 컨테이너가 처리한 경로가 달라져 운영 추적과 설정 검증이 어려워진다.

결정

  1. deployments.<key>.publicPath는 Agent Builder 등록 URL과 컨테이너 endpoint가 함께 사용하는 단일 정본이다.
  2. OpenShift Route는 host와 path로 독립 MCP Service만 선택하고 path를 rewrite하지 않는다.
  3. Helm ConfigMap이 publicPathmcp.endpoint-path로 주입하고, Controller와 Filter가 그 경로만 처리한다.
  4. MCP 컨테이너 하나는 endpoint와 Tool Service를 각각 하나만 가진다. 하나의 Java 프로세스에서 path별 Registry를 선택하지 않는다.
  5. 요청 body·header·Tool name은 컨테이너 선택에 관여하지 않는다.
https://{host}/mcp/core        -> core MCP /mcp/core        -> core Tool Service
https://{host}/mcp/process     -> process MCP /mcp/process  -> process Tool Service
https://{host}/mcp/information -> information MCP /mcp/information -> information Tool Service

영향

  • 같은 host에서 여러 Service를 사용하므로 OpenShift Route의 path 기반 Service 선택은 유지한다.
  • rewrite annotation은 사용하지 않는다. access log와 애플리케이션 log가 같은 path를 본다.
  • publicPath 변경은 Route와 애플리케이션 endpoint를 함께 바꾸며 Agent Builder 등록 정보도 갱신해야 한다.
  • Registry snapshot, Redis namespace, readiness, connection pool과 장애 범위는 배포별로 계속 분리된다.
  • JSON-RPC payload와 Tool Service wire 계약은 바뀌지 않는다.

대체한 결정

ADR-0008의 공유 host와 독립 Deployment 원칙은 유지한다. 공개 path를 내부 /mcp로 rewrite한다는 부분만 이 ADR이 대체한다.