Google ADK MCP 도구: McpToolset으로 Sume 서버 연결
McpToolset, API 키 헤더, tool_filter로 Google ADK 에이전트에 Sume 호스팅 MCP 서버를 추가하고, 유료 도구는 실행 전에 확인을 받게 하세요.

Google ADK 에이전트를 Sume MCP 도구에 연결하려면 에이전트의 tools에 McpToolset을 추가하고, StreamableHTTPConnectionParams(url="https://mcp.sume.com/mcp"), Authorization: Bearer 헤더에 담은 Sume API 키, 에이전트가 호출해도 되는 Sume 도구만 적은 tool_filter를 지정하세요. 유료 도구는 require_confirmation=True를 설정한 두 번째 McpToolset에 넣으세요.
ADK 관련 내용은 ADK의 MCP 도구, Python API 레퍼런스, 액션 확인 페이지에서, Sume 관련 내용은 OAuth와 API 키, MCP 도구와 게이트, Job과 결과 (영문)에서 가져왔으며, 모두 2026-09-27에 확인했습니다. Sume에는 ADK용 패키지나 플러그인이 없습니다. McpToolset은 ADK 자체의 MCP 클라이언트입니다. Sume 기초 페이지는 호스팅 MCP가 여전히 동작하지만 현재 주 경로는 아니라고 설명합니다. Anthropic SDK에서 같은 설정을 하는 방법은 Claude Agent SDK MCP 서버를 참고하세요.
ADK 에이전트에 Sume MCP 서버를 어떻게 추가하나요?
Python 3.10 이상에서 MCP extra를 포함해 ADK를 설치하세요(pip install "google-adk[mcp]"). ADK 문서에 따르면 프로덕션에 배포하는 에이전트는 agent.py에서 McpToolset을 동기적으로 정의해야 하므로, 두 툴셋 모두 임포트 시점에 만드세요.
import os
from google.adk.agents import LlmAgent
from google.adk.tools.mcp_tool import McpToolset
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
def sume(tools, confirm=False):
return McpToolset(
connection_params=StreamableHTTPConnectionParams(
url="https://mcp.sume.com/mcp",
headers={"Authorization": f"Bearer {os.getenv('SUME_API_KEY')}"},
),
tool_filter=tools,
require_confirmation=confirm,
)
root_agent = LlmAgent(
model="gemini-flash-latest",
name="video_producer",
instruction="Preview paid calls with dry_run=true. Wait with jobs_wait; never resubmit.",
tools=[
sume(["tools_schema", "balance_get", "jobs_wait", "jobs_result"]),
sume(["generate_video"], confirm=True),
],
)Sume API 키는 어디에 넣나요?
ADK의 MCP 페이지는 os.getenv로 읽은 bearer 토큰을 headers로 넘기며, 예제도 같은 방식을 씁니다. 이 페이지는 헤더를 직접 만드는 대신 ADK 고유의 auth_scheme, auth_credential 파라미터를 쓰라고도 권합니다. 이 파라미터를 쓰면 ADK가 Authorization 헤더를 직접 구성합니다. MCP 도구에 API 키 인증을 쓸 때 ADK는 헤더 기반 키만 지원하며, Sume가 받는 방식도 헤더입니다(Authorization: Bearer 또는 x-api-key).
- 사용자마다 키가 다르다면
header_provider에 callable을 넘길 수 있습니다. 이 callable은ReadonlyContext를 받아 세션의 헤더를 반환합니다. - Sume의 API 키 세션에는 유료 도구를 포함한 전체 호스팅 도구 세트가 보입니다. 어떤 도구가 읽고, 쓰고, 비용을 쓰는지는 Sume MCP 도구 목록에 나와 있습니다. ADK 체크리스트는 필요한 액션만 노출하도록 항상
tool_filter를 지정하라고 하며, ADK 문서는 직접 연결한 툴셋의 모든 도구 정의가 에이전트 히스토리에 들어간다고 짚습니다. - 키를 채팅에 붙여 넣지 말고, 로그나 채팅 기록에 노출되면 교체하세요.
확인 요청은 유료 Sume 호출을 어떻게 멈추나요?
require_confirmation=True를 설정하면 그 툴셋의 모든 도구가 실행 전에 멈추고 예/아니요 응답을 기다립니다. adk web 인터페이스에서는 사용자에게 대화상자가 뜹니다. UI가 없다면 adk_request_confirmation이라는 이름의 FunctionResponse를 ADK API 서버의 /run 또는 /run_sse 엔드포인트로 보내세요. 확인 요청의 id를 넣고, response에 confirmed를 담으면 됩니다.
- ADK는 Tool Confirmation을 실험적 기능으로 표시하며, 이 기능은
DatabaseSessionService와VertexAiSessionService를 지원하지 않습니다. - 불리언 값은 툴셋의 모든 도구에 적용되므로
dry_run=true프리뷰도 확인을 요청합니다. ADK API 레퍼런스에 따르면require_confirmation은 도구의 인자를 받아 불리언을 반환하는 callable일 수도 있지만, ADK 확인 가이드는 이 형태를 함수 도구에 대해서만 보여 줍니다. - 결제 전 Sume 플레이북은 유료 도구를
dry_run=true로 호출하고, 추정치, 잔액, 큐 동작을 확인한 다음, 새idempotency_key를 넣어 제출하는 것입니다. 모든 쓰기·유료 도구에는idempotency_key가 필요합니다.max_spend_usd는 값을 넘긴 경우에만 호출의 상한이 됩니다. 다른 한도는 무인 AI 에이전트 지출 상한에서 다룹니다.
Sume의 긴 대기가 ADK 타임아웃 안에 들어오나요?
들어옵니다. Streamable HTTP에서 timeout은 연결 수립에, sse_read_timeout은 데이터 읽기에 걸리는 시간을 제한합니다. Sume의 jobs_wait는 호출 한 번을 최대 55초, timeout_seconds를 생략하면 50초 동안 붙잡아 두므로 읽기 타임아웃 안에 넉넉히 들어옵니다.
wait_slice_expired를 받으면 같은 id로jobs_wait를 다시 호출하고, 유료 create는 절대 다시 제출하지 마세요.jobs_wait에서 받은524,522,523,525는 Job 결과가 아니라 전송 실패입니다.adk web밖에서는await toolset.close()를 호출하거나 async 컨텍스트 매니저를 쓰세요.close()는 MCP 세션을 닫고 리소스를 해제합니다. 배치 대기는 긴 영상 Job의 MCP 도구 호출 타임아웃에서 다룹니다.
| 설정 | ADK 기본값 | 제한하는 대상 | Sume에서는 |
|---|---|---|---|
timeout | 5.0초 | 연결 수립 | 기본값 유지 |
sse_read_timeout | 300.0초 | 서버에서 데이터 읽기 | jobs_wait 상한인 55초를 이미 넘음 |
tool_filter | None | 에이전트가 받는 도구 | 항상 Sume 도구 이름 목록 |
require_confirmation | False | 호출마다 먼저 받는 예/아니요 | 유료 툴셋에는 True |
출처
관련 글
연동 카테고리의 다른 글
- Google Sheets 영상 자동화: Apps Script와 Sume
Apps Script 요청 한 번으로 시트 행 최대 100개를 Sume 영상 실행으로 바꾸고, 시간 기반 트리거로 큐를 폴링해 URL을 다시 시트에 쓰세요.
- Gradio 영상 생성 앱: Sume API 키는 Space 시크릿에
Sume API로 Gradio 영상 생성 앱을 만드세요. 키는 Hugging Face Space 시크릿에 두고, 제너레이터가 Job을 폴링하고, gr.Video가 영상을 재생합니다.
- Inngest 이벤트 대기: Sume 영상 실행이 끝나면 재개
step.run에서 Sume 실행을 시작하고, transform으로 웹훅을 Inngest 이벤트로 바꾼 뒤, 실행 id를 기준으로 2시간 타임아웃을 둔 step.waitForEvent로 기다리세요.
- Sume Format을 실행하는 LangChain 영상 생성 도구
LangChain @tool은 Sume Format 실행을 시작하고, 지출 상한을 두고, 안전한 재시도용 키를 붙이고, 영상이 준비될 때까지 에이전트가 확인할 실행 id를 돌려줄 수 있습니다.
작성자 Sume