학습 목표
본 강의에서는 2026년 현재 AI 에이전트 생태계의 핵심 표준으로 자리 잡은 MCP(Model Context Protocol)를 활용하여, AI 모델이 실시간으로 외부 데이터베이스 및 API와 소통하고 스스로 판단하여 워크플로우를 완결하는 상용 수준의 에이전트를 구축하는 방법을 학습합니다. 단순히 텍스트를 생성하는 AI를 넘어, 기업 내 로컬 데이터나 실시간 웹 서비스와 안전하게 연결되는 ‘행동하는 AI’를 만드는 것이 최종 목표입니다.
사전 준비 사항
원활한 실습을 위해 아래와 같은 환경을 권장합니다. 특히 MCP 라이브러리는 최신 보안 패치가 포함된 버전을 사용해야 하므로 Python 버전을 반드시 확인해 주세요.
- 운영체제(OS): Windows 11, macOS Sequoia 이상, 혹은 Ubuntu 24.04 LTS
- 개발 도구: Visual Studio Code (VS Code) 최신 버전
- 파이썬 버전: Python 3.11 이상 (비동기 처리를 위한 필수 사양)
- 필수 라이브러리 설치: 터미널에서 아래 명령어를 입력하여 필요한 패키지를 설치합니다.
pip install mcp anthropic python-dotenv sqlalchemy httpx - API 키: Anthropic API 키 (Claude 3.5 Sonnet 이상 모델 사용 권장)
1. MCP(Model Context Protocol)의 핵심 개념 이해
MCP는 앤스로픽(Anthropic)이 주도하여 발표한 오픈 표준으로, LLM 호스트와 데이터 소스(서버) 간의 통신 방식을 규격화한 프로토콜입니다. 과거에는 각 API마다 별도의 커넥터를 개발해야 했으나, MCP를 사용하면 서버 한 번의 구축으로 다양한 MCP 지원 클라이언트(Claude Desktop, IDE 등)에서 즉시 데이터를 조회하고 도구를 실행할 수 있습니다.
MCP 아키텍처의 3요소
- MCP Host: AI 모델이 구동되는 환경 (예: VS Code, Claude 앱).
- MCP Client: 서버와 통신하며 모델에게 컨텍스트를 전달하는 인터페이스.
- MCP Server: 로컬 파일, DB, 외부 API 등 실제 데이터에 접근하여 도구(Tools)와 리소스(Resources)를 제공하는 주체.
2. 실습 단계 1: MCP 서버 구축하기
먼저, 로컬의 SQLite 데이터베이스에서 재고 정보를 읽어오는 간단한 MCP 서버를 만들어 보겠습니다. 이 서버는 AI가 필요할 때 호출할 수 있는 ‘도구’ 역할을 합니다.
server.py 작성
import asyncio
from mcp.server.fastmcp import FastMCP
# MCP 서버 초기화
mcp = FastMCP("InventoryManager")
# 가상의 데이터베이스 (실무에서는 실제 DB 연동)
inventory = {
"iphone_15": {"stock": 10, "price": 1200000},
"macbook_pro": {"stock": 5, "price": 3500000}
}
@mcp.tool()
async def get_stock_info(item_name: str) -> str:
"""특정 제품의 재고 상태를 확인합니다."""
item = inventory.get(item_name.lower())
if item:
return f"{item_name}의 현재 재고는 {item['stock']}개이며, 가격은 {item['price']}원입니다."
return f"{item_name} 제품을 찾을 수 없습니다."
if __name__ == "__main__":
mcp.run(transport='stdio')위 코드는 FastMCP 라이브러리를 사용하여 매우 직관적으로 작성되었습니다. @mcp.tool() 데코레이터는 해당 함수를 AI가 인식할 수 있는 도구로 등록합니다.
3. 실습 단계 2: AI 에이전트(클라이언트) 구현
이제 위에서 만든 서버에 접속하여 데이터를 요청하고, 결과를 분석하여 다음 행동을 결정하는 클라이언트 에이전트를 작성합니다.
agent.py 작성
import os
from dotenv import load_dotenv
from anthropic import Anthropic
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
load_dotenv()
anthropic = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
async def run_agent(user_query):
# MCP 서버 연결 설정
server_params = StdioServerParameters(
command="python",
args=["server.py"]
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
# 세션 초기화
await session.initialize()
# 가용한 도구 목록 가져오기
tools = await session.list_tools()
# 모델에게 질문 전달 (도구 정보 포함)
response = anthropic.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1000,
tools=[{
"name": t.name,
"description": t.description,
"input_schema": t.inputSchema
} for t in tools.tools],
messages=[{"role": "user", "content": user_query}]
)
# 모델이 도구 사용을 결정한 경우
if response.stop_reason == "tool_use":
tool_use = response.content[-1]
tool_name = tool_use.name
tool_args = tool_use.input
# MCP 서버를 통해 실제 도구 실행
result = await session.call_tool(tool_name, tool_args)
# 최종 결과 생성
final_response = anthropic.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1000,
messages=[
{"role": "user", "content": user_query},
{"role": "assistant", "content": response.content},
{"role": "user", "content": f"도구 실행 결과: {result.content}"}
]
)
return final_response.content[0].text
return response.content[0].text
if __name__ == "__main__":
import asyncio
query = "지금 아이폰 15 재고가 있어? 가격도 알려줘."
print(f"질문: {query}")
print(f"답변: {asyncio.run(run_agent(query))}")4. 자율적 워크플로우의 완성
위의 코드는 단순한 질의응답을 넘어 ‘자율적 워크플로우’의 기초를 보여줍니다. AI는 사용자의 질문을 분석하고, 자신이 모르는 정보(재고 상태)가 필요하다는 것을 스스로 판단하여 MCP 서버에 등록된 get_stock_info 도구를 호출했습니다.
실제 업무 환경에서는 이 워크플로우에 이메일 발송 도구, 슬랙 알림 도구 등을 추가하여 “재고가 부족하면 구매 담당자에게 메일을 보내라”는 식의 복합적인 작업을 수행하게 할 수 있습니다. 이것이 바로 2026년형 AI 에이전트의 핵심입니다.
5. 결과 확인 및 유지보수
프로그램을 실행하면 터미널에 다음과 같은 흐름으로 결과가 출력됩니다.
- 사용자 입력: “아이폰 15 재고 확인해줘.”
- 모델 판단: 재고 확인 도구가 필요함을 감지.
- MCP 호출:
get_stock_info(item_name="iphone_15")실행. - 데이터 수신: “재고 10개, 가격 120만원” 데이터를 MCP 서버로부터 수신.
- 최종 답변: “네, 현재 아이폰 15는 10대의 재고가 있으며 가격은 1,200,000원입니다.”
이러한 방식은 모델을 매번 미세 조정(Fine-tuning)할 필요 없이, MCP 서버의 데이터만 업데이트하면 AI가 항상 최신 정보를 바탕으로 동작하게 해줍니다. 보안 면에서도 API 키나 DB 접속 정보를 모델에게 직접 전달하지 않고 MCP 서버 내에서 안전하게 관리할 수 있다는 큰 장점이 있습니다. 이제 여러분의 비즈니스 로직을 MCP 서버에 이식하여 강력한 자율 에이전트를 구축해 보시기 바랍니다.
