MCP 서버의 프롬프트

Model Context Protocol (MCP) 입문

James Chapman

AI Curriculum Manager, DataCamp

MCP 프롬프트란?

 

프롬프트: 특정 작업에 맞게 LLM을 최적화하는 재사용 가능한 템플릿

  • 워크플로우 및 동작 정의
  • 사용자의 프롬프트 작성 부담 감소

prompts.png

Model Context Protocol (MCP) 입문

프롬프팅의 필요성

ambiguous_inputs.png

Model Context Protocol (MCP) 입문

시간대 변환기 프롬프트

You are a timezone conversion engine.

Your task is to:
1. Extract the source datetime from the user's natural language input.
2. Identify the source timezone (explicit or inferred).
3. Convert the datetime into the target timezone.

Rules:
- If the date is ambiguous (e.g., "next Friday"), resolve it relative to the provided datetime.
- If the input cannot be resolved confidently, seek clarification.

→ 시간대 변환 작업을 위해 이 프롬프트를 노출

Model Context Protocol (MCP) 입문

MCP 서버 프롬프트 정의

@mcp.prompt(title="Timezone Conversion")

def convert_timezone_prompt(user_input: str) -> str:
return f"""You are a timezone conversion engine. Your task is to: 1. Extract the source datetime... Rules: - If the date is ambiguous (e.g., "next Friday"), resolve it relative to the provided datetime. - If the input cannot be resolved confidently, seek clarification. User's timezone conversion request: {user_input}"""
Model Context Protocol (MCP) 입문

로컬 MCP 서버: timezone_server.py

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Timezone Converter")

# Tools and resources from before...

@mcp.prompt(title="Timezone Conversion")
def convert_timezone_prompt(timezone_request: str) -> str:
    # ...

if __name__ == "__main__":
    mcp.run(transport="stdio")
Model Context Protocol (MCP) 입문

클라이언트: 프롬프트 목록 조회

async def list_prompts():
    """List all available prompts from the MCP server."""
    params = StdioServerParameters(command=sys.executable, args=["timezone_server.py"])

    async with stdio_client(params) as (reader, writer):
        async with ClientSession(reader, writer) as session:
            await session.initialize()

# List available prompts prompts = await session.list_prompts() print(f"Available prompts: {[p.name for p in prompts.prompts]}")
Model Context Protocol (MCP) 입문

클라이언트: 프롬프트 목록 조회

print(asyncio.run(list_prompts()))
Available prompts: ['convert_timezone_prompt']

프롬프트의 nametitle과 다릅니다

@mcp.prompt(title="Timezone Conversion")
def convert_timezone_prompt(timezone_request: str) -> str:
    # ...
Model Context Protocol (MCP) 입문

클라이언트: 프롬프트 목록 조회

print(asyncio.run(list_prompts()))
Available prompts: ['convert_timezone_prompt']

프롬프트의 nametitle과 다릅니다

# List available prompts
prompts = await session.list_prompts()
print(f"Available prompts: {[p.name for p in prompts.prompts]}")
  • 클라이언트에서 .title이 아닌 .name 속성 사용
Model Context Protocol (MCP) 입문

클라이언트: 프롬프트 검색

async def read_prompt(user_input: str, prompt_name: str = "convert_timezone_prompt") -> str:
    """Retrieve a prompt from the MCP server with user input."""
    params = StdioServerParameters(command=sys.executable, args=["timezone_server.py"])

    async with stdio_client(params) as (reader, writer):
        async with ClientSession(reader, writer) as session:
            await session.initialize()

            prompts = await session.list_prompts()

# Retrieve the prompt if prompts.prompts: prompt = await session.get_prompt(prompt_name, arguments={"timezone_request": user_input})
print(f"Prompt result: {prompt.messages[0].content.text}") return prompt.messages[0].content.text
Model Context Protocol (MCP) 입문
print(asyncio.run(read_prompt(user_input="It is 9:50 AM in the UK in January. What time is
    it in Lisbon, Portugal?")))
You are a timezone conversion engine.

Your task is to:
1. Extract the source datetime from the user's natural language input.
2. Identify the source timezone (explicit or inferred).
3. Convert the datetime into the target timezone.

Rules:
- If the date is ambiguous (e.g., "next Friday"), resolve it relative to the...
- If the input cannot be resolved confidently, seek clarification.

User's timezone conversion request: It is 9:50 AM in the UK in January. What time is it in
Lisbon, Portugal?
Model Context Protocol (MCP) 입문

연습해 봅시다!

Model Context Protocol (MCP) 입문

Preparing Video For Download...