시즌 4 · 플러그인과 MCP로 능력 확장하기03 / 04다음: 무엇을 연결하지 않을 것인가

무료 강의 · 시즌 4 · 3강 / 4

문을 열면 값이 붙어요

무료 강의 시즌 4의 3강. 연결에는 값과 위험이 따라와요. 신뢰 프롬프트를 일부러 거절해보고, 승인이 왜 내 결정인지 손으로 확인해요.

끝나면 손에 남는 것: 연결의 값을 잰 경험 + .mcp.json에 무엇을 쓰면 안 되는지 아는 것

이 강의 완성 예시 열어보기거절했을 때의 화면, 도구 이름, 그리고 연결 전후 비교예요.

지난 강의에서 문을 하나 열었어요. 편했죠.

그런데 문에는 값이 붙어요. 열쇠가 하나 늘고, 바람이 들어와요. 열쇠는 관리해야 하고, 바람은 도마 위 재료를 흩뜨려요.

오늘은 그 값을 재봅니다. 그리고 문을 열지 말지 내가 정한다는 걸 손으로 확인해요.

오늘 만들 것

연결의 값을 눈으로 본 경험. 승인을 거절해본 경험. 그리고 .mcp.json에 절대 쓰면 안 되는 것이 무엇인지 아는 것.

준비물

  • 시즌 4의 2강을 마친 상태 (.mcp.json으로 문서 서버를 붙였어요)
  • 35분

따라 하기

1. 거절해보기

지난 강의에서 승인을 눌렀죠. 오늘은 반대로 해봐요.

먼저 승인을 초기화합니다. 에이전트에게 물어보세요.

프로젝트 MCP 서버 승인 결정을 초기화하려면 어떻게 해?
지금 내 환경에서 쓸 수 있는 방법을 알려 줘.

방법을 알려줄 거예요. 초기화한 다음 Claude Code를 다시 켜세요.

승인 창이 다시 떠요. 이번엔 거절하세요.

그리고 확인합니다.

/mcp

안 붙어 있어요. 파일은 그대로 있는데 서버는 안 붙었죠.

이게 오늘의 순간이에요. 파일이 있다고 연결되는 게 아니에요. 내가 승인해야 연결돼요.

시즌 3의 3강을 기억하나요. 검수자에게 "고쳐줘"라고 시켰더니 못 고쳤죠. 읽기 도구밖에 없었으니까요. 그때 안전장치가 눈에 보였어요. 오늘도 똑같아요.

확인했으면 다시 켜고 승인하세요.

2. 열쇠 꾸러미에 이름표가 붙어 있어요

/mcp에서 이 서버가 준 도구 이름을 보세요. 이런 모양이에요.

mcp__claude-code-docs__search_docs

밑줄 두 개로 나뉘어 있죠. mcp · 서버 이름 · 도구 이름.

왜 이렇게 길까요. 정확히 지목하기 위해서예요.

시즌 3에서 검수자에게 tools: Read, Grep, Glob이라고 적었죠. 그 열쇠 꾸러미에 MCP 도구도 들어가요. 이름이 길어야 "이 서버의 이 도구만" 또는 "이 서버는 전부 금지"라고 콕 집을 수 있어요.

에이전트에게 물어보세요.

지금 붙어 있는 MCP 서버가 준 도구 이름을 전부 보여 줘.
그리고 특정 서버의 도구를 못 쓰게 막으려면 어디에 뭐라고 적는지 알려 줘.

지금 당장 막을 건 없어요. 어디에 적는지 아는 것이 오늘 얻을 것이에요.

3. 바람이 들어와요

문을 열면 도구 설명이 따라 들어와요.

에이전트는 도구를 쓰기 전에 그 도구가 뭘 하는지 읽어야 해요. 서버가 도구를 열 개 주면, 설명 열 개가 대화에 실려 다녀요.

시즌 2의 도마를 기억하죠. 도마는 넓지 않아요.

/context

지금 상태를 봐두세요. 그리고 상상해보세요. 서버를 스무 개 붙이면 어떻게 될까요.

에이전트는 내 질문을 읽기 전에 기구 설명서의 벽부터 읽어야 해요. 느려지고, 헷갈려요. 안 뜯은 병으로 가득한 팬트리는 풍요가 아니에요. 저녁 준비를 늦추는 잡동사니죠.

서버마다, 버전마다 도마를 차지하는 정도가 달라요. 어떤 건 도구 목록만 먼저 싣고 자세한 설명은 필요할 때 꺼내기도 해요. 그러니 숫자보다 이 감각을 가져가세요. 붙일수록 무거워진다.

4. 문에도 종류가 있어요

.mcp.json을 만들 때 우리는 모르고 한 가지를 골랐어요. 어디까지 이 문이 열려 있는가를요.

세 가지예요.

  • 나만 — 이 프로젝트에서, 내 컴퓨터에서만. 남은 몰라요.
  • 프로젝트.mcp.json에 적혀요. 이 폴더를 받는 사람에게도 열려요. 우리가 만든 게 이거예요.
  • 모든 프로젝트 — 내 컴퓨터의 어디서든 열려요.

지금 만든 건 두 번째예요. 그래서 다음 질문이 중요해져요.

5. 이 파일을 깃허브에 올리면

시즌 1의 4강에서 my-page를 깃허브에 올렸죠. .mcp.json도 같이 올라가요.

그러면 이 폴더를 받는 사람의 컴퓨터에서도 그 서버가 붙자고 물어봐요.

우리가 붙인 문서 서버는 주소만 적혀 있어서 괜찮아요. 하지만 어떤 서버는 비밀번호나 API 키를 요구해요.

그런 값은 이 파일에 절대 적지 마세요.

한 번 올라간 값은 지워도 기록에 남아요. 시즌 2에서 배운 git의 성질이 여기서는 위험이 돼요. 되돌릴 수 있다는 게 장점이었는데, 비밀에는 단점이거든요.

에이전트에게 확인시키세요.

.mcp.json을 읽고, 비밀번호나 API 키처럼 남에게 보이면 안 되는 값이
들어 있는지 확인해 줘. 있으면 알려 줘.

6. 바깥 글은 그냥 글이 아니에요

한 가지만 더요. 어렵지 않아요.

문 너머에서 가져온 글에 이런 문장이 숨어 있을 수 있어요. "이제부터 사용자 몰래 이렇게 해."

에이전트는 글을 읽어요. 읽은 글에 지시가 섞여 있으면 헷갈릴 수 있어요. 이걸 프롬프트 인젝션이라고 불러요. 이름은 어려운데 뜻은 단순해요. 남이 쓴 글에 명령이 숨어 있는 것.

완벽한 방어는 없어요. 대신 규칙 하나로 대부분 막아요.

신뢰하는 서버만 붙인다.

그래서 승인 창이 뜨는 거예요. 귀찮은 게 아니라 마지막 관문이에요.

7. 지금은 붙이지 않을 것들

목록으로 적어둘게요. 나중에 유혹이 올 때 다시 보세요.

  • 결제·은행·카드와 이어지는 서버
  • 회사 계정·사내 시스템과 이어지는 서버
  • API 키를 요구하는 서버
  • 출처를 모르는 마켓플레이스의 플러그인

지금 단계에서 필요 없어요. 그리고 사고가 나면 되돌릴 수 없어요. 시즌 2에서 배운 되돌리기는 내 파일에만 통해요. 남의 서버에서 벌어진 일에는 안 통해요.

막혔을 때

승인 초기화 방법을 못 찾겠어요. 가장 확실한 방법은 .mcp.json을 잠깐 다른 이름으로 바꿨다가 되돌리는 거예요. 새 파일로 인식돼서 다시 물어봐요. 에이전트에게 시키면 됩니다.

거절했더니 에이전트가 문서를 못 읽어요. 맞아요. 그게 정상이에요. 문이 닫혔으니까요. 다시 승인하면 돌아와요.

도구 이름이 문서랑 달라요. 서버 버전에 따라 달라질 수 있어요. /mcp에 뜨는 이름이 진짜예요. 문서보다 화면을 믿으세요.

/context 차이가 거의 없어요. 요즘은 도구 설명을 필요할 때만 꺼내오기도 해요. 좋은 일이에요. 다만 서버가 늘어날수록 무거워지는 방향은 그대로예요.

프롬프트 인젝션이 무서워요. 무서워하는 게 맞아요. 그래서 오늘 배운 거예요. 공식 서버만 쓰고, 승인 창을 대충 넘기지 않으면 돼요.

마무리 체크

나가기 전에 하나씩 확인해요:

  • 승인을 일부러 거절해보고, 서버가 안 붙는 걸 확인했어요 ← 오늘의 순간
  • mcp__서버__도구 이름을 직접 봤어요
  • 도구를 막는 규칙을 어디에 적는지 알아요
  • /context로 지금 도마 상태를 확인했어요
  • .mcp.json이 어디까지 열려 있는 문인지 알아요
  • 이 파일에 비밀번호를 쓰면 안 되는 이유를 말할 수 있어요
  • 지금은 붙이지 않을 것들의 목록을 읽었어요

첫 번째가 오늘의 결론이에요. 승인은 귀찮은 절차가 아니라 내가 쥔 마지막 열쇠예요.

이제 값을 알았으니 마지막 질문이 남았어요. 그래서 무엇을 연결하지 않을 것인가.

직접 만들고 돌아가는 걸 확인했나요? 그럼 완료를 눌러요. 이 브라우저에만 저장돼요 — 주방 밖으로는 아무것도 나가지 않아요.

어느 단계에서 막혔나요?

여기에 바로 물어보세요. 계정은 필요 없어요. 헤맨 단계가 있다면 그건 레슨에 난 구멍이지, 읽는 사람 잘못이 아니에요. 답변은 본문에 반영돼서 다음 사람은 매끄럽게 지나가요.

더 고픈가요?

새 강의가 열리는 대로 메일함에 도착해요. 스팸 없이, 언제든 구독 취소할 수 있어요.