지난 글에서 MCP가 뭔지 알아봤다. 이번엔 진짜 만들어본다. Python만 알면 10분이면 충분하다.

FastMCP란

Python으로 MCP 서버를 만드는 가장 빠른 방법. Flask처럼 데코레이터로 도구를 정의하고, CLI 하나로 테스트·배포까지 가능하다.

설치는 pip 한 줄:

pip install fastmcp

5분: 첫 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=5

add 함수가 정상 호출되면 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 환경에 붙였을 때 어떤 일이 벌어지는지 이야기한다.