모델 컨텍스트 프로토콜 · rmcp 2.2

에이전트를 시스템에 연결 일이 일어나는 곳.

MCP를 사용하면 다른 프로그램에서 표준 계약을 통해 도구, 정보 및 재사용 가능한 프롬프트를 게시할 수 있습니다. ADK-Rust는 이러한 기능을 유형화된 에이전트 도구로 전환하고, 더 넓은 프로토콜을 노출하며, 제품이 실행되는 동안 변화하는 로컬 MCP 서버를 관리할 수 있습니다.

도구자원프롬프트완료구독유도작업StdioStreamable HTTP

ADK-Rust MCP 아키텍처

에이전트에서 MCP 기능을 추가하거나 제거합니다.

에이전트는 다른 ADK-Rust 도구와 마찬가지로 MCP 기능을 사용합니다. MCP는 이를 각 서버에 연결하며, 모든 서버는 자체 데이터, 규칙 및 작업에 대한 책임을 집니다.

01

에이전트 제품

일을 구하는 경험.

에이전트 또는 워크플로

볼 수 있도록 허용된 도구에서 기능을 선택합니다.

ADK 정책

통화에 대한 승인, 권한 부여, 가드레일 및 감사를 적용합니다.

Toolset
02

ADK-Rust MCP 클라이언트

런타임 내부의 형식화된 어댑터입니다.

McpToolset

도구를 검색하고 서버의 스키마와 결과 콘텐츠를 보존합니다.

프로토콜 API

리소스, 프롬프트, 완료, 구독, 유도 및 작업.

서버 관리자

로컬 stdio 연결의 레지스트리를 변경하고 감독합니다.

MCP
03

연결 경계

소유권과 일치하는 운송 수단을 선택하십시오.

로컬 stdio

ADK-Rust는 기본 바이너리 또는 기타 하위 프로세스를 시작하고 해당 세션을 소유합니다.

Streamable HTTP

헤더, 인증 및 시간 제한을 사용하여 독립적으로 호스팅되는 서비스에 연결하세요.

계약
04

MCP 서버

각 서버는 자신이 소유한 것만 게시합니다.

도구

작업

자원

맥락

프롬프트

템플릿

작업

장시간의 작업

각 서버는 자체 자격 증명, 데이터 액세스, 부작용 및 서비스 상태에 대한 책임을 집니다.

비즈니스 데이터

CRM, ERP, 주문, 문서, 분석 및 내부 지식.

개발자 시스템

소스 제어, 빌드 도구, 브라우저, 샌드박스 및 코딩 환경.

외부 서비스

결제, 통신, 검색, 지도 및 파트너 API.

전문가 런타임

미디어 생성, 스프레드시트, 컴퓨터 사용 및 도메인별 서비스.

`McpToolset`은 하나의 연결을 관리합니다. `McpServerManager`는 변화하는 로컬 연결 집합을 관리합니다. 공식 `rmcp` SDK는 사용자 정의 서버, 전송, 처리기 및 프로토콜 확장에 계속 사용할 수 있습니다.

문제부터 시작하세요

MCP가 필요한 이유는 무엇입니까?

AI 에이전트는 실제 정보를 보유하고 실제 작업을 수행하는 시스템에 접근할 수 있을 때 유용해집니다. 공유 프로토콜이 없으면 모든 데이터베이스, SaaS 제품, 브라우저 도구, 내부 서비스 및 전문가 런타임에는 맞춤형 어댑터가 필요합니다. 이러한 어댑터는 검색, 스키마, 전송, 오류, 인증 및 수명 주기 코드를 반복합니다.

MCP는 해당 경계 주위에 안정적인 계약을 체결합니다. 서버는 자신이 제공하는 내용과 호출 방법을 설명합니다. 클라이언트는 런타임 시 해당 카탈로그를 검색합니다. 그러면 에이전트 애플리케이션은 서버 구현을 가져오거나 개인 자격 증명을 받지 않고도 검토된 기능을 선택할 수 있습니다.

ADK-Rust는 해당 계약을 기본 Rust 도구에서 사용하는 동일한 도구 및 Toolset 추상화에 연결합니다. 모델은 일반 에이전트 루프를 통해 MCP 기능과 함께 작동할 수 있으며, 애플리케이션은 호출과 관련된 공급자별 스키마 변환, 승인, 세션, 원격 측정 및 운영 정책을 유지합니다.

도구

에이전트가 서버에 요청할 수 있는 작업

도구에는 이름, 유용한 설명, 입력 스키마 및 선택적으로 출력 스키마가 있습니다. 예를 들면 주문 읽기, 저장소 검색, 티켓 업데이트, 스프레드시트 생성 등이 있습니다.

자원

에이전트 또는 제품이 읽을 수 있는 컨텍스트

리소스는 정보에 안정적인 URI를 제공합니다. 데이터를 읽는 것이 작업인 것처럼 가장하지 않고 문서, 정책, 데이터베이스 기록, 카탈로그 또는 생성된 결과를 나타낼 수 있습니다.

프롬프트

서버에서 게시한 재사용 가능한 메시지 템플릿

프롬프트는 주문 조사 또는 배포 검토와 같이 서버 도메인이 소유한 작업에 대한 올바른 지침과 입력을 캡처할 수 있습니다.

유도

누락된 사람의 입력 요청

도구 호출 중에 서버는 클라이언트에게 양식을 제시하거나 승인된 URL을 열도록 요청할 수 있습니다. 애플리케이션은 동의 및 답변 확인에 대한 책임을 집니다.

Dynamic MCP management

Capabilities can change while the product keeps running.

An agent product may serve several tenants, workspaces, or operating modes. The useful MCP servers can change when a workspace opens, an administrator enables an integration, a credential rotates, or a specialist process is upgraded.

`McpServerManager` keeps that lifecycle in the application instead of forcing every server definition into startup code. It is designed for local stdio child processes; independently hosted HTTP services remain application-owned connections.

01

Load the registry

Read mcp.json-compatible definitions or construct them in Rust. Disabled servers stay registered without starting.

02

Start and negotiate

Spawn each enabled child and complete the MCP handshake before its capabilities become visible.

03

Discover safely

List tools from running servers, filter the published surface, and prefix only names that collide.

04

Change it live

Add, update, enable, disable, or remove a server without rebuilding the agent application.

05

Supervise the session

Detect a closed connection and apply the server's bounded exponential-backoff restart policy.

06

Save and close

Persist the current registry atomically, cancel MCP sessions, wait for the grace period, and drop child transports.

Practical sequence

Resolve a damaged order with three independently owned capabilities.

The model does not receive database credentials or private API clients. It receives a reviewed catalog of tools and resources. ADK-Rust keeps approval around the consequential replacement call.

Support agent01Discover approved CRM, order, and policy toolsMCP client
MCP client02tools/list over the negotiated connectionsThree MCP servers
Support agent03read_order { order_id: ORD-1042 }Orders server
Orders server04Structured order and delivery evidenceSupport agent
Support agent05Read the current damaged-goods policy resourcePolicy server
Support agent06request_replacement after ADK approvalCRM server
CRM server07Replacement ID, status, and audit evidenceSupport agent

현재 프로토콜 표면

ADK-Rust는 도구 호출뿐만 아니라 더 넓은 MCP 프로토콜을 사용합니다.

직접 ADK-Rust API는 도구 검색 및 호출, 리소스 읽기, 프롬프트 해결, 인수 제안 요청, 변경 리소스 구독, 추출 요청 응답, 협상된 장기 실행 도구 작업 따르기 등 에이전트 제품에 가장 자주 필요한 기능을 다룹니다.

고급 서버 작성, 사용자 정의 클라이언트 처리기, 알림, 전송, 인증 작업 및 프로토콜 확장을 위해 adk_tool::mcp::rmcp는 프레임워크 내부에서 사용되는 정확한 공식 SDK 버전을 다시 내보냅니다. 이렇게 하면 하나의 애플리케이션에서 호환되지 않는 프로토콜 유형이 혼합되는 것을 방지할 수 있습니다.

01

상담원 측 어댑터

일반 ADK-Rust 에이전트 및 도구 흐름 내에서 MCP 기능을 사용하세요.

도구/목록 + 도구/호출
원시 입력/출력 스키마
텍스트, 이미지, 오디오, 리소스
도구 필터
공급자 정규화
02

상황 및 지침

MCP를 도구 호출로 축소하는 대신 카탈로그의 나머지 부분을 읽으십시오.

리소스 + 템플릿
프롬프트/목록 + 가져오기
신속한 완료
자원 완성
리소스 구독
03

인터랙티브하고 긴 작업

하나의 즉각적인 응답 이상으로 계속되는 프로토콜 대화를 지원합니다.

양식 도출
URL 추출
협상된 도구 작업
작업/가져오기 + 결과
제한된 취소
04

연결

로컬 프로세스 소유권 또는 별도로 호스팅되는 서비스를 선택하세요.

로컬 stdio
Streamable HTTP
맞춤 헤더
베어러 + API 키
만료된 세션 복구
의도적인 호환성 경계: MCP 샘플링, 루트 및 로깅은 SEP-2577을 통해 업스트림에서 더 이상 사용되지 않습니다. ADK-Rust는 옵트인 호환성 기능을 통해 샘플링을 계속합니다. 이는 새 제품에 권장되는 아키텍처로 제시되지 않습니다.

실제 사례

MCP 서버를 시작부터 종료까지 관리합니다.

애플리케이션에는 각 작업 공간, 고객 또는 작업에 대해 서로 다른 MCP 기능이 필요할 수 있습니다. 시작 시 모든 서버를 하드 코딩하면 이러한 변경이 어려워집니다. McpServerManager는 애플리케이션에 로컬 MCP 서버를 시작하고, 도구를 결합하고, 구성을 변경하고, 연결을 모니터링하고, 완전히 닫을 수 있는 한 장소를 제공합니다.

이 예는 local-tools라는 하나의 구성된 서버로 시작됩니다. 에이전트는 해당 에코 도구를 검색하고 호출할 수 있습니다. 그런 다음 애플리케이션은 두 번째 서버를 추가하고 이를 활성화하고 실행 중인 구성을 대체하고 업데이트된 레지스트리를 저장한 후 다시 제거합니다. 모든 변경에는 관리 화면이나 구성 서비스에 사용할 수 있는 동일한 API가 사용됩니다.

이 예제는 전적으로 귀하의 컴퓨터에서 실행됩니다. Rust 실행 파일은 MCP 하위 서버로 자체 복사본을 시작하므로 핸드셰이크, 도구 검색, 도구 호출, 다시 시작, 지속성 및 종료가 실제입니다. 모델 없음, Node.js 패키지, API 키 또는 인터넷 연결이 필요하지 않습니다.

01

하나의 서버 시작

mcp.json 호환 구성에서 local-tools를 로드하고, 하위 프로세스를 시작하고, MCP 핸드셰이크를 완료하고, 해당 에코 도구를 검색하세요.

02

다른 서버 추가

대기 도구를 비활성화된 것으로 등록한 다음 응용 프로그램에서 해당 기능을 사용할 수 있다고 결정하면 활성화하고 시작합니다.

03

안전하게 교체하세요

실행 중인 서버 정의를 업데이트합니다. 관리자는 새 구성으로 이를 다시 시작하고 교체 시작이 실패할 경우 이전 정의를 복원할 수 있습니다.

04

저장 및 종료

라이브 레지스트리를 JSON에 다시 작성하고 추가 서버를 비활성화 및 제거한 다음 모든 MCP 세션과 하위 프로세스를 완전히 닫습니다.

manager.rs
let manager = McpServerManager::from_json(&config)?
      .with_health_check_interval(Duration::from_secs(15));

  manager.start_server("local-tools").await?;
  manager.start_monitoring();

  manager
      .add_server("standby-tools".into(), standby)
      .await?;
  manager.enable_server("standby-tools").await?;
  manager.start_server("standby-tools").await?;

  manager
      .update_server("standby-tools", replacement)
      .await?;
  manager.save_json_file("mcp.json").await?;
  manager.shutdown().await?;
terminal실제 출력
$ cargo run --manifest-path     examples/mcp_manager/Cargo.toml

  1. Loaded local-tools from mcp.json-compatible configuration
     status: Running
  2. Discovered 1 tool: echo
  3. Called the real child server
     response: {"output":"MCP server replied: dynamic MCP is running"}
  4. Added standby-tools at runtime: Disabled
     enabled and started: Running
  5. Reconfigured the running server and restarted it safely
  6. Saved the live registry
  7. Disabled, removed, and shut down every child server

클라이언트, 관리자 또는 서버

필요한 ADK-Rust MCP 기능을 선택하세요.

대부분의 에이전트 애플리케이션은 MCP 클라이언트입니다. 기존 서버에 연결하여 에이전트가 선택한 도구를 사용할 수 있도록 합니다. 작업 공간 또는 관리자 통합을 허용하는 제품은 관리자 뒤에 로컬 stdio 연결을 배치할 수 있습니다. 새로운 기능을 게시하는 팀은 다시 내보낸 rmcp 서버 API를 사용한 다음 ADK-Rust 클라이언트에서 서버를 테스트합니다.

Your situation
Use
Why
One known MCP service
McpToolset
One initialized connection, filters, tools, resources, prompts, completion, subscriptions, elicitation, and tasks.
A changing set of local integrations
McpServerManager
Runtime add, update, enable, disable, remove, save, monitor, restart, aggregation, and collision-safe names.
A separately hosted MCP service
McpHttpClientBuilder
Streamable HTTP with request timeout, headers, bearer or API-key injection, and expired-session recovery.
You own the capability being published
adk_tool::mcp::rmcp
Build the MCP server with the official SDK version already aligned with ADK-Rust.

생산 디자인

MCP를 안전하게 배포하세요.

MCP는 검색과 통신의 일관성을 유지합니다. 에이전트가 연결해야 하는 시스템, 승인이 필요한 작업, 자격 증명이 발급되는 방법 또는 종속성이 실패할 때 발생해야 하는 작업은 결정하지 않습니다. 이는 제품 및 플랫폼 결정으로 남아 있습니다.

서버 경계를 선택하세요

한 팀이나 시스템이 소유한 일관된 기능을 중심으로 서버를 만듭니다. 관련 없는 자격 증명과 위험 수준을 포괄하는 도구를 사용하는 하나의 거대한 서버를 피하십시오.

작은 표면 게시

모델이 보기 전에 도구를 필터링합니다. 읽기 작업을 쓰기, 결제, 삭제, 배포 및 기타 결과적인 작업과 구분하세요.

ADK-Rust에서 승인 유지

mcp.json autoApprove는 호환성을 위해 유지됩니다. 프레임워크의 인증, 확인 처리기 또는 애플리케이션 정책을 우회하지 않습니다.

운송과 소유권을 일치시키세요

애플리케이션이 로컬 하위 프로세스를 소유하는 경우 stdio를 사용하십시오. 다른 배포가 가용성, ID 및 확장성을 소유한 경우 Streamable HTTP를 사용하세요.

콘텐츠를 신뢰할 수 없는 것으로 취급

도구 설명, 스키마, 리소스 콘텐츠 및 결과는 시스템 경계를 넘습니다. 인수, 바인딩된 결과 크기를 검증하고 적대적인 명령으로부터 모델 컨텍스트를 보호합니다.

종속성 작동

연결 및 작업 시간 초과를 설정하고, 수명 주기 변경 사항을 기록하고, 비즈니스 종속성을 별도로 조사하고, 한 서버를 사용할 수 없을 때 제품이 작동하는 방식을 결정합니다.

인증 세부정보: HTTP 빌더는 베어러 토큰, 사용자 정의 API 키 헤더 및 고정 OAuth 2.0 클라이언트 자격 증명 토큰 엔드포인트를 지원합니다. 전체 MCP 인증 검색, 브라우저 인증, PKCE 및 리소스 표시기 협상에서는 공식 rmcp 인증 API 또는 ID 레이어를 사용해야 합니다.

유용한 시스템을 연결하세요

하나의 에이전트에 신중하게 선택한 기능을 부여한 다음 네트워크를 확장하세요.

이해하고 있는 서버로 시작하여 해당 카탈로그를 필터링하고 하나의 읽기 전용 도구를 호출하고 전체 결과를 검사하십시오. 제품에 각 항목에 대한 명확한 이유가 있는 경우 쓰기 작업, 동적 관리, 원격 서비스, 유도 및 장기 실행 작업을 추가하세요.