MCP 응답 처리
test.py
test.py
import os
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
client = OpenAI()
input_message = "현재 삼성전자 주가 알려줘"
response = client.responses.create(
input=input_message,
prompt = {
"id": os.environ["PROMPT_ID"]
},
tools=[
{
"type": "mcp",
"server_label": "my_mcp",
"server_url": "https://openai-agent-school.onrender.com/mcp",
"allowed_tools": [
"get_stock_price"
],
"require_approval": "always"
}
],
)
# 응답 텍스트 출력
print(response.output_text)
# MCP 수락 요청 처리
follow_up_input = []
for output in response.output:
if output.type == "mcp_approval_request":
print("\n[MCP 수락 요청]")
print(f"- server_label: {output.server_label}")
print(f"- name: {output.name}")
print(f"- arguments: {output.arguments}")
approve_input = input("승인하시겠습니까? (y/n): ")
approve = approve_input.strip().lower() == 'y'
follow_up_input.append({
"type": "mcp_approval_response",
"approval_request_id": output.id,
"approve": approve
})
print("-" * 20)
# MCP 수락 요청 처리가 있으면 API 재호출
if follow_up_input:
response = client.responses.create(
input=follow_up_input,
previous_response_id=response.id,
prompt = {
"id": os.environ["PROMPT_ID"]
},
tools=[
{
"type": "mcp",
"server_label": "my_mcp",
"server_url": "https://openai-agent-school.onrender.com/mcp",
"allowed_tools": [
"get_stock_price"
],
"require_approval": "always"
}
],
)
print(response.output_text)
test.py
import os
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
client = OpenAI()
input_message = "현재 삼성전자 주가 알려줘"
response = client.responses.create(
input=input_message,
stream=True,
prompt = {
"id": os.environ["PROMPT_ID"]
},
tools=[
{
"type": "mcp",
"server_label": "my_mcp",
"server_url": "https://openai-agent-school.onrender.com/mcp",
"allowed_tools": [
"get_stock_price"
],
"require_approval": "always"
}
],
)
# 스트림 응답 처리
follow_up_input = []
for event in response:
if event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)
elif event.type == "response.completed":
previous_response_id = event.response.id
elif event.type == "response.output_item.done":
if event.item.type == "mcp_approval_request":
print("\n[MCP 수락 요청]")
print(f"- server_label: {event.item.server_label}")
print(f"- name: {event.item.name}")
print(f"- arguments: {event.item.arguments}")
approve_input = input("승인하시겠습니까? (y/n): ")
approve = approve_input.strip().lower() == 'y'
follow_up_input.append({
"type": "mcp_approval_response",
"approval_request_id": event.item.id,
"approve": approve
})
print("-" * 20)
# MCP 수락 요청 처리가 있으면 API 재호출
if follow_up_input:
response = client.responses.create(
input=follow_up_input,
previous_response_id=previous_response_id,
stream=True,
prompt = {
"id": os.environ["PROMPT_ID"]
},
tools=[
{
"type": "mcp",
"server_label": "my_mcp",
"server_url": "https://openai-agent-school.onrender.com/mcp",
"allowed_tools": [
"get_stock_price"
],
"require_approval": "always"
}
],
)
for event in response:
if event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)
# elif event.type == "response.completed":
# previous_response_id = event.response.id