지난 글에서 MCP가 뭔지 알아봤다. 이번엔 진짜 만들어본다. Python만 알면 10분이면 충분하다.
FastMCP란
Python으로 MCP 서버를 만드는 가장 빠른 방법. Flask처럼 데코레이터로 도구를 정의하고, CLI 하나로 테스트·배포까지 가능하다.
설치는 pip 한 줄:
pip install fastmcp5분: 첫 MCP 서버 만들기
다음 코드를 my_server.py로 저장한다:
from fastmcp import FastMCP
mcp = FastMCP("내 첫 MCP 서버")
@mcp.tool
def add(a: int, b: int) -> int:
"""두 수를 더합니다"""
return a + b
@mcp.tool
def get_weather(city: str) -> str:
"""도시의 현재 날씨를 반환합니다 (데모)"""
temps = {"서울": 23, "부산": 25, "제주": 27}
temp = temps.get(city, 20)
return f"{city}: {temp}도, 맑음"
if __name__ == "__main__":
mcp.run()이게 끝이다. @mcp.tool 데코레이터만 붙이면 함수가 AI가 호출 가능한 도구가 된다.
2분: 테스트
# 서버가 어떤 도구를 제공하는지 확인
fastmcp list my_server.py --json
# 실제 도구 호출 테스트
fastmcp call my_server.py add a=3 b=5add 함수가 정상 호출되면 8이 반환된다. 서버 준비 완료.
3분: AI 클라이언트에 연결
Hermes Agent에 연결하는 경우:
hermes mcp add my-tools --command python3 --args "/path/my_server.py"Claude Desktop이면:
fastmcp install claude-desktop my_server.py연결 즉시 AI가 add, get_weather 도구를 인식하고 필요할 때 알아서 호출한다.
실전: ERP API 래핑하기
실무에서 가장 흔한 MCP 사용처는 내부 API 래핑이다. 예를 들어 영림원 ERP의 전표 조회 API를 MCP로 감싸면:
@mcp.tool
def search_slips(keyword: str, limit: int = 10) -> list:
"""ERP 전표를 키워드로 검색합니다"""
resp = requests.get(
f"{ERP_URL}/api/slips",
params={"q": keyword, "limit": limit},
headers={"Authorization": f"Bearer {ERP_TOKEN}"}
)
return resp.json()이제 AI 비서한테 "지난주 매출 전표 중에 500만원 이상인 것만 보여줘"라고 말하면 된다. SQL 몰라도, API 문서 몰라도 된다.
다음 글에서는 이걸 실제 ERP 환경에 붙였을 때 어떤 일이 벌어지는지 이야기한다.