AutoGen MCP 워크벤치: McpWorkbench로 Sume 연결
AutoGen의 McpWorkbench를 Sume 호스팅 MCP 서버에 연결하세요. StreamableHttpServerParams, API 키 헤더, 60초 타임아웃을 쓰고 도구는 줄입니다.

McpWorkbench는 MCP 서버 하나를 감싸는 AutoGen 래퍼입니다. 서버의 도구를 나열하고 호출하며, AssistantAgent에 workbench로 넘겨 씁니다. Sume 호스팅 MCP 같은 원격 서버라면 url="https://mcp.sume.com/mcp", Sume API 키를 담은 Authorization: Bearer 헤더, 기본값 30초에서 60으로 늘린 timeout으로 StreamableHttpServerParams를 만드세요. Sume의 jobs_wait는 호출 한 번을 55초까지 붙잡아 둘 수 있기 때문입니다.
AutoGen 쪽 내용은 autogen_ext.tools.mcp API 레퍼런스에서, Sume 쪽 내용은 MCP OAuth와 API 키, MCP 도구와 게이트, Job과 결과 (영문)에서 가져왔으며, 모두 2026-09-28에 확인했습니다. Sume에는 AutoGen용 패키지나 확장이 없습니다. AutoGen 자체의 MCP 클라이언트가 Sume 원격 서버와 통신하는 방식이며, Sume 기초 페이지는 호스팅 MCP가 여전히 동작하지만 현재 주 경로는 아니라고 설명합니다. 다른 Python 프레임워크는 Pydantic AI MCP 서버에서 다룹니다.
McpWorkbench를 Sume MCP 서버에 어떻게 연결하나요?
예제가 임포트하는 AutoGen 패키지와 함께 MCP extra인 autogen-ext[mcp]를 설치하세요. AutoGen은 MCP 세션이 제대로 초기화되고 정리되도록 워크벤치를 컨텍스트 매니저로 쓰라고 안내하며, start()와 stop()은 같은 일을 수동으로 합니다. 키는 환경 변수에서 읽고, 에이전트가 무엇보다 먼저 Sume의 읽기 전용 탐색 도구인 mcp_health와 tools_list를 호출하게 하세요.
import asyncio
import os
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.mcp import McpWorkbench, StreamableHttpServerParams
async def main() -> None:
params = StreamableHttpServerParams(
url="https://mcp.sume.com/mcp",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
timeout=60.0,
sse_read_timeout=300.0,
)
async with McpWorkbench(params) as sume:
agent = AssistantAgent(
"media_assistant",
model_client=OpenAIChatCompletionClient(model="gpt-4.1-nano"),
workbench=sume,
)
await Console(agent.run_stream(task="Call mcp_health and tools_list, then summarize."))
asyncio.run(main())timeout과 sse_read_timeout은 각각 무엇을 제어하나요?
AutoGen 예제는 timeout을 초 단위 HTTP 타임아웃(기본값 30.0)으로, sse_read_timeout을 초 단위 SSE 읽기 타임아웃(기본값 300.0, 즉 5분)으로 설명합니다. 레퍼런스는 둘 중 어느 쪽이 긴 도구 호출을 제한하는지 밝히지 않으므로, 둘 다 Sume jobs_wait가 붙잡을 수 있는 55초를 넘게 두세요. timeout은 60으로 늘리고, sse_read_timeout은 300 그대로 두면 됩니다.
클라이언트 쪽 타임아웃은 Sume Job을 취소하지 않으며, Job은 계속 실행되고 계속 청구됩니다. 렌더링이 대기 한 번보다 길면 에이전트는 wait_slice_expired를 받았을 때 같은 id로 jobs_wait를 다시 호출해야 하며, 유료 create는 절대 다시 제출하면 안 됩니다. 이 패턴은 긴 영상 Job의 MCP 도구 호출 타임아웃에서 다룹니다.
| `StreamableHttpServerParams` 필드 | AutoGen 기본값 | Sume 설정 |
|---|---|---|
url | 필수 | https://mcp.sume.com/mcp |
headers | None | Authorization: Bearer <key> 또는 x-api-key |
timeout | 30.0 | 60.0. jobs_wait의 55초 대기를 넘는 값 |
sse_read_timeout | 300.0 | 300.0 그대로 |
terminate_on_close | True | 그대로 둠 |
에이전트에 Sume 도구 일부만 주려면 어떻게 하나요?
워크벤치는 서버가 나열하는 모든 도구를 에이전트에 제공하며, 레퍼런스에는 필터가 없고 도구의 이름과 설명을 위한 tool_overrides만 나와 있습니다. API 키 세션에는 유료 도구를 포함한 Sume의 전체 호스팅 도구 세트가 나열되고, AutoGen MCP 레퍼런스에는 호출 전 승인 단계가 나와 있지 않습니다. 범위를 좁히려면 대신 같은 파라미터로 mcp_server_tools()를 호출하세요. 이 함수는 도구마다 어댑터를 하나씩 반환하고, 어댑터는 에이전트의 tools 목록에 바로 들어가며, 어댑터마다 남길지 뺄지 판단할 name이 있습니다.
Sume 문서는 에이전트에 먼저 읽기 전용 명령을 주고, 유료 생성 전에는 명시적 확인을 요구하라고 안내합니다. 그러니 읽기 도구로 시작하고, generate_image는 무인 지출을 받아들일 수 있을 때만 추가하세요. 유료 호출마다 idempotency_key가 필요하고, dry_run=true는 제출하지 않고 접수 여부와 비용을 미리 보여 주며, max_spend_usd는 값을 보낸 경우에만 호출의 상한이 됩니다. 위 예제에서는 다음 코드가 async with 블록을 대신합니다.
# at the top of the file
from autogen_ext.tools.mcp import mcp_server_tools
# in main(), instead of the async with block
# add "generate_image" only when unattended spend is acceptable
ALLOWED = {"tools_schema", "jobs_status", "jobs_wait", "jobs_result"}
tools = [t for t in await mcp_server_tools(params) if t.name in ALLOWED]
agent = AssistantAgent(
"media_assistant",
model_client=OpenAIChatCompletionClient(model="gpt-4.1-nano"),
tools=tools,
)
await Console(agent.run_stream(task="Call tools_schema for generate_image."))Sume에서도 워크벤치의 리소스와 프롬프트를 쓸 수 있나요?
아니요, 쓸 수 없습니다. McpWorkbench는 도구(list_tools, call_tool), 리소스, 리소스 템플릿, 프롬프트를 지원하고, model_client를 통한 선택적 샘플링도 지원합니다. 현재 Sume 서버는 tools capability만 선언하며, 다른 요청 메서드에는 JSON-RPC 오류 -32601과 MCP method is not supported로 시작하는 메시지로 응답합니다. 따라서 list_resources, read_resource, list_prompts, get_prompt는 Sume에서 실패하니 list_tools와 call_tool만 쓰세요. 세 가지의 차이는 MCP 도구 vs 리소스 vs 프롬프트에서 설명합니다.
출처
관련 글
연동 카테고리의 다른 글
- Azure AI Foundry MCP 도구: 에이전트를 Sume에 연결
Azure AI Foundry 에이전트에 MCP 도구를 추가하세요. Sume API 키는 Custom keys 연결에 두고 server_url, allowed_tools, require_approval을 씁니다.
- Azure DevOps 예약 파이프라인: UTC 기준 매일 밤 cron
파이프라인 YAML에 UTC 기준 cron을 담은 schedules 블록을 추가하고, 코드 변경이 없어도 실행되게 always: true를 설정하고, 유료 API 호출은 날짜로 키를 만드세요.
- BullMQ 재시도: 유료 API 작업의 지수 백오프
BullMQ 작업에 attempts와 지수 백오프를 설정하고, UnrecoverableError로 일찍 멈추고, 유료 API 호출마다 작업을 기준으로 키를 만들어 재시도가 원래 실행을 재전송하게 하세요.
- Celery 태스크 재시도: 유료 API 호출용 백오프와 지터
autoretry_for, retry_backoff, max_retries로 Celery 태스크를 재시도하고, 429에는 retry-after만큼 기다리고, 재시도마다 같은 Idempotency-Key를 보내세요.
작성자 Sume