main이 6078852의 endpoint 소유권 반전을 ADR-0010으로 기록하면서 이 브랜치의 ADR-0010과 번호가 겹쳤다. 두 문서는 다른 결정이므로 나중에 문서를 합칠 때 한쪽을 옮겨야 한다. 이 브랜치가 0012까지 쓰고 있어 0011·0012를 건드리지 않는 첫 번호인 0013을 쓴다. 파일명과 제목, 대체 관계를 가리키는 ADR-0007·ADR-0009, 결정 목록, architecture 문서, Portal 계약 문서, Helm 설명, 그리고 application.yml 주석의 참조를 함께 바꾼다. 결정 내용은 바뀌지 않는다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2.3 KiB
2.3 KiB
ADR-0009 컨테이너가 공개 MCP path를 직접 처리한다
배경
Agent Builder는 /mcp/core, /mcp/process, /mcp/information처럼 sub path까지 포함한 URL을 각각의 MCP로 등록한다. 각 URL은 독립 MCP 컨테이너와 Tool Service에 연결된다. 공개 path를 OpenShift Route가 내부 /mcp로 바꾸면 Agent Builder가 등록한 경로와 컨테이너가 처리한 경로가 달라져 운영 추적과 설정 검증이 어려워진다.
결정
deployments.<key>.publicPath는 Agent Builder 등록 URL과 컨테이너 endpoint가 함께 사용하는 단일 정본이다.- OpenShift Route는 host와 path로 독립 MCP Service만 선택하고 path를 rewrite하지 않는다.
- Helm ConfigMap이
publicPath를mcp.endpoint-path로 주입하고, Controller와 Filter가 그 경로만 처리한다. - MCP 컨테이너 하나는 endpoint와 Tool Service를 각각 하나만 가진다. 하나의 Java 프로세스에서 path별 Registry를 선택하지 않는다.
- 요청 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이 대체한다.