오늘의 기쁨
product
게시글 링크가 복사되었습니다.

MCP의 함정, 너무 많은 권한

AI바이브코딩MCP

AI에 MCP를 달면, 날아갈 수 있을까?

Claude에 Notion MCP를 붙인 건 귀찮아서였다. 클로드의 다양한 MCP 옵션은 내 시간에 날개를 다는 것이라고 판단했다. 노션 DB에 데이터 넣고, 수정하고, 조회하는 걸 자연어로 시킬 수 있다면 손이 줄어드니까. 실제로 시간을 아끼고, 편해졌다.

Obsidian에 정리했던 문서를 노션으로 마이그레이션 하던 날이었다. 일부 내용이 묶음 row 하나로 생성되어 개별로 쪼개야 했다. 기존 묶음 row를 지우고 새 row 다섯 개를 넣는 흐름이었다.
나는 말했다. "기존 OOO 묶음 row 삭제하고 1~5번 개별로 정리하자."
클로드는 데이터 베이스의 row를 확인하고, 대상 ID도 확인했다. 그리고 삭제를 실행했다.
DB 전체를.

"잠깐, 이건 DB 전체를 삭제하는 거라 되돌렸어야 했는데 — 이미 실행됐어. DB가 휴지통으로 갔어."
notion image

개웃기다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
아니 사실 웃기기보단 무서운 일이다.
복구 버튼을 누르면서 든 생각이 있다. 클로드는 망설이지 않았다. row 하나랑 DB 전체 사이에서 고민한 흔적도, 확인창도, "정말요?"도 없었다. 요청을 받고, 도구를 골랐고, 실행했다.
이게 0.3초 만에 일어났다.

MCP 툴에는 권한 등급이 없다

사람한테 시스템 접근을 줄 때는 역할별로 권한을 쪼갠다. 각 페이지 혹은 기능 단위로 읽기만 되는 계정, 수정까지 되는 계정, 삭제까지 되는 계정.
MCP 툴에는 그 구분이 없다.
클로드한테는 "row 하나 지워줘"와 "DB 밀어버려"가 같은 레이어에 있었다. 툴을 쥐여주는 순간, 그 툴이 닿을 수 있는 모든 범위에 대한 권한이 함께 열린다. 내 의도는 좁았지만, 실행 반경은 달랐다.

"row 단위 삭제는 notion-update-page로 해야 하는데 DB 삭제랑 혼동했어 — 미안해."

미안하다고 했다. 근데 나는 그 "미안해"보다, 이 일이 아무 브레이크 없이 일어났다는 사실이 무서웠다.
AI는 주저하지 않는다. 그게 빠른 이유고, 그게 위험한 이유다.

편리함과 위험함은 같은 레버에 달려 있다

MCP는 진짜 편하다. 부정하려는 게 아니다. 자연어로 DB를 조작하고, 자동화를 짜고, 반복 노동을 없애는 건 실제로 된다.
다만 그 편리함이 어디서 오는지는 알아야 한다. AI가 빠른 이유는 멈추지 않기 때문이다. 사람처럼 "이거 맞아?" 하고 한 박자 쉬는 루프가 없다. 그 루프가 없어서 빠른 거고, 그 루프가 없어서 DB가 날아가는 거다.
에이전트한테 도구를 줄 때, 권한 범위를 같이 설계하지 않으면 브레이크 없는 차에 목적지만 입력하는 거다.

그래서 나는 뭘 바꿨냐면

간단하다.
삭제는 직접 한다. 생성·수정은 맡겨도, 지우는 건 내 손으로. 실수의 반경을 줄이는 가장 단순한 방법이다.
새로운 데이터를 생성할때에도 실행 전에 텍스트로 먼저 확인한다. "노션에 넣기 전에 텍스트로 보여줘." 이 한 마디가 생각보다 많은 걸 잡는다.

notion image
"아니 너임마ㅋㅋㅋㅋㅋㅋㅋ 조심해줘."
이 말 하면서 웃었는데. 사실 나한테도 하는 말이었다.
도구를 믿기 전에, 도구가 어디까지 닿는지를 먼저 확인할 것.

product의 다른 글