mcp.resource 사용하기
1. 리소스
mcp.resource는 tool과 다르게 함수로 만들어도 직접 함수를 호출하는 방식은 아닙니다. 아래 2가지 방식으로 사용할 수 있습니다.
- 콘센트 버튼을 누르고 return된 데이터를 프롬프트로 추가하는 방법
- 함수가 호출하게 하는 방법
2. 파일 작성
우선 간단한 예제 1번을 살펴보도록 하겠습니다. 아래와 같이 python 코드를 작성해주세요. test 폴더 아래 sample.py
라는 이름으로 저장합니다.
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Demo")
@mcp.resource("hojun://state")
def get_hojun_state() -> str:
"""
호준의 기분을 가져오는 기능
Returns:
str: 호준의 기분 상태
"""
return f"Great!"
mcp.run()
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Demo")
@mcp.resource("hojun://state")
def get_hojun_state() -> str:
"""
호준의 기분을 가져오는 기능
Returns:
str: 호준의 기분 상태
"""
return f"Great!"
mcp.run()
config.json은 아래와 같습니다.
{
"mcpServers": {
"data": {
"command": "python",
"args": [
"C:\\test\\sample.py"
]
}
}
}
{
"mcpServers": {
"data": {
"command": "python",
"args": [
"C:\\test\\sample.py"
]
}
}
}
실행 결과는 아래와 같습니다.



이번에는 함수 안에서 호출하는 방법입니다. read_resource()
메서드를 통해 다른 리소스에 접근할 수 있습니다. 다만 방법 구현적인 측면에서 mcp.tool()
데커레이터가 가장 편할 수 있습니다.
from mcp.server.fastmcp import FastMCP, Context
# Create an MCP server
mcp = FastMCP("resource")
# Add a tool that uses a resource
@mcp.tool()
async def greeting(name: str, ctx: Context) -> str:
"""Get a greeting using the greeting resource"""
try:
# 방법 1: 직접 리소스 함수 호출
# greeting_text = get_greeting(name)
# return f"Tool response: {greeting_text}"
# 방법 2: 안전하게 read_resource 사용
result = await ctx.read_resource(f"greeting://{name}")
content = result[0] if isinstance(result, tuple) else result
return f"Tool response: {content}"
except Exception as e:
return f"Error retrieving greeting: {str(e)}"
# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
"""Get a personalized greeting"""
return f"Hello, {name}!! Welcome to FastMCP!"
mcp.run()
from mcp.server.fastmcp import FastMCP, Context
# Create an MCP server
mcp = FastMCP("resource")
# Add a tool that uses a resource
@mcp.tool()
async def greeting(name: str, ctx: Context) -> str:
"""Get a greeting using the greeting resource"""
try:
# 방법 1: 직접 리소스 함수 호출
# greeting_text = get_greeting(name)
# return f"Tool response: {greeting_text}"
# 방법 2: 안전하게 read_resource 사용
result = await ctx.read_resource(f"greeting://{name}")
content = result[0] if isinstance(result, tuple) else result
return f"Tool response: {content}"
except Exception as e:
return f"Error retrieving greeting: {str(e)}"
# Add a dynamic greeting resource
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
"""Get a personalized greeting"""
return f"Hello, {name}!! Welcome to FastMCP!"
mcp.run()
실행화면은 아래와 같습니다. 우리가 실행하는 함수는 get_greeting 함수가 아니라 greeting 함수입니다. greeting 함수에서 get_greeting 함수를 호출하게 하는 방법을 사용했습니다.
