🔖Contents
10분 만에 따라 하는 Claude MCP 업무 자동화 혁신 가이드 | 이호준 - 교보문고
10분 만에 따라 하는 Claude MCP 업무 자동화 혁신 가이드 | ★ ChatGPT를 쓰다가 답답했다면, AI한테 물어보기만 했다면, 이제 직접 일하는 AI를 만나 보세요. ★ 클로드로 만드는 나만의 AI 비서, Claude M
product.kyobobook.co.kr
읽게 된 배경
최근 Claude 기반으로 개발하는 환경에서 실제 서비스 구현을 진행하게 되면서, 자연스럽게 MCP(Model Context Protocol)에 관심을 가지게 되었습니다. ChatGPT, Gemini 사용은 잘 해왔지만, Claude를 처음 사용하는 상태였습니다! Claude 초보자인 제 목표 설정은 Python 기반으로 Claude 설명과 함께 너무 방대한 내용을 다루는 책보다는 Hands-On 이면서 적은 분량을 갖는 책을 원했습니다. 자세한 MCP 학습은 책으로 공부하지 않고 인프런이나 패스트캠퍼스에서 유료 강의를 통해서 실습과 함께 공부를 할 생각이였기 때문이에요.
지금은 Claude MCP 시대: MCP의 이해와 설치
첫 번째 파트에서는 MCP가 등장하게 된 배경과 개념을 다룹니다. 기존 LLM이 갖고 있던 한계—외부 시스템과의 단절—를 어떻게 MCP가 보완하는지 설명하며, MCP가 단순한 기능 추가가 아니라 AI와 외부 도구를 연결하는 표준이라는 점을 강조합니다. 이후에는 파이썬, VSCode, Claude Desktop, MCP 모듈 설치까지 개발 환경 세팅을 매우 빠르게 진행할 수 있도록 구성되어 있습니다.
`@mcp.tool`: Claude에게 실행 가능한 “행동(Action)”을 제공하는 기능
from mcp.server.fastmcp import FastMCP
# MCP 서버 생성하기
mcp = FastMCP(name="tutorial_1")
@mcp.tool()
def echo(message: str) -> str:
"""
입력받는 메시지를 그대로 반환하는 도구입니다.
"""
return message + " 라는 메시지가 입력되었습니다. 안 찍어 볼 수 없죠! hello world!"
# 서버 실행하기
if __name__ == "__main__":
mcp.run()
`@mcp.tool`는 함수 위에 작성하는 데코레이터 입니다. Claude에서 자동으로 해당 함수를 직접 실행하는 방식이 아니라 `@mcp.tool()` 함수가 필요하다는 것을 MCP 서버에 요청하고, MCP 서버가 함수를 실행합니다. 그리고 결과는 Claude에게 전달되는 구조입니다. `@mcp.tool`은 주로 다음과 같은 기능에서 사용됩니다.
- "해당 폴더 안의 파일 개수를 세어줘"
- "logs 디렉토리에서 가장 크기가 큰 파일을 찾아줘"
- "해당 CSV 파일을 읽어서 평균을 계산해줘"
`@mcp.resource`: 개발자가 연결한 자원(Resource)만 접근 가능
`@mcp.resource()`는 파일, 데이터베이스, API 결과 등 “읽기 전용 데이터”를 안정적으로 제공하는 방식입니다.
@mcp.resource("file://customer_data_2024")
def load_customer_data():
return open("customer_2024.xlsx", "rb")
위 코드는 `customer_2024.xlsx` 파일을 읽는 함수입니다.
이렇게 Claude에 등록해두면 항상 같은 요청에서 동일한 데이터 소스를 기반으로 답변할 수 있습니다.
- "작년 고객 데이터를 참고해서 요약해줘"
- "이 각표 기준으로 할인 정책 비교해줘"
`@mcp.resource`으로 알 수 있는 사실은 Claude가 사용자 로컬 PC의 임의 경로를 검색하지 않습니다.
보통 회사 내부 데이터나 기준 데이터에 매우 적합하고, 실무에서는 보고서 자동화와 분석 자동화의 핵심이 됩니다.
`@mcp.prompt`: 자주 쓰는 질문 형식을 템플릿으로 등록하는 기능
@mcp.prompt
def weekly_sales_report():
"""
지난주 매출을 분석하라.
- 전주 대비
- 전년 동기 대비
- 카테고리별 / 지역별 표
- 인사이트 3개 도출
"""
위 코드는 주간 판매 리포트에서 반드시 포함되어야만 하는 내용입니다.
`@mcp.prompt`로 등록된 이후 Claude에게는 아래처럼 질문해도 됩니다.
"주간 매출 분석"
`@mcp.prompt`로 이미 작성된 내용을 Claude가 읽게 됩니다. 덕분에 매번 길게 설명하지 않아도 되고 항상 동일한 구조로 질문하여 사람마다 다른 요청 품질 문제를 최소화 또는 제거할 수 있습니다. 엑셀 매크로까지는 아니지만 업무 지식이 담긴 AI 템플릿으로 볼 수 있습니다. `@mcp.prompt`는 " 말로 쓰는 업무 매뉴얼"로 Claude를 가르치는 기능이라고 볼 수 있습니다.
` Image`: 필요한 이미지 생성
Claude가 스스로 판단해서 차트를 그린다는 생각은 큰 오해입니다. 데이터와 시각화 도구 그리고 MCP가 연결되어 있을 때, Claude가 어떤 차트를 그릴지 판단을 하고 Python에게 작업을 지시합니다. 일반적으로 다음과 같은 구조로 수행됩니다.
- `mcp.tool`로 데이터 분석(pandas, numpy)
- `mcp.tool`로 시각화(matplotlib, seaborn)
- 결과 이미지를 Claude에게 전달
실제 차트 생성은 Python이에요. 이제 전달받은 이미지로 Claude가 하는 일은 크게 다음과 같습니다.
- 데이터 특성 해석
- 해당 데이터에서 막대 그래프 또는 선 그래프 등 적절한 시각화 그래프를 판단
- 어떤 도구를 호출할 지를 결정
`Context`: 현재 실행 중인 요청의 컨텍스트(상황, 정보)'에 접근하기 위한 객체
현재 실행 중인 요청이 어떤 클라이언트(예: Claude Desktop)에서 호출되었는지 또는 어떤 세션이나 작업 흐름에 속해 있는지를 알려주는 역할을 합니다. Context는 현재 실행 중인 요청이 어떤 작업의 일부인지 식별하기 위한 객체로 Context를 통해 분석 결과나 데이터를 자동으로 저장하지 않는다는 점을 꼭 기억해야 합니다.
Context를 이해하기 위해서는 MCP, 멀티스텝 그리고 Context가 무엇인지 이해하고 있어야만 합니다.
MCP와 Context가 무엇인지 미리 공부했으니 멀티스텝이 무엇인지 정리하겠습니다.
사람이 LLM에게 일을 지시할 때, 일을 나눠서 지시하게 됩니다. 예를 들어, "작년 매출 분석하고, 결과를 기준으로 보고서를 만들어줘"라고 입력했다고 가정합니다. 이것은 사실 사람 기준으로 보면 크게 두 가지 일을 수행하는 것으로 보입니다. 첫 번째는 데이터 분석, 두 번째는 분석 결과로 보고서 작성입니다. 이것을 우리가 멀티스텝 작업이라고 합니다. MCP 또는 Claude가 정의하는 용어는 아니에요.
싱글스텝
"해당 CSV 파일의 평균 구해줘"
CSV 파일을 입력하고, 처리하고, 출력하는 것으로 한 번에 답변이 가능합니다.
멀티스텝
해당 CSV 파일을 분석하고, 그래프를 만들고, 보고서로 정리를 해줘.
해당 작업은 한 번에 처리할 수 없습니다. 가장 먼저 분석 결과가 있어야 그래프를 생성할 수 있고, 그래프가 있어야만 보고서를 작성할 수 있습니다. 작업마다 의존성이 생기고 단계가 존재합니다. 그래서 데이터 분석과 그래프 생성은 Python의 pandas, numpy, matplotlib, seaborn 등의 라이브러리로 작업하는 것입니다. Claude는 어떠한 라이브러리와 프롬프트를 사용하면 좋을지 결정합니다.
이때 Context 안에 들어 있는 세션 ID / 요청 ID 같은 값을 통해, "해당 요청이 어떤 작업 흐름에 속하는지" 정보를 이용해서 개발자가 저장해둔 결과를 다시 찾아오는 코드를 작성합니다. 따라서 Context는 여러 작업 단계를 하나의 흐름으로 묶어주는 연결 장치입니다.
정리하자면, 멀티스텝은 “한 번에 끝낼 수 없는 일을 사람이 나눠서 생각한 것”이고, Context는 여러 작업 단계를 하나의 흐름으로 묶어주는 연결 장치입니다. 이 개념이 중요한 이유는 우리가 하는 작업은 모두 멀티스텝 과정을 거치며 자동화 대상이기 때문이에요.
Python에서 ctx를 받는 방법
CurrentContext()로 받기(주입 방식)
의존성 파라미터는 스키마에 노출되지 않아서(클라이언트가 파라미터로 안 봄) 안합니다.
from fastmcp import FastMCP
from fastmcp.dependencies import CurrentContext
from fastmcp.server.context import Context
mcp = FastMCP("demo")
@mcp.tool
async def process(file_uri: str, ctx: Context = CurrentContext()) -> str:
await ctx.info(f"Processing {file_uri}")
return "ok"
ctx를 통해 자주 사용하는 6가지
1. 클라이언트에 로그 보내기
Claude Desktop 같은 클라이언트에서 “도구 실행 중” 메시지를 보여줄 때 씁니다.
await ctx.debug("Starting")
await ctx.info("Running step 1")
await ctx.warning("Deprecated param")
await ctx.error("Something failed")
진행률(Progress) 업데이트
오래 걸리는 작업에서 퍼센트처럼 진행 상황을 띄울 수 있습니다.
await ctx.report_progress(progress=50, total=100) # 50%
resources = await ctx.list_resources()
content_parts = await ctx.read_resource("resource://config")
config_text = content_parts[0].content
서버에 등록된 Prompt 조회 및 가져오기
도구가 “서버에 정의된 프롬프트 템플릿”을 찾아서 메시지 집합을 얻는 패턴입니다.
prompts = await ctx.list_prompts()
result = await ctx.get_prompt("analyze_data", {"dataset": "users"})
messages = result.messages
result = await ctx.elicit("Enter your name:", response_type=str)
if result.action == "accept":
name = result.data
클라이언트의 LLM에게 “한 번 더” 생성 요청하기 (Sampling)
도구 내부에서 “이 데이터 해석 문장만 만들어줘” 같은 걸 클라이언트 LLM에 다시 요청할 수 있습니다.
resp = await ctx.sample("Analyze this data", temperature=0.7)
text = resp.text
Context 핵심 포인트
- Context는 요청 1번당 새로 생기고, 그 요청이 끝나면 끝입니다. (그래서 “ctx 자체가 기억 저장소”는 아닙니다.)
- Context 메서드들은 async라서 보통 도구도 async def로 작성하게 됩니다.
Claude MCP로 나만의 비서 만들기: 업무 자동화
세 번째 파트에서는 MCP를 활용한 실제 업무 자동화 시나리오가 본격적으로 등장합니다.
- 폴더 생성 / 삭제 / 목록 조회
- 파일 입출력 자동화
- 엑셀 자동화
- 웹 데이터 수집
- 한글(HWP) 파일 읽고 쓰기
이 모든 작업을 Claude + MCP 조합으로 수행합니다. 중요한 점은, 이 과정에서 Claude가 단순히 코드를 생성하는 역할에 그치지 않고, 실제로 MCP 서버를 통해 사용자의 요청을 실행한다는 점입니다. Notion MCP, Excel MCP 같은 외부 MCP 서버를 가져와서 설치하는 예제도 포함되어 있어, MCP 생태계가 이미 상당 부분 구축되어 있다는 인상을 받았습니다. 해당 내용에서는 자세한 설명을 포함하지 않고, 소개만 하고 넘어갑니다!
정리하며
이 책은 MCP를 깊게 파고드는 기술서라기보다는, “MCP가 무엇이고, 어떻게 써볼 수 있는지”를 빠르게 체험하게 해주는 입문서에 가깝습니다. 저처럼 Claude 기반 환경에서 개발을 시작하는 사람이거나 MCP를 AI 업무 자동화의 전체 그림을 감 잡고 싶은 사람 에게 특히 잘 맞는 책이라고 느꼈습니다. 물론, Claude가 지금 빠르게 변화하고 있어서 책의 설명과 살짝 다른 UI 환경을 만나실 수도 있습니다..! 마지막으로, 저 역시 이 책을 시작점으로 MCP의 개념을 빠르게 익힌 뒤, 이후에는 강의와 실습을 통해 더 깊이 있게 학습해 나갈 계획입니다.
'📚Read & 👨🏫Course' 카테고리의 다른 글
| MCP: MCP 이해와 개발 환경 세팅(vscode) (0) | 2026.02.07 |
|---|---|
| MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 08 트랜잭션, 동시성 제어, 회복 (0) | 2025.11.25 |
| MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 07 정규화 (0) | 2025.11.25 |
| MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 06 데이터 모델링 (0) | 2025.11.25 |
| MySQL로 배우는 데이터베이스 개론과 실습 2판: Chapter 05 데이터베이스 프로그래밍 (0) | 2025.11.24 |