Agent Client Protocol(ACP): AI 코드 에이전트와 코드 에디터(IDE)를 연결하는 새로운 표준

Agent Client Protocol 소개

Agent Client Protocol(ACP) 은 코드 에디터(IDE)와 AI 기반 코딩 에이전트 간의 통신을 표준화하기 위해 개발된 오픈 프로토콜입니다. 기존에는 각 에디터가 AI 모델 또는 에이전트마다 개별 API를 구현해야 했고, 반대로 에이전트는 특정 에디터 전용 인터페이스를 맞춰야 했습니다. 이러한 구조는 상호운용성(interoperability) 을 제한하고, 개발자에게 도구 선택의 자유를 주지 못했습니다.

ACP는 이런 문제를 해결하기 위해 등장했습니다. 언어 서버 프로토콜(Language Server Protocol, LSP) 이 다양한 언어 서버와 IDE를 표준화된 방식으로 연결한 것처럼, ACP는 AI 에이전트와 코드 편집기 간의 통신을 표준화합니다.

ACP를 통해 에디터는 한 번의 통합으로 모든 ACP 호환 에이전트를 사용할 수 있으며, 반대로 에이전트는 ACP만 구현하면 어떤 ACP 호환 에디터에서도 작동합니다. 이로써 개발자는 특정 플랫폼이나 벤더에 종속되지 않고, 자신에게 가장 적합한 AI 도구를 자유롭게 선택할 수 있습니다.

ACP는 JSON-RPC 기반의 경량 구조를 사용하여 에디터와 에이전트 간 통신을 수행합니다. 에이전트는 일반적으로 에디터의 하위 프로세스로 실행되어 표준 입력/출력(STDIN/STDOUT)을 통해 메시지를 주고받습니다. 또한, 사용자에게 표시되는 텍스트는 Markdown 포맷을 기본으로 하여, 별도의 HTML 렌더링 엔진 없이도 풍부한 형식을 표현할 수 있도록 설계되었습니다.

ACP의 아키텍처: 유연성과 신뢰성을 갖춘 구조

ACP의 아키텍처는 유연성(flexibility), 확장성(extensibility), 플랫폼 독립성(platform-agnostic) 을 핵심으로 설계되었습니다.

설계 철학

  1. MCP 친화적 구조: ACP는 Model Context Protocol(MCP)의 타입 구조를 재활용합니다. 덕분에 MCP를 사용하는 다른 시스템과도 손쉽게 연동되며, 개발자는 별도의 데이터 구조를 새로 정의할 필요가 없습니다.

  2. UX 중심 설계: ACP는 단순한 메시지 교환 이상의 역할을 합니다. 에이전트의 의도나 코드 수정 결과(diff)를 명확하게 전달할 수 있도록 UI 친화적인 데이터 타입을 제공합니다.

  3. 신뢰 기반 환경: ACP는 사용자가 신뢰할 수 있는 에이전트와 상호작용한다는 가정을 기반으로 하지만, 여전히 사용자는 모든 도구 호출에 대한 권한을 제어할 수 있습니다. 즉, 에이전트가 로컬 파일이나 외부 MCP 서버에 접근하려면 반드시 클라이언트의 승인을 받아야 합니다.

MCP 통합 (MCP Integration)

코드 에디터(IDE)는 보통 여러 MCP 서버를 구성할 수 있습니다. 사용자가 에이전트에 요청을 보낼 때, ACP는 해당 MCP 설정을 함께 전달하여 에이전트가 직접 MCP 서버에 연결하도록 합니다. 에디터 자체가 MCP 서버로서 동작할 수도 있는데, 이 경우 별도의 프록시(proxy) 를 사용하여 ACP와 MCP 간 요청을 안전하게 터널링합니다.

ACP의 통신 모델

ACP는 JSON-RPC 2.0을 기반으로 하며, 통신 메시지는 다음 두 가지 형태로 구분됩니다:

  • 메서드(Method): 요청(Request)-응답(Response) 구조로, 결과를 기대하는 메시지입니다. 예: 코드 수정 요청.
  • 알림(Notification): 응답이 필요 없는 단방향 메시지로, 진행 상태나 이벤트 업데이트를 전달할 때 사용됩니다.

모든 파일 경로는 절대 경로(Absolute Path) 를 사용해야 하며, 라인 번호(Line Number) 는 1부터 시작합니다. 에러는 기존의 JSON-RPC 표준을 그대로 따르며, 성공 시 Result, 실패 시 Error 객체(code, message)를 반환합니다. 이 구조를 통해 에이전트는 실시간으로 코드 수정 상태를 스트리밍하거나, UI에 변화(diff)를 반영할 수 있습니다.

ACP의 구성 요소: 클라이언트(Client)와 에이전트(Agent)

클라이언트(Client)

클라이언트는 ACP에서 사용자 인터페이스(UI) 를 담당합니다. 일반적으로는 코드 에디터 또는 IDE가 클라이언트로 동작합니다. 클라이언트는 사용자의 명령을 수집하고, 시스템 리소스 및 파일 접근 권한을 관리하며, MCP 서버 설정을 제어합니다.

기본 메서드 중 하나는 session/request_permission으로, 에이전트가 파일 수정이나 명령 실행을 시도할 때 사용자의 승인을 요청하는 기능입니다.

에이전트(Agent)

에이전트는 AI 기반 자동화 코딩 시스템입니다. 생성형 AI 모델을 사용해 코드를 분석하고, 개선하거나 새로운 코드를 작성할 수 있습니다. 에이전트는 클라이언트의 하위 프로세스로 실행되며, 클라이언트로부터 입력을 받아 MCP 서버나 로컬 파일에 접근해 실제 코딩 작업을 수행합니다.

예를 들어, 사용자가 “이 함수의 성능을 개선해줘”라고 입력하면, 에이전트는 코드 베이스를 분석하고 수정안을 생성한 뒤, 그 결과를 Markdown 기반 diff로 에디터에 표시할 수 있습니다.

ACP의 확장성 및 커스터마이징

ACP는 고정된 기능만 제공하는 것이 아니라, 확장 가능한 프로토콜입니다. ACP를 확장할 때에는 다음과 같은 규칙을 따라야 합니다:

  • _meta 필드를 통해 확장 데이터를 추가할 수 있습니다.
  • 커스텀 메서드는 이름을 밑줄(_)로 시작하여 정의합니다.
  • 초기화 단계에서 각 에이전트의 **기능(capability)**을 광고(advertise)하여 상호 호환성을 유지합니다.

이러한 규칙들을 통해 에디터 제작사나 AI 개발사는 각자 필요한 커스텀 기능을 추가하더라도 기존 ACP 생태계와 호환성을 유지할 수 있습니다.

공식 SDK 및 언어별 라이브러리

ACP는 여러 언어별 공식 SDK를 제공합니다.

그 외에도 공식 문서 사이트에서 커뮤니티에서 개발 및 유지보수하는 라이브러리들을 찾아볼 수 있습니다:

오픈소스 정책 및 기여 방법

ACP는 광범위한 생태계 채택을 목표로 하는 오픈소스 프로젝트 입니다. 모든 변경은 구조적인 검토 과정을 거치며, 기여자는 Contributing Guide를 참고해 기여 절차를 진행할 수 있습니다.

특이하게도, ACL 프로젝트는 기여자 라이선스 동의(CLA, Contributor License Agreement) 를 요구하지 않아, 기여자는 자신이 작성한 코드의 권리를 유지하면서도 자유롭게 프로젝트에 기여할 수 있습니다. 단, 작성한 코드는 Apache 2.0 라이선스로 공개됨에 동의하여야 합니다.

“By contributing to this project, you agree that your contributions will be licensed under the Apache License, Version 2.0.”

라이선스

ACP 프로젝트는 Apache License 2.0으로 공개되어 있으며, 상업적 사용, 수정, 재배포 모두 가능합니다. 단, 원저작권 표시와 라이선스 고지를 유지해야 합니다.

:house: Agent Client Protocol 공식 홈페이지

:github: Agent Client Protocol 프로젝트 GitHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

1개의 좋아요