Agno MCP 서버: Agno 에이전트에 Sume 호스팅 도구 연결

MCPTools로 Agno 에이전트를 Sume 호스팅 MCP 서버에 연결하세요. API 키 헤더와 도구 허용 목록을 쓰고, timeout_seconds는 10에서 늘립니다.

읽는 시간 5분Sume
전체 글

Agno 에이전트를 원격 MCP 서버에 연결하려면 서버의 url로 MCPTools를 만들고, 인증 정보는 headers로 넘기고, 이를 에이전트의 tools에 넣으세요. URL을 주면 Agno는 Streamable HTTP 트랜스포트를 씁니다. Sume 호스팅 MCP 서버라면 url="https://mcp.sume.com/mcp"에 Sume API 키를 담은 Authorization: Bearer 헤더와 include_tools 허용 목록을 더하고, timeout_seconds는 기본값 10에서 늘리세요. Sume의 jobs_wait는 호출 한 번을 55초까지 붙잡아 둘 수 있기 때문입니다.

Agno 쪽 내용은 Agno의 MCP 개요, Stripe MCP 에이전트와 확인이 필요한 MCP 툴킷 예제, 서버 파라미터 페이지에서, Sume 쪽 내용은 MCP OAuth와 API 키, MCP 도구와 게이트, Job과 결과 (영문)에서 가져왔으며, 모두 2026-09-28에 확인했습니다. Sume에는 Agno용 패키지나 플러그인이 없습니다. Agno 자체의 MCP 클라이언트가 Sume 원격 서버와 통신하는 방식이며, Sume 기초 페이지는 호스팅 MCP가 여전히 동작하지만 현재 주 경로는 아니라고 설명합니다.

Agno 에이전트를 Sume MCP 서버에 어떻게 연결하나요?

Agno의 Stripe 예제가 OpenAI 모델용으로 하는 것처럼 agno[mcp,openai]를 설치하고, 서버마다 MCPTools 인스턴스를 하나씩 쓰세요. Stripe 호스팅 서버를 쓰는 이 예제는 headers에 bearer 키를 넘기고, 정리까지 대신 해 주는 async with로 연결을 엽니다. Sume도 같은 형태를 따릅니다. transport는 Agno가 URL에서 추론하도록 두세요. 키는 프롬프트가 아니라 반드시 환경 변수에서 읽으세요.

import asyncio
import os

from agno.agent import Agent
from agno.models.openai import OpenAIResponses
from agno.tools.mcp import MCPTools


async def main() -> None:
    async with MCPTools(
        url="https://mcp.sume.com/mcp",
        headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
        include_tools=["tools_schema", "generate_image", "jobs_wait", "jobs_result"],
        timeout_seconds=60,
    ) as sume:
        agent = Agent(
            model=OpenAIResponses(id="gpt-5.2"),
            tools=[sume],
            instructions="Call generate_image with dry_run=true before any real submit.",
        )
        await agent.aprint_response("Make a photo of a blue ceramic mug.", stream=True)


asyncio.run(main())

Sume를 쓸 때 timeout_seconds는 왜 늘려야 하나요?

timeout_seconds는 초 단위 MCP 클라이언트 읽기 타임아웃이며, 기본값은 10입니다. Sume의 jobs_wait는 호출 한 번을 최대 55초, 자체 timeout_seconds 인수를 생략하면 50초 동안 열어 두므로, Agno 기본값 그대로라면 Sume가 아직 대기를 붙잡고 있는 사이에 클라이언트가 읽기를 멈춥니다. 60으로 설정하세요. 클라이언트 쪽 타임아웃은 Sume Job을 취소하지 않습니다. Job은 계속 실행되고 계속 청구되므로, 다시 제출하지 말고 클라이언트 타임아웃을 늘리세요. 기본값이 5초인 같은 함정은 OpenAI Agents SDK MCP 서버에서 다룹니다.

  • 이름이 같은 설정이 두 개 있습니다. MCPTools에 있는 Agno의 timeout_seconds와, Sume jobs_wait 도구의 timeout_seconds 인수입니다.
  • url 대신 server_params=StreamableHTTPClientParams(...)로 연결하면, HTTP 작업에 쓰이는 그 timeout의 기본값은 30초, sse_read_timeout의 기본값은 5분입니다. 이 timeout도 55보다 크게 늘리세요.
  • wait_slice_expired를 받으면 에이전트는 같은 id로 jobs_wait를 다시 호출해야 하며, 유료 create는 절대 다시 제출하면 안 됩니다. 이 패턴은 긴 영상 Job의 MCP 도구 호출 타임아웃에서 다룹니다.

에이전트에는 어떤 Sume 도구를 줘야 하나요?

include_tools와 exclude_tools는 Agno가 찾아낸 도구 중에서 고릅니다. API 키 세션에는 쓰기·유료 도구를 포함한 Sume의 전체 호스팅 도구 세트가 보이므로, 범위를 좁히는 수단 중 여러분이 직접 제어하는 것은 허용 목록입니다. Sume의 라이브 도구 ID는 밑줄을 쓰며, Sume MCP 도구 목록은 도구를 읽기, 쓰기, 유료로 나눠 정리합니다.

파라미터는 Agno MCP 개요, Sume 값은 MCP OAuth와 API 키와 Job과 결과 (영문) 기준, 2026-09-28 확인.
`MCPTools` 파라미터Agno 기본값과 용도Sume 설정
urlNone. 원격 서버 엔드포인트https://mcp.sume.com/mcp
transport추론됨. URL을 주면 streamable-http추론에 맡김. sse는 쓰지 않음
headersNone. 고정 HTTP 헤더Authorization: Bearer <key> 또는 x-api-key
include_toolsNone. 찾아낸 도구 중에서 선택작업에 필요한 Sume 도구만
timeout_seconds10. 초 단위 MCP 클라이언트 읽기 타임아웃60. jobs_wait의 55초 대기를 넘는 값
protocol_mode"legacy". 세션 기반 프로토콜기본값 유지. 현재 Sume 서버는 initialize로 협상

유료 Sume 호출 전에 에이전트가 먼저 묻게 하려면 어떻게 하나요?

MCPTools의 requires_confirmation_tools에 유료 도구 이름을 적으세요. 도구 이름은 대소문자를 구분합니다. Agno 예제에서는 에이전트가 이런 도구를 호출하면 실행이 멈추고, 여러분의 코드가 대기 중인 확인마다 requirement.confirm()이나 requirement.reject()로 답한 뒤 agent.acontinue_run(...)을 호출해야 실행이 이어집니다. 예제의 에이전트에는 db도 있습니다.

  • Sume 유료 도구는 호출할 때마다 idempotency_key가 필요합니다. dry_run=true는 Job을 제출하지 않고 접수 여부와 비용 프리뷰를 반환하며, max_spend_usd는 값을 보낸 경우에만 호출의 상한이 됩니다.
  • 이 인수들은 에이전트가 직접 작성하므로, 여러분의 코드가 강제하는 한도가 아닙니다. 코드가 강제하는 한도는 허용 목록과 확인 단계입니다.
  • 호스팅 MCP는 노트북의 파일을 읽을 수 없습니다.

출처

관련 글

연동 카테고리의 다른 글

연동 글 전체 보기

작성자 Sume