채용공고에 심심치 않게 보이는 AI 활용 어쩌구 사항들을 더이상은 모른체 할 수가 없어서 정리해보는 관련 용어 및 지식 정리 글이다.
나의 퍼플렉시티 친구에게 질문해보았다. MCP가 도대체 뭐니??
돌아오는 딱딱한 대답은 이러했다.
MCP는 "AI 서비스(클라이언트)와 외부 데이터/도구(서버)를 연결하는 표준 'USB 포트' 같은 약속"입니다. AI 서비스 이름이 아니라, AI가 일을 더 잘하게 만드는 기술 표준(프로토콜)입니다.
오.. 하나도 모르겠고... Anthropic이 제안한 오픈소스 표준이라고 하는데 정의만 들었을때 딱히 모르겠다.
프로토콜 같은 개념인거 같은데 그래서 API 명세서와 비교해서 정리해봤다.
"설명(Description)"이 곧 명세서다.
| 구분 | 기존 REST API | MCP Server (Tool) |
|---|---|---|
| 누구를 위해 만드나? | 프론트엔드 개발자 / 앱 | LLM (AI 모델) |
| 소통 방식 | "HTTP GET /api/settlement?id=user1 날려주세요." | "나는 getSettlement(userId)라는 함수가 있어. 설명은 '정산 조회'야." |
| 요청 시점 | 사용자가 버튼을 클릭했을 때 | AI가 대화하다가 "어? 이거 필요하겠는데?"라고 판단했을 때 |
| 비유 | 자판기 (버튼 누르면 나옴) | 공구함 (AI가 필요할 때 꺼내 씀) |
아래의 한 문장으로 MCP가 어떤 개념인지 머릿속에서 정리할 수 있겠다.
"AI 너, 우리 데이터 필요하면 내가 정해둔 규격(MCP)대로 요청해. 그럼 다 줄게."
그래서 앞으로 서비스 개발 시 MCP/Tool 개발을 할 때는 코드를 잘 짜는 것만큼이나 '함수 설명(Description)'을 잘 적는 게 중요해보인다. 이걸 Prompt Engineering의 일부라고도 여겨지는 듯 하다.
Spring AI를 사용한 간단한 예시로 친절한 설명의 중요성에 대해 알아보자.
Sping AI는
@Tool어노테이션만 붙이면 MCP 서버가 된다.
나쁜 예: @Tool(description = "정산 조회")
=> AI가 헷갈릴 수 있음. "예정 금액 조회인가? 확정 금액인가? 언제 쓰는 거지?"
좋은 예: @Tool(description = "사용자의 '확정된' 정산 금액을 조회합니다. '예정' 금액을 물을 때는 사용하지 마세요.")
=> AI가 훨씬 똑똑하게 작동함.
Spring AI를 활용하여 정산 서비스 MCP를 구축한다고 가정했을때 예상되는 AI 에이전트와 서버간의 실행 흐름을 정리해보았다.
핵심 포인트 3가지:
1. 초기화 (맨 위): 서버가 켜질 때 AI에게 나 이런 기술(@Tool) 있다고 미리 명함(명세서)을 건네줍니다.
2. 판단 (AI 내부): 사용자의 돈 질문과 도구의 설명을 매칭해서 AI가 스스로 선택합니다.
3. 실행 (중간): AI는 요청만 하고, 실제 DB 조회는 스프링 서버가 수행합니다.

AI 에이전트가 직접 자바 코드를 실행하는 게 아니라 실행해달라고 요청(Request)을 보내면 스프링 서버가 실행하고 결과만 돌려주는 구조이다.