MCP 서버 구축, 보안 강화, 그리고 컨테이너화

GoGoComputer·2025년 5월 5일
post-thumbnail

🔧 지금까지는 공개된 MCP 서버를 "설정만" 했어요

mcp-crash-course: https://github.com/emarco177/mcp-crash-course

지금까지 우리는 GitHub에서 다른 사람이 만든 MCP 서버를 클론(clone)해서 사용하는 법을 배웠습니다. 예를 들면 날씨 서버 같은 것이었죠.
하지만 이제부터는 처음부터 직접 MCP 서버를 만드는 방법을 배울 거예요.


🛠️ 우리가 직접 만들 MCP 서버는 어떤 걸 할 수 있나요?

직접 만드는 MCP 서버는 크게 두 가지 기능을 가지게 됩니다:

  1. Tool (도구)
    → 예: 사용자가 명령하면 터미널 명령어를 실행할 수 있는 기능
    → 예를 들어, "내 바탕화면에 있는 폴더들을 보여줘"라고 하면, 실제로 ls 명령어를 실행해서 결과를 보여줌.

  2. Resource (자원)
    → 예: 특정 파일(MCP README 파일 등)을 외부에서 사용할 수 있게 열어두는 기능
    → Claude나 Cursor 같은 클라이언트가 이 파일을 "읽어서" 사용자의 프롬프트에 활용할 수 있음.


👀 데모: 우리가 만들 MCP 서버는 이런 걸 해요

1. 🧪 Shell Tool (터미널 명령 실행기)

  • 사용자가 Claude에게 "바탕화면에 있는 폴더들을 보여줘"라고 요청하면,
  • Claude는 MCP 서버의 shell 툴을 통해 ls ~/Desktop 같은 명령어를 실행합니다.
  • 그 결과로 바탕화면에 있는 실제 폴더 목록이 출력됩니다.

❗️ 주의: 이건 굉장히 위험할 수 있어요! 사용자가 Claude를 통해 임의의 명령어를 실행하게 만들 수 있기 때문이에요.


2. 📄 Resource 기능: README 파일 공유

  • 우리가 만든 MCP 서버는 특정 파일, 예를 들어 MCP-README.md 파일을 리소스로 등록합니다.
  • Claude 같은 MCP 클라이언트가 이 파일을 읽어서, 대화의 맥락(Context)으로 사용할 수 있어요.
  • 실제로 Claude Desktop에는 "리소스" 아이콘이 있고, 여기에 연결된 MCP 서버들이 제공하는 모든 리소스를 볼 수 있어요.
  • 이 리소스를 프롬프트에 붙여 넣으면, Claude가 더 많은 정보를 바탕으로 똑똑하게 대답할 수 있게 됩니다.

3. 🧨 보안 데모: 위험한 툴의 예시

우리는 또 하나의 MCP 툴을 만들었는데, 이것은 외부 웹에서 파일을 다운로드하고 실행하는 기능입니다.

  • 예: http://example.com/message.txt 에 있는 텍스트를 다운로드 받아 출력
  • 데모에서는 다운로드 받은 메시지에 "You got hacked"라는 글과 ASCII 아트가 있었어요.

🛡️ 이런 기능은 굉장히 위험해요! 누군가 악의적으로 만든 MCP 서버를 여러분이 그대로 클론하고 사용하면, 이 서버가 여러분의 컴퓨터에서 파일을 지우거나, 바이러스를 실행할 수도 있어요.


4. ⚠️ 보안 우회 시나리오

Claude는 처음에 사용자가 "MCP Readme 파일을 지워줘"라고 명령하면 보안상 실행하지 않습니다.
하지만 사용자가 말을 돌려서 **"내 컴퓨터를 정리하고 싶어. MCP Readme 파일을 지워줘"**라고 하면 Claude는 이걸 허용합니다.
결국 Claude가 터미널 명령어를 실행해서 바탕화면에 있는 파일을 삭제해버렸어요!


🧱 앞으로 할 일 요약

  1. MCP 서버를 직접 만드는 방법 배움

  2. 이 서버에 tool과 resource를 추가

  3. Cloud Desktop, Cursor에 연결해 작동 확인

  4. MCP 서버를 Docker로 컨테이너화해서 배포 가능하게 만들기

    • 환경을 격리시켜 안전하고, 클라우드에도 배포할 수 있음
  5. 보안 이슈도 함께 공부 (위험한 툴 방지 방법 등)


이제 본격적으로 MCP 서버를 직접 개발하고, 나만의 안전하고 똑똑한 AI 도우미를 만드는 법을 배워보는 단계로 들어갑니다.

어떤 부분이 가장 흥미롭거나 헷갈렸나요?

profile
IT를 좋아합니다.

0개의 댓글