OpenAI Agents SDK MCP 서버: Sume와 5초 타임아웃

API 키로 OpenAI Agents SDK를 Sume 호스팅 MCP 서버에 연결하고, 기본 5초인 클라이언트 타임아웃을 jobs_wait의 55초보다 길게 늘리세요.

읽는 시간 5분Sume
전체 글

OpenAI Agents SDK에서 Sume 호스팅 MCP 서버를 쓰려면 Authorization: Bearer 헤더에 Sume API 키를 담아 https://mcp.sume.com/mcp로 MCPServerStreamableHttp 연결을 열고, client_session_timeout_seconds와 timeout 파라미터를 기본값인 5초에서 55초보다 길게(이 글에서는 60초) 늘리세요. Sume의 jobs_wait는 호출 한 번을 최대 55초까지 붙잡아 둘 수 있기 때문입니다.

SDK 설정은 OpenAI의 MCP 가이드와 MCP 서버 레퍼런스에서, Sume 쪽 내용은 OAuth와 API 키, MCP 도구와 게이트, Job과 결과 (영문)에서 가져왔으며, 모두 2026-09-27에 확인했습니다. Sume에는 Agents SDK 전용 연동이 없습니다. SDK 자체의 MCP 클라이언트가 Sume 호스팅 서버와 통신하는 방식입니다. Sume 기초 페이지는 호스팅 MCP가 여전히 동작하지만 현재 주 경로는 아니라고 설명합니다.

Sume 도구 호출은 왜 5초 뒤에 실패하나요?

MCPServerStreamableHttp는 MCP ClientSession 읽기 타임아웃인 client_session_timeout_seconds를 기본값 5로 두며, HTTP 요청 타임아웃인 timeout 파라미터의 기본값도 5초입니다. 일부 Sume 도구는 설계상 요청을 열어 둔 채 기다립니다. 원격 MCP에서 jobs_wait가 받는 timeout_seconds는 기본값이 50, 상한이 55이며, 대기 한 번은 슬라이스 내내 열려 있는 HTTP 요청 하나입니다. script_run은 자체 timeout_seconds(5–55)로 제한됩니다. SDK 기본값 그대로라면 클라이언트는 5초 뒤에 포기하지만, 끝나지 않은 Job을 기다리는 대기는 50초나 55초 동안 이어집니다.

호출하는 쪽에서 멈춰도 Job은 멈추지 않습니다. 대기가 끊기면 호출자는 도구 결과를 받지 못하지만 Job은 계속 실행되고 계속 청구되며, 클라이언트 쪽 타임아웃이 Job을 취소하지도 않습니다. 해결책은 클라이언트 타임아웃을 늘리는 것이지, 다시 제출하는 것이 아닙니다.

Agents SDK를 Sume에 어떻게 연결하나요?

streamable HTTP 클라이언트가 Sume 프로덕션 URL을 가리키게 하고, 키를 헤더로 넘기고, 에이전트에 필요한 도구만 허용하세요.

  • Authorization: Bearer $SUME_API_KEY나 x-api-key를 보내세요. Sume 문서는 인터랙티브 클라이언트에는 OAuth를 권장하고, API 키 원격 MCP는 OAuth를 쓰지 않는 자동화를 위한 다른 경로라고 설명합니다. API 키 세션에는 유료 도구를 포함한 전체 호스팅 도구 세트가 보입니다.
  • OpenAI 가이드는 액세스 토큰을 URL이 아니라 authorization 필드나 헤더에 두라고 하며, 가이드 자체의 예제도 토큰을 환경 변수에서 읽습니다.
  • create_static_tool_filter(allowed_tool_names=[...])는 목록에 넣은 도구만 노출합니다.
  • generate_video에서 payload.model을 생략하면 sume/auto로 라우팅됩니다.
  • 모든 쓰기·유료 도구에는 idempotency_key가 필요합니다. dry_run=true는 Job을 제출하지 않고 접수 여부와 비용을 미리 보여 주며, max_spend_usd는 값을 넘긴 경우에만 호출의 상한이 됩니다. 이 게이트는 유료 API를 호출하는 AI 에이전트의 안전한 자동화에서 다룹니다.
import asyncio, os
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp, create_static_tool_filter

async def main() -> None:
    async with MCPServerStreamableHttp(
        name="sume",
        params={
            "url": "https://mcp.sume.com/mcp",
            "headers": {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
            "timeout": 60,
        },
        client_session_timeout_seconds=60,
        tool_filter=create_static_tool_filter(
            allowed_tool_names=["tools_schema", "generate_video", "jobs_wait", "jobs_result"]
        ),
    ) as sume:
        agent = Agent(
            name="Video producer",
            instructions="Call generate_video with dry_run=true first. Wait with jobs_wait; never resubmit.",
            mcp_servers=[sume],
        )
        print((await Runner.run(agent, "Preview a 5-second 9:16 clip of a desk lamp.")).final_output)

asyncio.run(main())

Sume에 맞춰 어떤 설정을 바꿔야 하나요?

생성자 설정 네 가지가 긴 Sume 호출이 끊기지 않고 끝까지 갈지, 모델에 어떤 도구가 보일지, 실패한 호출이 어떻게 반복될지를 정합니다. SDK 가이드는 네트워크 연결을 직접 관리하려면 MCPServerStreamableHttp를 쓰라고 하므로, 네 가지 설정 모두 직접 운영하는 프로세스 안에 있습니다.

OpenAI MCP 서버 레퍼런스와 Sume Job과 결과 (영문), MCP 도구와 게이트 기준, 2026-09-27 확인. 권장값은 55초 상한에서 이 글이 도출한 값입니다.
설정SDK 기본값Sume 권장값이유
client_session_timeout_seconds555 초과(예제는 60)jobs_wait 슬라이스는 최대 55초, timeout_seconds를 생략하면 50초 동안 대기합니다.
params["timeout"]5초55 초과(예제는 60)대기 한 번은 슬라이스 내내 열려 있는 HTTP 요청 하나입니다.
tool_filterNone허용 목록API 키 세션에는 쓰기·유료 도구가 보입니다.
max_retry_attempts재시도 없음선택재시도는 call_tool을 반복합니다. Sume의 필수 idempotency_key는 전송/중복 제거용 고정 키이므로, 같은 Job에는 같은 값을 유지하세요.

Job보다 대기가 먼저 끝나면 에이전트는 무엇을 해야 하나요?

에이전트의 instructions에 다음 규칙을 적어 두세요. wait_slice_expired를 받으면 같은 id로 jobs_wait를 다시 호출하고, 유료 create는 절대 다시 제출하지 않습니다. jobs_wait에서 받은 524, 522, 523, 525는 Job 결과가 아니라 전송 실패로 다룹니다. 배치 대기와 나머지 대기 계약은 긴 영상 Job의 MCP 도구 호출 타임아웃에서 다룹니다.

대신 HostedMCPTool을 써야 하나요?

HostedMCPTool은 도구 호출 왕복 전체를 OpenAI 인프라로 넘깁니다. Responses API가 모델을 대신해 서버의 도구를 나열하고 호출하므로 Python 프로세스로는 콜백이 오지 않으며, SDK의 클라이언트 쪽 도구 가드레일도 적용되지 않습니다. Sume 인증 문서는 API 키를 신뢰할 수 있는 서버, CI 시크릿 저장소, 로컬 개발 머신에 두라고 합니다. MCPServerStreamableHttp를 쓰면 모든 Sume 호출을 자체 프로세스가 직접 하고, 키와 도구 필터도 그 프로세스가 가집니다.

출처

관련 글

연동 카테고리의 다른 글

연동 글 전체 보기

작성자 Sume