원문 캡처 · timeline.differentiated.io
원문 캡처 · timeline.differentiated.io

MCP Events는 서버가 새 메시지나 배포 실패 같은 일을 에이전트에 알리고, 사용자가 먼저 요청하지 않아도 에이전트가 실행되게 하는 Model Context Protocol의 초안 확장이다. 다만 아직 표준으로 확정되지 않았고, 주요 지원은 웹훅 방식에 머물러 있다.

초안인 SEP-3415은 기존의 폴링 방식과 달리 서버가 사건을 알릴 수 있게 한다. 서버는 events/list로 이벤트 종류와 구독에 필요한 inputSchema, 전달 자료의 payloadSchema를 공개한다. 전달 방식은 일반 요청·응답인 events/poll, 장시간 연결을 유지하는 푸시 스트림인 events/stream, 웹훅을 쓰는 events/subscribe 세 가지다. 스트림은 HTTP에서 SSE를, stdio에서 알림을 사용하고, 웹훅은 클라이언트가 제공한 whsec_ 비밀키로 서명한다.

초안에는 연결이 끊긴 뒤 이어받을 수 있는 불투명 커서와, 이벤트를 건너뛴 경우의 truncated: true 표시가 포함됐다. 구독은 만료 시간을 두며 클라이언트가 갱신해야 한다. 설계 초안은 웹훅 전달 시점의 IP 확인과 리디렉션 미허용으로 SSRF를 막고, 첫 전달 전 엔드포인트를 검증하며, 비밀키를 교체하는 방안도 다룬다.

지원 현황은 제한적이다. OpenAI는 9월 29일 DevDay에서 ChatGPT 지원을 발표했고, Vercel AI SDK는 10월 15일 실험적 지원을 추가했다. Cloudflare의 API MCP 서버도 Workers 이슈를 이벤트로 보낸다. 하지만 ChatGPT와 Vercel은 웹훅만 지원하며, Claude Code·Cursor·VS Code는 아직 지원하지 않는다. 공식 Python·TypeScript SDK에도 events/*가 없어 각 구현체가 별도로 기능을 덧붙이고 있다. 10월 18일 기준으로 ChatGPT는 Work 채팅에서 웹훅 방식을 지원한다.

웹훅은 공개 HTTPS 주소를 가진 호스팅 서비스에 맞지만, 로컬 에이전트에는 외부에서 접근할 공개 주소가 없는 경우가 많다. 이들을 위해 마련된 events/stream을 큰 서비스가 아직 제공하지 않는다는 점이 간극이다. 이벤트로 깨어날 때 가장 도움을 받을 수 있는 에이전트가 오히려 외부에서 닿기 어렵다는 지적이다.

더 큰 변화는 보안에 있다. 기존에는 사용자의 요청이 먼저였고, 에이전트가 이메일·이슈·웹페이지 같은 신뢰할 수 없는 내용을 읽는 것도 대개 사용자가 시킨 일이었다. 이벤트 방식에서는 외부인의 GitHub 댓글이나 이메일이 먼저 에이전트를 깨우고, 그 내용이 에이전트의 맥락에 들어간다. 에이전트가 도구를 쓸 수 있는데도 지켜보는 사람이 없을 수 있다. 이는 비공개 데이터, 신뢰할 수 없는 입력, 행동 수단이 결합하는 ‘치명적 삼중 위협’에 사람이 개입하지 않는 상황이라는 사이먼 윌리슨의 설명과 맞닿아 있다.

초안은 이벤트 내용을 도구 결과처럼 취급하고 최소화하라고 권한다. 하지만 사람이 시작하지 않은 실행이라면 그것만으로 충분한지 우려가 남는다. 이벤트에는 ID와 유형만 담고, 세부 내용은 권한이 적용되는 일반 도구 호출로 가져오는 편이 낫다. inputSchema 필터를 사용해 모든 활동이 아니라 특정 저장소와 라벨에만 반응하게 할 수도 있다. 이벤트는 초안을 만드는 데 쓰고, 전송·병합·결제 같은 행동에는 사람의 확인을 남겨야 한다.

Timeline의 제작자는 위치 기록 앱에 visit.started와 visit.ended 이벤트를 추가하는 사례를 상상한다. 특정 장소를 구독 조건으로 설정하면 슈퍼마켓에 도착했을 때 필요한 물품을 알려주거나, 리스본에 도착했을 때 호텔행 지하철을 찾아주는 식이다. 사무실에 늦게까지 남아 저녁 예약에 늦을 상황이면 지연 안내문을 초안으로 만들 수도 있다. 이는 실제 제공 기능이 아니라 제작자가 제시한 활용 구상이다.

위치 정보 외에도 새벽에 CI가 실패한 뒤 수정 사항이 담긴 PR 초안을 만들거나, 결제 실패 후 고객에게 보낼 후속 메시지를 작성하거나, 문서의 수정 요청에 맞춰 편집안을 준비하는 사례를 들었다. 이 구상들의 공통점은 에이전트가 최종 행동을 하는 대신 초안이나 알림을 만든다는 것이다.

에이전트가 정기 작업이나 채팅 메시지로만 깨어나는 방식은 한계가 있으며, 서버가 표준 방식으로 이벤트를 보내는 기능은 필요하다는 것이 제작자의 견해다. 8월 MCP 로드맵도 서버가 시작하는 이벤트를 최우선 영역에 포함했다. 그러나 현재는 주요 호스트 하나와 전달 방식 하나만 지원하고, SDK 지원은 없으며, 명세도 계속 바뀌고 있다. 제작자는 지금 이벤트 서버를 만들더라도 이벤트 내용은 최소화하고, 이벤트가 도착할 때 사람이 지켜보지 않을 수 있다고 가정하라고 권한다.

SEP-3415는 아직 공개 검토 중인 풀 리퀘스트이며 오류 코드와 일부 세부 사항도 잠정적이다. 상세 자료는 SEP-3415, MCP Events 설계 초안, Triggers & Events 작업 그룹에서 확인할 수 있다.