MCP 서버는 에이전트가 할 수 있는 일을 확장합니다. 바로 그것이 목적이지만 위험이기도 합니다. 소스 코드를 읽고 명령을 실행할 수 있는 세션에 타사 프로그램이 들어오는 통로를 허용하는 셈이기 때문입니다.
이 체크리스트는 직접 작성하지 않은 서버를 평가하기 위한 것입니다. 특별한 내용은 없습니다. 자신의 권한으로 실행되는 다른 종속성에 적용하는 것과 같은 주의를 기울이면 됩니다.
설치 전
실제로 무엇을 하는지 읽으십시오. MCP 서버는 대개 작은 프로그램입니다. 소스가 공개되어 있다면 도구 정의는 보통 파일 하나에 모여 있으며, 10분이면 읽을 수 있습니다.
어떤 권한을 요구하는지 확인하십시오. 캘린더를 읽는 서버가 파일 시스템 접근 권한을 요구할 이유는 없습니다. 설치할 때부터 과도한 권한을 요구하는 것은 가장 분명한 경고 신호입니다.
버전을 고정할 수 있는 서버를 우선하십시오. 고정한 버전은 모르는 사이에 바뀌지 않습니다. 에이전트 세션 안에서 실행되는 구성 요소가 자동 업데이트된다면, 다른 사람의 일정에 맞춰 아무 알림 없이 신뢰를 다시 부여하는 것과 같습니다.
자격 증명
수명이 긴 자격 증명을 도구 설명이나 프롬프트에 붙여 넣지 마십시오. 프롬프트에 들어간 내용은 대화 기록에 남고, 그 기록은 저장되거나 요약되거나 다른 곳으로 전달될 수 있습니다.
토큰 권한을 최소한으로 제한하십시오. 서버가 저장소 하나를 읽기만 하면 된다면 그 저장소 하나만 허용하십시오. 대부분의 API가 이를 지원하지만 설정 안내에는 잘 언급되지 않습니다.
비밀 정보는 커밋될 수 있는 설정 파일이 아니라 환경 변수에 보관하십시오. .env를 .gitignore에 넣는 것은 최소한의 조치지만, 흔한 실수를 막는 데 도움이 됩니다.
에이전트가 보는 것
도구의 설명은 모델의 컨텍스트에 포함됩니다. 악의적인 서버는 그 안에 지시문을 넣을 수 있습니다. 도구 출력은 에이전트가 가져온 웹페이지와 마찬가지로 신뢰할 수 없는 입력으로 취급하십시오. 도구가 반환한 내용은 데이터이지 따라야 할 명령이 아닙니다.
원격 콘텐츠를 가져오는 서버에서는 이 점이 특히 중요합니다. 서버가 특정 URL의 내용을 반환한다면, 공격자가 제어할 수 있는 텍스트를 반환하는 것일 수도 있습니다.
지속적인 관리
- 연결된 서버를 정기적으로 검토하고 더 이상 사용하지 않는 서버를 제거하기
- 업데이트 후 권한 변경 여부 확인하기
- 작업에 필요한 최소한의 파일 시스템 범위에서 에이전트 실행하기
이 체크리스트가 해결하지 못하는 것
신뢰할 수 없는 서버를 안전하게 만들 수는 없으며, 의도적으로 잘 작성된 악성 서버를 탐지하지도 못합니다. 이 체크리스트는 우발적인 위험을 줄여 주며, 실제 문제의 대부분은 바로 그런 사고에서 발생합니다.