# MCP (Model Context Protocol) 표준 준수 명세

> **대상**: 고객사 조달·감사팀 / MCP 클라이언트·에이전트 개발자
> **버전**: 2026-07-25 기준

WRKS MCP Hub 가 [Model Context Protocol](https://modelcontextprotocol.io) 의 어떤 spec revision · 어떤 기능을 준수하는지 정리한 문서. "MCP Hub" 라는 이름을 걸고 서비스하는 만큼, MCP 표준 준수는 우리의 핵심 약속.

MCP 는 Anthropic 주도의 오픈 표준으로 2024-11 발표 이후 여러 revision 을 거쳐 왔음. 최신 revision 은 **2025-11-25**.

---

## 1. 한 눈에 요약

WRKS MCP Hub 는 **MCP Server** 역할을 하며 (host / client 아님), MCP client (WRKS AI · Claude Desktop · Cursor 등) 가 표준 방식으로 접속해 도구를 호출할 수 있게 함.

- **Transport**: Streamable HTTP (권장 방식)
- **Base Protocol**: JSON-RPC 2.0
- **Advertised protocolVersion**: `2024-11-05` (하위 호환)
- **실제 지원 spec 범위**: 2024-11-05 ~ 2025-11-25 (하위 호환 유지, 상위 기능 opt-in)
- **주 기능**: Tools (도구 호출)
- **인증**: OAuth 2.0 (per-user) · Client Credentials (M2M) · Static Bearer

---

## 2. Spec revision 지원 매트릭스

| Revision       |     상태     | 비고                                                                                                                         |
| -------------- | :----------: | ---------------------------------------------------------------------------------------------------------------------------- |
| **2024-11-05** | ✅ 완전 지원 | `initialize` 응답에서 이 버전으로 협상. 대부분 클라이언트가 이해                                                             |
| **2025-03-26** | ✅ 하위 호환 | 이 revision 의 client 도 정상 통신                                                                                           |
| **2025-06-18** | ✅ 하위 호환 | OAuth metadata 확장 · structured content 지원 준비                                                                           |
| **2025-11-25** |   부분 ✅    | 최신. 인증 부분 (RFC 8707 lenient) 반영 완료. Structured tool output · Client ID Metadata Documents 등 신규 기능은 별도 진행 |

**호환성 정책:** MCP 는 semantic versioning 이 아닌 dated revision 방식. `initialize` 시점 protocolVersion 협상으로 결정. Hub 은 client 가 요청한 낮은 버전에 맞춰 응답하고, 우리가 지원하는 최상위 버전 이상은 하향 협상. 상위 revision 신규 기능은 opt-in.

---

## 3. Base Protocol 준수

| 항목                           | 준수 | 비고                                                 |
| ------------------------------ | :--: | ---------------------------------------------------- |
| JSON-RPC 2.0 message format    |  ✅  | Request / Response / Notification 모두 지원          |
| Stateful connection            |  ✅  | HTTP session 유지 (Streamable HTTP)                  |
| Capability negotiation         |  ✅  | `initialize` 시 협상                                 |
| Server metadata (`serverInfo`) |  ✅  | name + version 응답                                  |
| Protocol version handshake     |  ✅  | `2024-11-05` 로 협상 (client 상위 버전 요청 시 하향) |

---

## 4. Server Features (우리가 client 에게 제공)

| Feature   | 지원 | 비고                                                                             |
| --------- | :--: | -------------------------------------------------------------------------------- |
| **Tools** |  ✅  | `tools/list`, `tools/call` 완전 지원. 각 툴킷의 스펙 (OpenAPI 등) 에서 자동 변환 |
| Resources |  ❌  | 미구현. 우리 사용 사례는 tool 중심 (사내 API 호출). Resource 도입 요청 시 검토   |
| Prompts   |  ❌  | 미구현. 프롬프트 관리는 client (WRKS AI) 측 몫으로 유지                          |

Tool 특징:

- `tools/list`: enable 상태 tool 만 노출 (Studio 에서 관리자가 on/off 가능)
- `tools/call`: 호출 시 커넥터를 통해 사내 API 호출, 결과를 `content` 로 반환
- `isError` 플래그로 도구 실패 명시
- Tool 스펙 (name / description / inputSchema) 은 OpenAPI · DB describe 등에서 자동 유도

---

## 5. Transport 지원

| Transport                | 지원 | 비고                                         |
| ------------------------ | :--: | -------------------------------------------- |
| **Streamable HTTP**      |  ✅  | 주 방식. `POST /mcp/<slug>` 로 JSON-RPC 교환 |
| stdio                    |  ❌  | SaaS 형태라 프로세스 기반 통신 불필요        |
| SSE (Server-Sent Events) |  ❌  | 2025-06 spec 에서 deprecated. 미지원         |

---

## 6. Authorization

MCP 2025-11-25 spec 이 요구하는 authorization 흐름을 완전 준수. 상세는 별도 문서 [OAuth 2.0 표준 준수 명세](/guides/oauth-standards-compliance) 참조.

주요 요약:

| 항목                                   |     준수     | 비고                                                                                                                     |
| -------------------------------------- | :----------: | ------------------------------------------------------------------------------------------------------------------------ |
| RFC 9728 Protected Resource Metadata   |      ✅      | `.well-known/oauth-protected-resource/mcp/<slug>`                                                                        |
| RFC 8414 Authorization Server Metadata |      ✅      | `.well-known/oauth-authorization-server/mcp/<slug>`                                                                      |
| RFC 7591 Dynamic Client Registration   |      ✅      | Backwards-compat 용도 (MCP 2025-11-25 는 신규 client 에게 Client ID Metadata Documents 를 권장하지만 DCR 은 그대로 유효) |
| RFC 7636 PKCE (S256)                   |      ✅      | 필수 강제. plain method 거부                                                                                             |
| RFC 6750 Bearer Token                  |      ✅      | `Authorization: Bearer <token>` + 401 시 `WWW-Authenticate` 헤더                                                         |
| **RFC 8707 Resource Indicators**       | ✅ (lenient) | MCP 2025-11-25 신규 필수 요구. 우리는 lenient 모드로 client 대응 유예                                                    |
| OAuth 2.1 draft 준수                   |   부분 ✅    | 대부분 요구사항 만족. 세부는 OAuth 문서 참조                                                                             |
| Client ID Metadata Documents           |      ❌      | MCP 2025-11-25 신규 권장. 로드맵에 있음                                                                                  |

---

## 7. Security & Trust (MCP spec §2)

MCP spec 이 명시한 4대 원칙 준수:

### 7-1. User Consent and Control ✅

- 관리자 (Studio) 가 각 toolkit·tool·endpoint 를 활성/비활성 통제
- 사용자별 OAuth 승인 (per-user) 시 각 사용자 브라우저에서 명시적 consent
- 모든 접근·변경 이력을 감사 목적 이력으로 기록

### 7-2. Data Privacy ✅

- 사용자 OAuth token 은 개별 encryption context (AEAD) 로 격리 저장
- 사내 API 응답 데이터는 Hub 에 캐시·저장하지 않음 — request-per-response 통과
- 사용자 개인정보는 최소 저장 (identifier 성 데이터 미저장)

### 7-3. Tool Safety ✅

- Studio 관리자만 tool 활성화 권한 (기본 비활성)
- 각 tool 은 명시적 spec (input schema) 필요
- Dispatch 실패 시 명확한 오류 전달 (`isError: true`)
- 사용자 (WRKS AI 사용자) 는 client 측 UI 에서 tool 호출 승인

### 7-4. LLM Sampling Controls

- N/A — 우리는 server 라 client 의 sampling 흐름에 개입하지 않음

---

## 8. Additional Utilities

MCP spec 은 여러 부가 유틸리티를 정의. 우리 지원 현황:

| Utility           |  지원   | 비고                                                                                |
| ----------------- | :-----: | ----------------------------------------------------------------------------------- |
| Error reporting   |   ✅    | JSON-RPC error 표준 응답                                                            |
| Configuration     | 부분 ✅ | Toolkit·endpoint 별 설정 (Studio UI). MCP capability negotiation 은 `initialize` 만 |
| Progress tracking |   ❌    | 요청 → 응답이 짧은 도구 위주. Long-running tool 지원 시 검토                        |
| Cancellation      |   ❌    | 상동                                                                                |

---

## 9. 우리만의 확장 (spec 준수 위에)

### 9-1. Endpoint-scoped MCP Server

각 MCP endpoint (`/mcp/<slug>`) 를 독립 MCP server 로 노출. Multi-tenant SaaS 특성상 endpoint 마다 다른 toolkit·auth·데이터 접근이므로.

### 9-2. Broker 아키텍처

Hub 자체는 사내 API 를 저장·처리하지 않고, 사내 커넥터 (별도 프로세스) 를 통해 위임. 데이터 residency + 감사 격리.

### 9-3. 관리자 화면 (Studio)

MCP spec 은 server 관리 UI 를 정의하지 않음. Studio 에서:

- Toolkit / endpoint / tool 통합 관리
- 실시간 호출 이력 · 오류 조회
- 사용자·팀 권한 관리
- 릴리즈 노트 알림

이 부분은 MCP spec 표준 밖의 부가 기능.

---

## 10. Roadmap (spec 대응)

| 항목                                         | 우선순위 | 예상 시기                 |
| -------------------------------------------- | :------: | ------------------------- |
| Client ID Metadata Documents (2025-11-25)    |    중    | 파트너 요청 시            |
| Structured tool output (2025-06+)            |    중    | 요청 시                   |
| MCP protocolVersion 응답 상향 (`2025-11-25`) |    저    | 하위 호환 확인 완료 후    |
| Resources feature                            |    낮    | 사용 사례 필요 시         |
| Prompts feature                              |    낮    | 상동                      |
| Progress tracking / Cancellation             |    낮    | Long-running tool 지원 시 |

---

## 11. 준수 검증 방법 (감사팀 자체 확인)

### 11-1. `initialize` 응답 검증

```bash
curl -X POST https://mcp-hub.wrks.ai/mcp/<slug> \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"audit","version":"1.0"}}}'
```

응답: `protocolVersion`, `capabilities.tools`, `serverInfo` 확인.

### 11-2. `tools/list` 응답 검증

```bash
curl -X POST https://mcp-hub.wrks.ai/mcp/<slug> \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
```

각 tool 이 `name`, `description`, `inputSchema` 를 포함하는지 확인.

### 11-3. WWW-Authenticate 헤더 검증

```bash
curl -i https://mcp-hub.wrks.ai/mcp/<slug>
```

401 응답 + `WWW-Authenticate: Bearer error="...", resource_metadata="..."` 헤더 확인.

### 11-4. Protected Resource Metadata

```bash
curl https://mcp-hub.wrks.ai/.well-known/oauth-protected-resource/mcp/<slug>
```

`resource`, `authorization_servers`, `bearer_methods_supported`, `scopes_supported` 필드 확인.

### 11-5. AS Metadata + PKCE 강제

```bash
curl https://mcp-hub.wrks.ai/.well-known/oauth-authorization-server/mcp/<slug>
```

`code_challenge_methods_supported: ["S256"]` 명시 확인.

---

## 12. 문의

- MCP spec 관련: [modelcontextprotocol.io](https://modelcontextprotocol.io/specification)
- WRKS Hub 구현 관련: WRKS 담당자
- OAuth 세부: [OAuth 2.0 표준 준수 명세](/guides/oauth-standards-compliance)
