MCP란?
MCP(Model Context Protocol) 는 Anthropic이 2024년 11월 26일 공개한 개방형 표준 프로토콜입니다.대규모 언어모델(LLM)이 인터넷, 데이터베이스, 파일 시스템 등 다양한 외부 툴과 안전하고 쉽게 양방향 소통할 수 있도록 만든 규격입니다.
쉽게 말해, AI 모델이 인터넷 검색, 파일 저장, 코드 실행, 데이터베이스 작업 등 여러가지 도구(tool)를 사용할 수 있게 해주는 공통의 사용 설명서라고 생각하면 됩니다.
AI 분야의 "USB-C 포트" 라고 비유될 만큼, 어떤 AI 모델이나 도구든 동일한 방식으로 연결 가능합니다.
MCP 등장 배경
기존 방식의 한계점
이전에는 AI 모델과 외부 도구 연결 시 여러 문제가 있었습니다:
- 특정 프레임워크(예: LangChain, LangGraph)를 매번 새로 학습해야 함
- 각 도구마다 별도의 코드를 만들어야 함
- 모델마다 연동 방식이 달라 중복 개발이 많음
- 여러 도구를 동시에 연동하기 복잡함
MCP가 해결하는 문제
MCP는 이런 불편을 다음과 같이 해결합니다:
- 어떤 도구든 하나의 표준 방식으로 연결
- GPT, Claude 등 모델 종류에 상관없이 동일한 방법으로 사용 가능
- 개발자뿐 아니라 일반 사용자도 쉽게 이용 가능
- 다양한 도구를 쉽게 추가하고 공유 가능한 ‘앱스토어’형 생태계 구축
결국 MCP는 AI와 외부 도구 연결 작업을 단순화하고 확장성을 극대화합니다.
MCP 구조 및 동작원리
MCP는 다음과 같은 방식으로 작동합니다:
- MCP 클라이언트가 MCP 서버로부터 사용 가능한 도구 목록을 가져옵니다.
- 사용자가 MCP 호스트에 질문이나 요청을 입력합니다.
- MCP 호스트는 사용자의 요청과 사용 가능한 도구 목록을 AI 모델에 전달하고, 모델은 필요한 도구를 판단하여 응답합니다.
- MCP 호스트가 MCP 클라이언트를 통해 필요한 도구를 **실제로 사용(호출)**합니다.
- 도구 사용 결과와 원본 요청을 다시 AI 모델에 전달해 최종 응답을 생성합니다.
- 생성된 응답을 사용자가 보기 쉽게 전달합니다.
현재 제공되는 MCP 호스트 예시
- Claude
- Copilot
Amazon Q Developer
MCP 실무 활용
MCP를 통해 다양한 실제 업무를 간편하게 처리할 수 있습니다
옵시디언
- 매일 기록하는 할 일을 MCP를 통해 간편하게 조회하고 주간 보고서를 작성할 수 있습니다.
질문
- "지난주 목요일부터 오늘까지 한 일을 보여줘"
MYSQL
DB 정보 조회 및 수정 가능
- DB 테이블 조회, 데이터 수정 등 작업을 AI가 대신 수행해줍니다.
질문
- 챌린지 관련 테이블 어떤게 있는지 알려줘
파일시스템
파일 분석 및 수정 가능
- 파일을 분석하거나 필요한 데이터를 간단히 추출할 수 있습니다.
질문
- C:\ 해당 경로에 챌린지 관련 자바파일 찾을 수 있어?
vsCode 플러그인에 자바가 없었는데, 자바 플러그인을 설치해달라는 팝업이 나온다.
질문
- 챌린지 관련 자바 파일의 동작방식 분석해서 특정 유저 로그인 시, event 패킷 보내도록 수정해줘
보안때문에, 전체 공개는 힘들지만, 에이전트가 스스로 꽤 정확하게, 위 요구사항에 대한 코드를 적절한 곳에 작성하였다.
다중 도구 활용 예시 (MySQL + 파일시스템)
- 데이터베이스와 파일을 동시에 활용해 엑셀에서 쉽게 사용할 CSV 데이터를 자동 생성합니다.
질문
- 챌린지 뱃지가 5000개 이상인 유저의 memberId, memberNo, 뱃지 개수를 csv 호환되는 메모장 형식으로 만들어줘
의도
- 컨텐츠 관련 유저 테이블에는
memberId
가 존재하지 않아, 다른 테이블에서memberNo
에 맞는memberId
를 찾아야한다. - 엑셀에 호환되는 CSV 파일을 만들어야 한다.
- 다른 테이블과 조인 및 의도에 맞는 쿼리를 실행하여, 결과물 추출
- CSV 파일 추출 및 엑셀에서 정상적으로 열리는 거 확인
`MYSQL`과 `파일시스템`을 조합하여, 의도에 맞는 결과물을 만들었다.
다음 편에서는 MCP서버를 실무 프로젝트에 직접 적용해보고, 미래에 어떻게 활용될건지에 대해 포스팅 할 것이다.
'개발자로서 살아남기' 카테고리의 다른 글
JAVA - Synchronized와 ThreadLocal 을 이용한 동시성 문제 해결 (0) | 2024.05.03 |
---|---|
스카우터를 활용한 서비스 성능 최적화 (0) | 2023.09.19 |
Git 원격 저장소 성능 유지하기 (feat - Git 크라켄 성능 최적화) (1) | 2023.08.29 |
서버 개발자로 살아남기 - HAProxy vs NGINX (0) | 2023.01.10 |
서버 개발자로 살아남기 - Nginx (0) | 2023.01.05 |