Ai Coding

OpenAI Agents SDK가 MCP를 받아들이다

Anthropic이 만든 MCP를 OpenAI의 Agents SDK가 공식 지원한다. 에이전트와 외부 도구를 잇는 방식이 표준으로 수렴하고 있다는 신호다.

고쳐 쓰며 반복되는 작업의 흐름을 나타낸 추상 도판
AI 생성

OpenAI 의 Agents SDK 가 이제 Model Context Protocol(MCP)을 공식 지원한다.

LLM 기반 에이전트를 만들 때 외부 도구나 실시간 데이터 소스와 유연하고 표준화된 방식으로 연결하는 것은 매우 중요하다. MCP 는 바로 그 요구를 채우는 개방형 프로토콜이다.

MCP 가 무엇인가

MCP 는 애플리케이션이 LLM 에게 필요한 컨텍스트와 도구(Tools)를 제공하는 방법을 표준화한다. AI 애플리케이션을 위한 ‘USB-C 포트’ 에 비유할 수 있다. 여러 주변 기기를 단일 표준 포트로 연결하듯, MCP 는 AI 모델을 여러 종류의 데이터 소스 및 외부 기능과 일관된 방식으로 연결한다.

Agents SDK 가 MCP 를 지원하면서, 개발자는 MCP 표준을 따르는 여러 서버를 Agents SDK 기반 에이전트에 더 쉽게 붙일 수 있게 됐다.

지원되는 서버 유형

MCP 사양은 현재 두 가지 주요 서버 유형을 정의하며, Agents SDK 는 둘 다 지원한다.

stdio 서버 — 애플리케이션의 하위 프로세스로 실행되어 로컬에서 작동한다. MCPServerStdio 클래스로 연결한다.

HTTP over SSE 서버 — 원격 서버 형태로 운영되며 URL 로 접속한다. MCPServerSse 클래스로 연결한다.

공식 MCP 파일시스템 서버를 MCPServerStdio 로 연결하는 예시다.

import asyncio

filesystem_path = "/path/to/your/data"

async def setup_mcp_server():
    # stdio 방식으로 파일시스템 서버 실행 및 연결
    async with MCPServerStdio(
        params={
            "command": "npx",
            "args": ["-y", "@modelcontextprotocol/server-filesystem", filesystem_path],
        }
    ) as server:
        print("MCP 서버가 성공적으로 시작되었습니다.")

        # 사용 가능한 도구 목록 확인
        tools = await server.list_tools()
        print("사용 가능한 도구:", tools)

        # 생성된 server 객체를 Agent 설정에 사용
        agent = Agent(..., mcp_servers=[server])

asyncio.run(setup_mcp_server())

Agent 에 붙이는 법

MCP 서버를 Agent 에 통합하는 과정은 직관적이다. Agent 를 초기화할 때 mcp_servers 매개변수에 서버 객체 리스트를 넘기면 된다.

agent = Agent(
    name="Assistant Agent",
    instructions="제공된 도구를 사용하여 요청된 작업을 수행하십시오.",
    mcp_servers=[mcp_server_stdio, mcp_server_sse]  # 여러 서버 전달 가능
)

내부 동작 흐름은 이렇다.

  1. 에이전트가 실행될 때, SDK 는 mcp_servers 목록 내 각 서버의 list_tools() 를 호출한다
  2. 이를 통해 LLM 은 지금 어떤 도구를 쓸 수 있는지 알게 된다
  3. LLM 이 특정 도구를 쓰기로 결정하면(Function Call), SDK 가 해당 서버의 call_tool() 을 호출해 실행을 요청하고 결과를 받는다

캐싱

실행할 때마다 list_tools() 를 호출하는 것은, 특히 원격 서버라면 응답 지연을 만든다. 도구 목록이 자주 바뀌지 않는 환경이라면 캐싱으로 성능을 개선할 수 있다.

server_stdio_cached = MCPServerStdio(
    params={...},
    cache_tools_list=True
)

server_sse_cached = MCPServerSse(
    params={...},
    cache_tools_list=True
)

주의. 이 옵션은 도구 목록이 정적이라고 확신할 수 있을 때만 써야 한다. 목록이 바뀌면 캐시를 수동으로 갱신해야 할 수 있고, 필요하면 invalidate_tools_cache() 로 무효화한다.

예제와 추적

SDK 문서의 examples/mcp 디렉토리에서 MCP 연동 전체 예제를 볼 수 있다. 그리고 Agents SDK 의 추적(Tracing) 기능은 list_tools 호출이나 call_tool 실행 같은 MCP 관련 작업을 자동으로 기록해 디버깅과 동작 분석에 쓸 수 있다.

남는 이야기

Agents SDK 의 MCP 지원은 LLM 에이전트가 외부 도구 및 데이터 소스와 상호작용하는 방식을 표준화하고 단순화하는 중요한 진전이다. 이를 통해 더 유연하고 확장 가능한 에이전트를 효율적으로 만들 수 있게 된다.