# ACP vs MCP 프로토콜 비교

> 발견일: 2026-03-01
> 검증 방법: 직접 JSON-RPC 메시지 송수신 테스트

## 결론
ACP(Agent Control Protocol)와 MCP(Model Context Protocol)는 **호환되지 않는 별개 프로토콜**이다.
다만, MCP 래퍼 서버를 만들면 Claude Code에서 OpenClaw/GLM을 네이티브 도구로 사용 가능하다.

## 상세 비교

### MCP (Model Context Protocol) — Claude Code 측
- **용도**: 외부 도구를 Claude Code에 연결
- **방향**: Claude Code(클라이언트) → MCP 서버(도구 제공자)
- **전송**: JSON-RPC 2.0 over stdio
- **protocolVersion**: 문자열 `"2024-11-05"`
- **초기화 응답 구조**:
  ```json
  {
    "protocolVersion": "2024-11-05",
    "serverInfo": {"name": "...", "version": "..."},
    "capabilities": {"tools": {}}
  }
  ```
- **핵심 메서드**: `initialize`, `tools/list`, `tools/call`
- **설정 위치**: `~/.claude/settings.json` → `mcpServers`
- **로딩 시점**: Claude Code 세션 시작 시 자동 로드

### ACP (Agent Control Protocol) — OpenClaw 측
- **용도**: 외부 클라이언트가 OpenClaw 에이전트와 통신
- **방향**: 외부 클라이언트 → OpenClaw Gateway → AI 에이전트
- **전송**: JSON-RPC 2.0 over stdio (동일하지만 스키마가 다름)
- **protocolVersion**: 숫자 `1`
- **초기화 응답 구조**:
  ```json
  {
    "protocolVersion": 1,
    "agentCapabilities": {"loadSession": true, "promptCapabilities": {...}},
    "agentInfo": {"name": "openclaw-acp", "title": "OpenClaw ACP Gateway", "version": "2026.2.25"}
  }
  ```
- **핵심 차이**: `agentCapabilities`, `mcpCapabilities`, `sessionCapabilities` 등 에이전트 중심 구조
- **CLI 명령**: `openclaw acp` (서버 모드로 실행)

### 호환 불가 원인
1. `protocolVersion` 타입 불일치 (string vs number)
2. 초기화 응답 스키마 완전히 다름 (capabilities vs agentCapabilities)
3. 메서드 체계 다름 (tools/list vs 에이전트 세션 기반)

## 검증 과정

### 테스트 1: MCP protocolVersion으로 ACP에 요청
```bash
echo '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05",...},"id":1}' | openclaw acp
```
→ **에러**: `"Invalid input: expected number, received string"`

### 테스트 2: 숫자 protocolVersion으로 ACP에 요청
```bash
echo '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":1,...},"id":1}' | openclaw acp
```
→ **성공**: ACP 정상 응답. 하지만 Claude Code가 이 응답 형식을 이해 못함.

### 테스트 3: settings.json에 ACP를 MCP로 등록
```json
{"mcpServers": {"openclaw": {"command": "openclaw", "args": ["acp"]}}}
```
→ **실패**: Claude Code 세션에서 MCP 도구 로드 안 됨

## 해결책
→ [OpenClaw MCP 래퍼](openclaw-mcp-wrapper.md) 참조.
`openclaw agent` CLI를 감싸는 별도 MCP 서버를 개발하여 브릿지.
