OpenAI, Agents SDK에 MCP 지원 추가
(openai.github.io)- MCP(Model Context Protocol) 는 LLM에게 도구와 컨텍스트를 제공하는 표준화된 방식임
- USB-C 포트처럼, 다양한 데이터 소스나 도구와 AI 모델을 연결하는 표준 인터페이스 역할을 함
- OpenAI Agents SDK는 MCP를 지원하여 다양한 MCP 서버와 통합 가능함
MCP 서버
- 현재 MCP 사양은 사용하는 전송 메커니즘에 따라 두 가지 종류의 서버를 정의함:
- stdio 서버는 애플리케이션의 하위 프로세스로 실행되며, "로컬"에서 실행되는 것으로 생각할 수 있음.
- HTTP over SSE 서버는 원격으로 실행되며, URL을 통해 연결함.
-
MCPServerStdio
와MCPServerSse
클래스를 사용하여 이러한 서버에 연결할 수 있음. - 예를 들어, 공식 MCP 파일 시스템 서버를 사용하는 방법은 다음과 같음:
async with MCPServerStdio( params={ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir], } ) as server: tools = await server.list_tools()
캐싱
- 에이전트가 실행될 때마다 MCP 서버의
list_tools()
를 호출하는 것은 지연 시간을 초래할 수 있음. 특히 서버가 원격 서버일 경우 더욱 그러함. - 도구 목록을 자동으로 캐시하려면
MCPServerStdio
와MCPServerSse
에cache_tools_list=True
를 전달할 수 있음. 도구 목록이 변경되지 않을 것이라고 확신할 때만 이를 수행해야 함. - 캐시를 무효화하려면 서버에서
invalidate_tools_cache()
를 호출할 수 있음.
Hacker News 의견
-
오늘 MCP가 Streamable HTTP를 추가했음. 이는 원격 HTTP 서버에 항상 연결할 필요가 없다는 점에서 큰 진전임
- 하지만 사양을 보면 LSP 스타일 패러다임을 원격 HTTP 서버에 도입하는 것이 많은 복잡성을 추가하고 있음
- 전통적으로는
/get_weather
에{ "location": "New York" }
를 HTTP POST로 보내는 방식이었음 - 복잡성을 줄이고 전통적인 HTTP 서버로 돌아가자는 제안을 했음. 세션은
Authorization
헤더로 협상하고 전통적인 엔드포인트를 사용함 - 서버 구축이 훨씬 쉬워지고 웹 프레임워크가 사양에 맞게 업데이트될 필요가 없을 것임
-
MCP를 AI 애플리케이션의 USB-C 포트로 생각하라는 비유가 있음
- 소프트웨어 엔지니어로서는 그 비유가 도움이 되지 않음
-
OpenAI가 이를 공식적으로 지지할지 궁금했지만, 이제 답을 얻었음
- MCP는 LLM을 외부 도구에 연결하는 산업 표준이 되었음
-
OpenAPI를 지원하기를 바랐음. 몇 개의 MCP 서버를 만들었지만 덜 유연하고 문서화가 잘 안 되어 있는 API로 느껴짐
- MCP가 OpenAPI보다 나은 점을 찾기 어려움. 코드가 조금 줄어들지만 선택지가 훨씬 줄어듦
- 시간이 지나면 Swagger가 내장될 것임
-
MCP의 가치가 무엇인지 이해하기 어려움. 현대 AI 기술의 혼란 속에서 또 다른 산만함으로 느껴짐
- MCP는 애플리케이션이 LLM에 컨텍스트를 제공하는 방식을 표준화하는 개방형 프로토콜임
- 표준화할 것이 무엇인지 의문임. 우리는 임의의 토큰화된 문자열로 작동하는 텍스트-텍스트 변환기를 사용하고 있음
- 도구/기능 호출 같은 것도 단순한 텍스트 위에 있는 영리한 휴리스틱임
-
AI 에이전트가 로컬에서 "도구"를 사용할 수 있는 아키텍처를 만들었음. 모든 종류의 LLM 및 LLM 서버와 작동함
- 미들웨어로 작동하며 LLM 서버와 채팅 클라이언트 사이에서 스트림으로 작동함
- 오픈 소스 프로젝트이며, 코드에 관심을 보이는 사람이 없어 리포가 업데이트되지 않음
-
MCP를 실제로 어떻게 사용하는지에 대한 비디오가 부족함. 프로그래머에게 실질적인 사용 사례가 부족함
-
MCP를 AI 애플리케이션의 USB-C 포트로 생각하라는 비유가 있음
- USB 구현에 많은 고통이 따른다는 이야기를 많이 들었기 때문에 다른 비유를 찾는 것이 좋을 것임
-
MCP의 구버전인 HTTP+SSE를 대상으로 하고 있는 것 같음. 새로운 Streaming HTTP 버전이 아님
- OAuth 2.1 지원, JSON-RPC 배칭 등도 있음
-
MCP를 간단하게 시도해보고 싶다면 <a href="https://skeet.build/mcp" rel="nofollow">skeet.build/mcp</a>를 만들었음
- 복잡한 MCP 설정, 지원 부족, 자체 구축의 어려움 때문에 만들었음
- 주로 다음과 같은 워크플로우를 위해 사용됨
- PR 시작 시 요약 작성
- Linear/Jira에 요약 슬랙 또는 댓글
- Sentry에서 이슈 가져와서 수정
- 버그 발견 시 Linear 이슈 생성
- Linear 이슈 가져와서 첫 번째 패스
- Notion 문서와 PRD 가져와서 코드 기반으로 API 참조 생성
- 빠른 모델 개발을 위한 Postgres 또는 MySQL 스키마
- 사용 용이성, 실용적인 개발자 워크플로우, 고품질의 MCP 서버에 중점을 두고 있음