AI Agents for Beginners - 11. Using Agentic Protocols (MCP, A2A and NLWeb)

MCP, A2A, and NLWeb — three agentic protocols for standardized tool access, agent-to-agent collaboration, and natural language interfaces on the web.
June 9, 2026

AI Agents for Beginners - 11. Using Agentic Protocols (MCP, A2A and NLWeb)

이 글은 Microsoft의 AI Agents for Beginners 강좌 Lesson 11을 기반으로 정리한 내용입니다.
AI Agent 사용이 증가하면서 표준화·보안·오픈 이노베이션을 지원하는 프로토콜의 필요성이 커지고 있습니다.
이 레슨에서는 세 가지 프로토콜을 다룹니다:
프로토콜역할
MCP (Model Context Protocol)AI Agent가 외부 도구·데이터에 표준화된 방식으로 접근
A2A (Agent-to-Agent)서로 다른 AI Agent 간 통신·협업 활성화
NLWeb (Natural Language Web)웹사이트에 자연어 인터페이스를 추가해 AI Agent가 콘텐츠 탐색·상호작용

Model Context Protocol

Model Context Protocol (MCP)은 애플리케이션이 LLM에게 컨텍스트와 도구를 표준화된 방식으로 제공하는 오픈 표준입니다.
다양한 데이터 소스와 도구에 일관되게 연결할 수 있는 "범용 어댑터" 역할을 합니다.

MCP Core Components

MCP는 클라이언트-서버 아키텍처로 동작하며 핵심 구성요소는 다음과 같습니다:
구성요소설명
HostsLLM 애플리케이션 (예: VSCode). MCP 서버에 연결을 시작
ClientsHost 애플리케이션 내 컴포넌트. 서버와 1
연결 유지
Servers특정 기능을 노출하는 경량 프로그램
MCP Server의 세 가지 핵심 프리미티브:
프리미티브설명
Tools에이전트가 호출할 수 있는 이산적 액션·함수 (예: "get weather", "purchase product"). 이름·설명·스키마 광고
ResourcesMCP 서버가 제공하는 읽기 전용 데이터 (파일 내용, DB 레코드, 로그). 텍스트 또는 바이너리
Prompts더 복잡한 워크플로우를 위한 사전 정의 프롬프트 템플릿
MCP Client-Server Architecture
Mermaid
%%{init: {'look': 'default'}}%% flowchart LR subgraph Host["Host Application"] direction TB LLM["LLM"] Client["MCP Client"] LLM <--> Client end subgraph Server["MCP Server"] direction TB Tools["Tools\n(Actions)"] Resources["Resources\n(Data)"] Prompts["Prompts\n(Templates)"] end Client -->|"discover capabilities"| Server Server -->|"tool list + schemas"| Client Client -->|"call_tool(name, params)"| Server Server -->|"tool result"| Client

Benefits of MCP

장점설명
Dynamic Tool Discovery에이전트가 서버에서 사용 가능한 도구 목록을 동적으로 수신. 전통적 API처럼 정적 코딩 불필요 — "한 번 통합" 접근법
Interoperability Across LLMs다양한 LLM에서 동작해 더 나은 성능의 모델로 유연하게 전환 가능
Standardized Security표준 인증 방법 포함 — 다양한 MCP 서버 추가 시 다른 키·인증 방식 관리 불필요

MCP Example

사용자가 MCP 기반 AI 어시스턴트로 항공편을 예약하는 시나리오:
  1. Connection: AI 어시스턴트(MCP 클라이언트)가 항공사가 제공하는 MCP 서버에 연결합니다.
  2. Tool Discovery: 클라이언트가 항공사 MCP 서버에 "어떤 도구가 있나요?"라고 묻습니다. 서버는 search_flights, book_flights 같은 도구 목록을 응답합니다.
  3. Tool Invocation: "Portland에서 Honolulu로 가는 항공편을 검색해줘"라고 요청하면, AI 어시스턴트는 LLM을 사용해 search_flights 도구를 호출해야 한다고 판단하고 관련 파라미터(출발지·목적지)를 MCP 서버에 전달합니다.
  4. Execution and Response: MCP 서버는 래퍼 역할을 하여 항공사 내부 예약 API를 실제로 호출합니다. 항공편 정보(JSON 데이터)를 받아 AI 어시스턴트에 반환합니다.
  5. Further Interaction: AI 어시스턴트가 항공편 옵션을 제시합니다. 항공편을 선택하면 어시스턴트는 동일한 MCP 서버의 book_flight 도구를 호출해 예약을 완료합니다.
MCP Example: Flight Booking
Mermaid
%%{init: {'look': 'default'}}%% flowchart LR User(["User"]) Agent["AI\nAgent"] MCP["MCP\nServer"] API["Booking\nAPI"] User -->|"③ search_flights 요청"| Agent Agent -->|"① Connection"| MCP Agent <-->|"② Tool Discovery\nsearch_flights, book_flights"| MCP MCP -->|"④ Execution\n내부 API 호출"| API API -->|"④ Response\n항공편 JSON"| MCP MCP -->|"④ Returns\nFlight Options"| Agent Agent -->|"④ Shows\nFlight Options"| User User -->|"⑤ Selects Flight\n→ book_flight 호출"| Agent

Code: MCP-Style Tool Discovery

프로덕션에서는 MCP 서버에서 동적으로 tool을 discover합니다. 아래 예시는 MCP 연결 숙박 서비스를 시뮬레이션합니다:
setup.py
python
mcp_tools.py
python
mcp_agent.py
python
MCP Agent: Tool Discovery Flow
Mermaid
flowchart LR User["User Query\n'Tokyo 5 nights, culture & food'"] --> Agent["AccommodationAgent\n(MCP Client)"] Agent -->|"discover tools"| MCP["MCP Server\n(Simulated)"] MCP -->|"tool list + schemas"| Agent Agent --> T1["search_accommodations\n(Tokyo, April, 2 guests)"] Agent --> T2["get_local_experiences\n(Tokyo, culture + food)"] T1 & T2 --> LLM["LLM\n결과 종합·비교"] LLM --> Response["개인화된 숙박·경험 추천"] Response --> User

Agent-to-Agent Protocol (A2A)

MCP가 LLM을 도구에 연결하는 데 집중한다면, Agent-to-Agent (A2A) 프로토콜은 서로 다른 AI Agent 간 통신·협업을 가능하게 합니다.
A2A는 서로 다른 조직·환경·기술 스택의 에이전트를 연결해 공동 태스크를 완수합니다.

A2A Core Components

구성요소역할
Agent Card에이전트의 이름·설명·스킬 목록·엔드포인트 URL·버전·기능을 광고. 다른 에이전트가 언제·왜 호출할지 판단
Agent Executor원격 에이전트에게 사용자 채팅 컨텍스트를 전달. 원격 에이전트는 자체 LLM으로 요청을 파싱하고 내부 도구로 실행
Artifact원격 에이전트가 태스크를 완료한 후 생성되는 결과물. 작업 결과·설명·텍스트 컨텍스트 포함. 전송 후 연결 종료
Event Queue업데이트 처리·메시지 전달. 태스크 완료 전 연결이 끊기지 않도록 보장. 장시간 태스크에 특히 중요
A2A Core Components
Mermaid
flowchart TD Orch["Orchestrator Agent\n(Travel Agent)"] Orch -->|"Agent Card 조회"| Registry["Agent Card Registry\n이름·스킬·엔드포인트"] Registry -->|"발견된 에이전트 목록"| Orch Orch -->|"컨텍스트 전달"| AE["Agent Executor\n원격 에이전트 실행"] AE -->|"태스크 완료"| Art["Artifact\n결과물·설명·텍스트"] Art --> Orch AE <-->|"진행 상황 업데이트"| EQ["Event Queue\n연결 유지·메시지 전달"]

Benefits of A2A

장점설명
Enhanced Collaboration서로 다른 벤더·플랫폼의 에이전트가 상호작용·컨텍스트 공유·협력 가능
Model Selection Flexibility각 A2A 에이전트가 자체 LLM을 선택 — 에이전트별로 최적화·파인튜닝된 모델 사용 가능
Built-in AuthenticationA2A 프로토콜에 인증이 직접 통합되어 에이전트 상호작용에 견고한 보안 프레임워크 제공

A2A Example

여행 예약 시나리오를 A2A로 확장한 5단계:
A2A Example: Full Trip Booking
Mermaid
flowchart TD User["User\n'Honolulu 왕복 항공+호텔+렌터카 예약'"] --> TA["Travel Agent\n(A2A Orchestrator)\nLLM으로 태스크 분석"] TA -->|"A2A Protocol"| AA["Airline Agent\n(다른 회사)\n항공편 검색·예약"] TA -->|"A2A Protocol"| HA["Hotel Agent\n(다른 회사)\n호텔 예약"] TA -->|"A2A Protocol"| CA["Car Rental Agent\n(다른 회사)\n렌터카 예약"] AA & HA & CA -->|"Artifact 반환"| TA TA -->|"결과 취합"| Response["종합 여행 확인서\n항공·호텔·렌터카 통합"] Response --> User

Code: A2A Multi-Agent Workflow

세 전문 에이전트를 A2A 메시지 패싱 방식으로 순차 연결합니다:
a2a_agents.py
python
a2a_workflow.py
python
A2A Workflow: 3-Agent Pipeline
Mermaid
flowchart LR User["User\n'Tokyo 1주일 여행\n음식·사원·기술 관심'"] --> CE["CurrencyExchangeAgent\n환율·환전 가이드\n최적 환전 시기·팁"] CE -->|"context 전달"| AP["ActivityPlannerAgent\n관광지·숙소·식당 추천\n여행자 관심사 반영"] AP -->|"context 전달"| TM["TravelManagerAgent\n전체 여행 플랜 종합\n체계적 여행 브리프 생성"] TM --> Response["최종 여행 계획\n환율+액티비티+종합 브리프"] Response --> User
A2A 프로덕션 환경에서의 핵심 기능:
기능설명
Cross-framework interop서로 다른 프레임워크로 만든 에이전트가 A2A 준수 에이전트에 태스크 위임
Service boundaries에이전트가 별도 마이크로서비스, 클라우드 리전, 다른 조직에 위치하면서 협력
Dynamic discovery오케스트레이터가 런타임에 Agent Card 레지스트리에서 최적 전문 에이전트 발견
Streaming & push notificationsSSE(Server-Sent Events)로 실시간 진행 업데이트, 장시간 태스크에 push 알림

Natural Language Web (NLWeb)

웹사이트는 오랫동안 사용자가 인터넷 정보에 접근하는 주요 방법이었습니다.
NLWeb은 모든 웹사이트에 자연어 인터페이스를 추가해 AI Agent가 콘텐츠를 탐색·상호작용할 수 있게 합니다.

Components of NLWeb

구성요소역할
NLWeb Application자연어 질문을 처리하는 핵심 서비스. 플랫폼의 다양한 부분을 연결해 응답 생성 — 자연어 기능의 "엔진"
NLWeb Protocol웹사이트와의 자연어 상호작용을 위한 기본 규칙 세트. JSON 형식(Schema.org 활용) 응답. HTML이 문서 공유를 가능하게 했듯이 "AI Web"의 기반
MCP Server각 NLWeb 설정은 MCP 서버로도 동작. ask 메서드 같은 도구와 데이터를 다른 AI 시스템과 공유 — 웹사이트가 "에이전트 생태계"의 일부가 됨
Embedding Models웹사이트 콘텐츠를 벡터(수치 표현)로 변환. 의미를 컴퓨터가 비교·검색할 수 있는 형태로 저장
Vector Database웹사이트 콘텐츠의 임베딩 저장. 질문 입력 시 관련 정보를 신속히 검색. Qdrant·Snowflake·Milvus·Azure AI Search·Elasticsearch 지원
NLWeb Architecture
Mermaid
flowchart TD Content["웹사이트 콘텐츠\n(Schema.org / RSS 피드)"] --> Ingest["NLWeb Application\n데이터 수집·처리"] --> Embed["Embedding Model\n콘텐츠 → 벡터 변환"] --> VDB["Vector Database\n(Qdrant / Azure AI Search 등)"] Query["자연어 쿼리\n(사용자 또는 AI Agent)"] --> NLP["LLM\n쿼리 이해·해석"] --> Search["Vector Search\n관련 임베딩 검색"] Search --> VDB VDB -->|"유사 결과 반환"| NLP NLP --> Response["자연어 응답\n(실제 DB 데이터 기반)"] NLWeb_MCP["NLWeb as MCP Server\n'ask' 메서드"] -->|"AI Agent 호출"| Search

NLWeb by Example

NLWeb이 적용된 여행 예약 웹사이트 시나리오:
  1. Data Ingestion: 여행 웹사이트의 기존 상품 카탈로그(항공편 목록, 호텔 설명, 투어 패키지 등)를 Schema.org 형식으로 포맷하거나 RSS 피드로 로드합니다. NLWeb 도구가 이 구조화된 데이터를 임베딩으로 변환해 로컬 또는 원격 벡터 데이터베이스에 저장합니다.
  2. Natural Language Query: 사용자가 웹사이트를 방문해 메뉴를 탐색하는 대신, 채팅 인터페이스에 입력합니다: "다음 주 호놀룰루에서 수영장 있는 가족 친화적 호텔을 찾아줘."
  3. NLWeb Processing: NLWeb 애플리케이션이 쿼리를 수신합니다. LLM에 쿼리를 전송해 의미를 이해하는 동시에 벡터 데이터베이스에서 관련 호텔 목록을 검색합니다.
  4. Accurate Results: LLM이 데이터베이스 검색 결과를 해석하고 "가족 친화적", "수영장", "호놀룰루" 기준으로 최적 매칭을 찾아 자연어 응답을 생성합니다. 웹사이트 실제 카탈로그의 호텔을 참조하므로 허구 정보가 없습니다.
  5. AI Agent Interaction: NLWeb이 MCP 서버로도 동작하므로, 외부 AI 여행 에이전트가 이 웹사이트의 NLWeb 인스턴스에 연결할 수 있습니다. ask MCP 메서드로 직접 쿼리합니다: ask("호텔이 추천하는 호놀룰루 지역 비건 레스토랑이 있나요?") → NLWeb이 처리해 구조화된 JSON 응답을 반환합니다.
여행 예약 웹사이트에 NLWeb을 적용한 5단계:
NLWeb Example: Travel Booking Site
Mermaid
flowchart TD S1["1. Data Ingestion\n항공·호텔·투어 패키지를\nSchema.org/RSS로 포맷\n임베딩 생성 → Vector DB 저장"] --> S2["2. Natural Language Query\n사용자: '수영장 있는 하와이 가족 친화 호텔'\n메뉴 탐색 없이 채팅 입력"] --> S3["3. NLWeb Processing\nLLM: 쿼리 이해\nVector DB: 관련 호텔 검색"] --> S4["4. Accurate Results\nLLM이 결과 해석·최적 매칭 선택\n실제 카탈로그 기반 응답\n(가짜 정보 없음)"] --> S5["5. AI Agent Interaction\nMCP 'ask' 메서드로 외부 AI Agent 연결\nask('하와이 비건 레스토랑?')\n→ 구조화된 JSON 응답"]

Summary

Lesson 11 Summary: Three Agentic Protocols
Mermaid
flowchart LR Root["Agentic\nProtocols"] Root --> MCP["MCP\nModel Context Protocol"] Root --> A2A["A2A\nAgent-to-Agent"] Root --> NLW["NLWeb\nNatural Language Web"] MCP --> M1["표준화된 도구 접근"] MCP --> M2["Dynamic Discovery"] MCP --> M3["Tools · Resources · Prompts"] A2A --> A1["에이전트 간 협업"] A2A --> A2["Agent Card · Artifact"] A2A --> A3["Cross-framework Interop"] NLW --> N1["웹사이트 + 자연어 인터페이스"] NLW --> N2["Vector DB 기반 검색"] NLW --> N3["MCP Server로도 동작"]
  • MCP는 AI Agent가 외부 도구·데이터에 표준화된 방식으로 접근하게 하는 "범용 어댑터"로, 에이전트 코드 수정 없이 새 기능을 동적으로 discover할 수 있습니다
  • A2A는 서로 다른 조직·프레임워크의 에이전트가 Agent Card를 통해 서로를 발견하고 협력해 복잡한 태스크를 완수할 수 있게 합니다
  • NLWeb은 웹사이트에 자연어 인터페이스를 추가하고 MCP 서버로도 동작해 외부 AI Agent가 웹 콘텐츠를 ask 메서드로 직접 쿼리할 수 있습니다
  • 세 프로토콜은 상호 보완적입니다: MCP는 도구 연결, A2A는 에이전트 간 협력, NLWeb은 웹 생태계와 AI Agent 연결
Jooojub
System S/W engineer
Explore Tags
Series
    Recent Post
    © 2026. jooojub. All right reserved.