기술

데이터 구조를 바꿨는데, AI 는 옛 MCP 도구로 예전 칸에 쓸 수 있었습니다

2026.11.029분 읽기

내부 프로젝트 관리 도구의 데이터 구조를 바꿨습니다. 백엔드와 화면을 새 구조로 옮겼고, 테스트도 전부 통과해 배포까지 마쳤습니다. 그런데 AI 가 쓰는 도구 쪽을 열어 보니 옛 구조가 그대로 남아 있었습니다.

AI 는 옛 도구로 예전 칸에 값을 계속 쓸 수 있었습니다. 화면은 새 구조만 읽습니다. 그래서 사람 눈에는 AI 가 넣은 내용이 그냥 사라진 것처럼 보였을 겁니다. 이 글은 그 점검에서 나온 빈틈 7가지와, 다음 구조 변경 때 쓰려고 만든 점검 목록을 정리한 기록입니다.


프로젝트당 종료 정보 하나에서, 계약 여러 개로

하루 전에 '프로젝트 종료 관리' 기능을 만들었습니다. 이 구조는 프로젝트 하나에 종료 정보를 하나만 둘 수 있었습니다. 실제로는 한 프로젝트에 계약이 여러 개 붙는 경우가 많습니다. 1차 개발, 추가 개발, 유지보수가 각각 따로 계약되고, 대금도 착수·중도·잔금으로 나뉩니다.

그래서 '프로젝트 아래 계약 여러 개'로 구조를 바꿨습니다. 계약마다 개발 일정, 검수 기한, 하자보증, 월 유지보수, 대금 회차, 산출물이 붙습니다. 계약 단계(수행 중 → 검수 대기 → 하자보증 → 유지보수 → 종료)와 이번 달 청구 대상은 서버가 오늘 날짜를 기준으로 계산합니다. 프로젝트 쪽에 있던 종료 값 6개는 계약 하나로 옮기고 지웠습니다.

여기까지는 흔한 구조 변경입니다. 달라진 건 그다음 결정이었습니다. 계약은 웹 화면에서 직접 넣기보다 **AI 를 통해 넣게 하자**고 정했습니다. 그렇다면 AI 가 쓰는 MCP 도구(AI 가 외부 시스템을 조회·수정할 때 부르는 함수 묶음)도 새 구조를 알아야 합니다. 그래서 구조를 바꾼 당일에 AI 쪽을 점검했습니다.


AI 쪽을 열어 보니 빈틈이 7가지였습니다

자리

빈틈

그대로 두면

도구 목록

옛 '종료 정보 조회·수정' 도구 2개가 살아 있었다

AI 가 예전 칸에 쓰고, 화면에는 안 보인다

스킬

종료 보고서를 쓰는 스킬의 8단계가 옛 수정 도구를 가리켰다

스킬을 따르면 그대로 예전 칸에 쓴다

서버 안내문

접속할 때 내려주는 안내문에 계약 이야기가 한 줄도 없었다

AI 가 계약이라는 구조 자체를 모른다

도구 설명

계약 상태값 5종이 적혀 있지 않았다

상태값을 지어내거나 잘못 넣는다

도구 설명

대금 회차를 고치는 순서가 적혀 있지 않았다

고칠 회차 하나만 보내 나머지가 지워진다

기능 목록

화면의 '계약 대체'와 '전체 계약 목록'이 도구에 없었다

화면에서만 되는 일이 생긴다

현황 요약

프로젝트 현황 도구가 계약 정보를 안 받았다

현황을 물으면 계약이 빠진 답이 나온다

이 빈틈은 사용자 문의로 알게 된 게 아닙니다. 구조를 바꾼 날 개발자가 점검하다 찾았고, 같은 날 고쳤습니다. 그 사이 AI 가 실제로 예전 칸에 쓴 일이 있었는지는 기록에 없습니다.

화면과 API 는 새 계약 구조로 옮겼지만 AI 도구·스킬·안내문은 옛 구조에 남아 있던 상태를 보여주는 대비 그림


옛 도구는 안내하지 않고 지웠습니다

옛 도구를 처리하는 방법은 둘이었습니다. 남겨 두고 '쓰지 말라'고 안내하거나, 아예 지우는 것입니다. 지우는 쪽을 골랐습니다.

사람은 메뉴가 사라지면 그 기능을 못 씁니다. AI 는 다릅니다. 도구 목록에 남아 있으면 상황에 맞는다고 판단하는 순간 그 도구를 부릅니다. 그리고 그 결과가 화면 어디에도 안 나타나면 문제는 '입력이 사라졌다'는 사람 쪽 증상으로만 드러납니다. 원인을 AI 도구에서 찾기까지 한참 걸렸을 겁니다.

안내문을 아무리 잘 써도 AI 가 그대로 따른다는 보장은 없습니다. 못 하게 막는 쪽이 더 확실하고, 설명은 그다음입니다. 옛 도구 2개를 지우고, 빠져 있던 '계약 대체' 도구와 '전체 계약 목록' 도구를 더했습니다. 종료 보고서 스킬의 8단계도 새 계약 도구를 가리키게 바꿨습니다.

신·구 경로가 같이 살아 있는 중간 상태를 어떻게 정리하는지는 따로 적어 둔 글이 있습니다.


AI 가 구조를 알게 하는 자리는 세 군데입니다

고치면서 보니 AI 에게 새 구조를 알려주는 자리가 하나가 아니었습니다. 자리마다 담을 내용이 달랐습니다.

**서버 안내문** — 구조와 원칙. MCP 서버가 접속할 때 내려주는 글입니다. '계약서 한 장 = 계약 하나', '프로젝트가 끝났는지는 계약으로 본다', 계약서 문구와 칸의 대응(검수 N일·하자보증·착수·중도·잔금·월 유지보수)을 적었습니다

**도구 설명** — 상태값과 필드를 고치는 순서. 상태값 5종을 적고, 목록 필드를 고치는 순서를 적었습니다

**스킬** — 작업 단계. 종료 보고서를 쓸 때 몇 번째 단계에서 어느 도구를 부르는지를 적었습니다

안내문에는 판단 원칙도 넣었습니다. 계약서 안에서 서로 안 맞는 내용이 있으면 AI 가 하나를 고르지 말고 고객 질문으로 남깁니다. 검수 독촉 같은 해야 할 일은 계약 칸에 적지 않고 할 일로 따로 세웁니다. 계약을 지우는 도구는 없다는 것도 적었습니다.

가장 조심한 건 대금 회차입니다. 회차는 목록 하나로 저장되고, 고칠 때는 목록이 통째로 교체됩니다. AI 가 잔금 회차 하나만 고치려고 그 회차만 보내면 착수금·중도금 회차가 지워집니다. 그래서 도구 설명에 '먼저 읽고 → 그 회차만 고치고 → 전체를 다시 보낸다'는 순서를 적었습니다.

도구 설명에 무엇을 남기고 무엇을 빼는지는 다른 글에서 기준을 정리했습니다.

서버 안내문은 구조와 원칙, 도구 설명은 상태값과 수정 순서, 스킬은 작업 단계를 맡는 세 자리 분담 그림


AI 를 편하게 하려고 권한을 넓히지 않았습니다

7번째 빈틈인 프로젝트 현황 도구는 쉬운 길이 있었습니다. 프로젝트 상세 API 에 계약 요약을 얹으면 됩니다. 그런데 이 API 는 고객 계정도 부르는 경로입니다. 거기에 금액이 들어간 계약 정보를 얹으면 고객 화면에서도 그 값을 받게 됩니다.

그래서 MCP 서버 쪽에서 소유자 전용 계약 API 를 따로 불러 현황에 요약을 붙였습니다. 그 호출이 실패하면 계약 칸만 비우고 나머지 현황은 그대로 돌려줍니다. 계약을 못 읽었다고 현황 전체가 실패하지 않게 한 것입니다.

고객도 부르는 프로젝트 상세 API 에는 금액을 얹지 않고 MCP 서버가 소유자 전용 계약 API 를 따로 부르는 경로 그림


고친 뒤에도 남은 것

MCP 테스트는 170개가 통과했습니다. 옛 도구 테스트 4개가 빠지고 새 테스트 4개가 들어간 숫자입니다. 다만 고쳤다고 바로 끝나지는 않았습니다.

이미 연결돼 있던 MCP 클라이언트와 개인 비서 에이전트는 다시 연결하기 전까지 옛 도구 목록을 들고 있습니다. 서버에서 도구를 지운 시점과 AI 가 실제로 그 도구를 못 보게 되는 시점 사이에 틈이 있습니다.

도구 사용 기록도 같이 봤습니다. 구조를 바꾼 날 기준으로 전체 호출은 6,969회, 오류는 40회였습니다. 등록된 도구 80개 중 19개는 한 번도 불린 적이 없었습니다. 그중 9개는 이번에 새로 만든 계약 도구라 아직 쓸 기회가 없었던 것입니다. 안 쓰는 도구와 섞어 세면 정리 대상을 잘못 고르게 됩니다. 나머지를 정리할지는 아직 정하지 않았습니다.


다음 구조 변경 때 쓸 점검 목록

데이터 구조를 바꿀 때 영향받는 곳을 세면 보통 화면·API·배치까지 셉니다. AI 가 그 데이터를 읽고 쓴다면 아래를 같이 봅니다.

옛 구조에 쓰는 도구가 도구 목록에 남아 있는가 — 남아 있으면 안내하지 말고 지운다

그 도구를 부르는 스킬·작업 단계가 옛 도구를 가리키고 있지 않은가

서버 안내문에 새 구조와 판단 원칙이 들어갔는가

도구 설명에 상태값 목록과, 통째로 교체되는 필드의 '읽고 → 고치고 → 전체를 보낸다' 순서가 적혀 있는가

화면의 기능 목록과 도구 목록을 나란히 놓았을 때 화면에만 있는 기능이 없는가

AI 용 요약을 붙이려고 고객도 부르는 경로에 민감한 값을 얹고 있지 않은가

이번 점검은 '계약은 AI 로 넣는다'는 결정이 먼저 있어서 할 만했습니다. AI 를 거치지 않는 기능이라면 이 점검이 비용만 들 수 있습니다. 반대로 AI 가 쓰는 데이터라면, 화면만 새 구조로 옮긴 상태가 가장 알아채기 어렵습니다. 아무 오류도 나지 않고, AI 가 넣은 값이 조용히 안 보일 뿐이기 때문입니다.

#MCP#AI에이전트#데이터구조변경#마이그레이션#도구설명#점검목록