비즈니스 데이터
CRM, ERP, 주문, 문서, 분석 및 내부 지식.
MCP를 사용하면 다른 프로그램에서 표준 계약을 통해 도구, 정보 및 재사용 가능한 프롬프트를 게시할 수 있습니다. ADK-Rust는 이러한 기능을 유형화된 에이전트 도구로 전환하고, 더 넓은 프로토콜을 노출하며, 제품이 실행되는 동안 변화하는 로컬 MCP 서버를 관리할 수 있습니다.
ADK-Rust MCP 아키텍처
에이전트는 다른 ADK-Rust 도구와 마찬가지로 MCP 기능을 사용합니다. MCP는 이를 각 서버에 연결하며, 모든 서버는 자체 데이터, 규칙 및 작업에 대한 책임을 집니다.
일을 구하는 경험.
에이전트 또는 워크플로
볼 수 있도록 허용된 도구에서 기능을 선택합니다.
ADK 정책
통화에 대한 승인, 권한 부여, 가드레일 및 감사를 적용합니다.
런타임 내부의 형식화된 어댑터입니다.
McpToolset
도구를 검색하고 서버의 스키마와 결과 콘텐츠를 보존합니다.
프로토콜 API
리소스, 프롬프트, 완료, 구독, 유도 및 작업.
서버 관리자
로컬 stdio 연결의 레지스트리를 변경하고 감독합니다.
소유권과 일치하는 운송 수단을 선택하십시오.
로컬 stdio
ADK-Rust는 기본 바이너리 또는 기타 하위 프로세스를 시작하고 해당 세션을 소유합니다.
Streamable HTTP
헤더, 인증 및 시간 제한을 사용하여 독립적으로 호스팅되는 서비스에 연결하세요.
각 서버는 자신이 소유한 것만 게시합니다.
도구
작업
자원
맥락
프롬프트
템플릿
작업
장시간의 작업
CRM, ERP, 주문, 문서, 분석 및 내부 지식.
소스 제어, 빌드 도구, 브라우저, 샌드박스 및 코딩 환경.
결제, 통신, 검색, 지도 및 파트너 API.
미디어 생성, 스프레드시트, 컴퓨터 사용 및 도메인별 서비스.
문제부터 시작하세요
AI 에이전트는 실제 정보를 보유하고 실제 작업을 수행하는 시스템에 접근할 수 있을 때 유용해집니다. 공유 프로토콜이 없으면 모든 데이터베이스, SaaS 제품, 브라우저 도구, 내부 서비스 및 전문가 런타임에는 맞춤형 어댑터가 필요합니다. 이러한 어댑터는 검색, 스키마, 전송, 오류, 인증 및 수명 주기 코드를 반복합니다.
MCP는 해당 경계 주위에 안정적인 계약을 체결합니다. 서버는 자신이 제공하는 내용과 호출 방법을 설명합니다. 클라이언트는 런타임 시 해당 카탈로그를 검색합니다. 그러면 에이전트 애플리케이션은 서버 구현을 가져오거나 개인 자격 증명을 받지 않고도 검토된 기능을 선택할 수 있습니다.
ADK-Rust는 해당 계약을 기본 Rust 도구에서 사용하는 동일한 도구 및 Toolset 추상화에 연결합니다. 모델은 일반 에이전트 루프를 통해 MCP 기능과 함께 작동할 수 있으며, 애플리케이션은 호출과 관련된 공급자별 스키마 변환, 승인, 세션, 원격 측정 및 운영 정책을 유지합니다.
도구
도구에는 이름, 유용한 설명, 입력 스키마 및 선택적으로 출력 스키마가 있습니다. 예를 들면 주문 읽기, 저장소 검색, 티켓 업데이트, 스프레드시트 생성 등이 있습니다.
자원
리소스는 정보에 안정적인 URI를 제공합니다. 데이터를 읽는 것이 작업인 것처럼 가장하지 않고 문서, 정책, 데이터베이스 기록, 카탈로그 또는 생성된 결과를 나타낼 수 있습니다.
프롬프트
프롬프트는 주문 조사 또는 배포 검토와 같이 서버 도메인이 소유한 작업에 대한 올바른 지침과 입력을 캡처할 수 있습니다.
유도
도구 호출 중에 서버는 클라이언트에게 양식을 제시하거나 승인된 URL을 열도록 요청할 수 있습니다. 애플리케이션은 동의 및 답변 확인에 대한 책임을 집니다.
Dynamic MCP management
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.
Read mcp.json-compatible definitions or construct them in Rust. Disabled servers stay registered without starting.
Spawn each enabled child and complete the MCP handshake before its capabilities become visible.
List tools from running servers, filter the published surface, and prefix only names that collide.
Add, update, enable, disable, or remove a server without rebuilding the agent application.
Detect a closed connection and apply the server's bounded exponential-backoff restart policy.
Persist the current registry atomically, cancel MCP sessions, wait for the grace period, and drop child transports.
Practical sequence
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.
현재 프로토콜 표면
직접 ADK-Rust API는 도구 검색 및 호출, 리소스 읽기, 프롬프트 해결, 인수 제안 요청, 변경 리소스 구독, 추출 요청 응답, 협상된 장기 실행 도구 작업 따르기 등 에이전트 제품에 가장 자주 필요한 기능을 다룹니다.
고급 서버 작성, 사용자 정의 클라이언트 처리기, 알림, 전송, 인증 작업 및 프로토콜 확장을 위해 adk_tool::mcp::rmcp는 프레임워크 내부에서 사용되는 정확한 공식 SDK 버전을 다시 내보냅니다. 이렇게 하면 하나의 애플리케이션에서 호환되지 않는 프로토콜 유형이 혼합되는 것을 방지할 수 있습니다.
일반 ADK-Rust 에이전트 및 도구 흐름 내에서 MCP 기능을 사용하세요.
MCP를 도구 호출로 축소하는 대신 카탈로그의 나머지 부분을 읽으십시오.
하나의 즉각적인 응답 이상으로 계속되는 프로토콜 대화를 지원합니다.
로컬 프로세스 소유권 또는 별도로 호스팅되는 서비스를 선택하세요.
실제 사례
애플리케이션에는 각 작업 공간, 고객 또는 작업에 대해 서로 다른 MCP 기능이 필요할 수 있습니다. 시작 시 모든 서버를 하드 코딩하면 이러한 변경이 어려워집니다. McpServerManager는 애플리케이션에 로컬 MCP 서버를 시작하고, 도구를 결합하고, 구성을 변경하고, 연결을 모니터링하고, 완전히 닫을 수 있는 한 장소를 제공합니다.
이 예는 local-tools라는 하나의 구성된 서버로 시작됩니다. 에이전트는 해당 에코 도구를 검색하고 호출할 수 있습니다. 그런 다음 애플리케이션은 두 번째 서버를 추가하고 이를 활성화하고 실행 중인 구성을 대체하고 업데이트된 레지스트리를 저장한 후 다시 제거합니다. 모든 변경에는 관리 화면이나 구성 서비스에 사용할 수 있는 동일한 API가 사용됩니다.
이 예제는 전적으로 귀하의 컴퓨터에서 실행됩니다. Rust 실행 파일은 MCP 하위 서버로 자체 복사본을 시작하므로 핸드셰이크, 도구 검색, 도구 호출, 다시 시작, 지속성 및 종료가 실제입니다. 모델 없음, Node.js 패키지, API 키 또는 인터넷 연결이 필요하지 않습니다.
mcp.json 호환 구성에서 local-tools를 로드하고, 하위 프로세스를 시작하고, MCP 핸드셰이크를 완료하고, 해당 에코 도구를 검색하세요.
대기 도구를 비활성화된 것으로 등록한 다음 응용 프로그램에서 해당 기능을 사용할 수 있다고 결정하면 활성화하고 시작합니다.
실행 중인 서버 정의를 업데이트합니다. 관리자는 새 구성으로 이를 다시 시작하고 교체 시작이 실패할 경우 이전 정의를 복원할 수 있습니다.
라이브 레지스트리를 JSON에 다시 작성하고 추가 서버를 비활성화 및 제거한 다음 모든 MCP 세션과 하위 프로세스를 완전히 닫습니다.
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?;$ 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클라이언트, 관리자 또는 서버
대부분의 에이전트 애플리케이션은 MCP 클라이언트입니다. 기존 서버에 연결하여 에이전트가 선택한 도구를 사용할 수 있도록 합니다. 작업 공간 또는 관리자 통합을 허용하는 제품은 관리자 뒤에 로컬 stdio 연결을 배치할 수 있습니다. 새로운 기능을 게시하는 팀은 다시 내보낸 rmcp 서버 API를 사용한 다음 ADK-Rust 클라이언트에서 서버를 테스트합니다.
생산 디자인
MCP는 검색과 통신의 일관성을 유지합니다. 에이전트가 연결해야 하는 시스템, 승인이 필요한 작업, 자격 증명이 발급되는 방법 또는 종속성이 실패할 때 발생해야 하는 작업은 결정하지 않습니다. 이는 제품 및 플랫폼 결정으로 남아 있습니다.
한 팀이나 시스템이 소유한 일관된 기능을 중심으로 서버를 만듭니다. 관련 없는 자격 증명과 위험 수준을 포괄하는 도구를 사용하는 하나의 거대한 서버를 피하십시오.
모델이 보기 전에 도구를 필터링합니다. 읽기 작업을 쓰기, 결제, 삭제, 배포 및 기타 결과적인 작업과 구분하세요.
mcp.json autoApprove는 호환성을 위해 유지됩니다. 프레임워크의 인증, 확인 처리기 또는 애플리케이션 정책을 우회하지 않습니다.
애플리케이션이 로컬 하위 프로세스를 소유하는 경우 stdio를 사용하십시오. 다른 배포가 가용성, ID 및 확장성을 소유한 경우 Streamable HTTP를 사용하세요.
도구 설명, 스키마, 리소스 콘텐츠 및 결과는 시스템 경계를 넘습니다. 인수, 바인딩된 결과 크기를 검증하고 적대적인 명령으로부터 모델 컨텍스트를 보호합니다.
연결 및 작업 시간 초과를 설정하고, 수명 주기 변경 사항을 기록하고, 비즈니스 종속성을 별도로 조사하고, 한 서버를 사용할 수 없을 때 제품이 작동하는 방식을 결정합니다.
유용한 시스템을 연결하세요
이해하고 있는 서버로 시작하여 해당 카탈로그를 필터링하고 하나의 읽기 전용 도구를 호출하고 전체 결과를 검사하십시오. 제품에 각 항목에 대한 명확한 이유가 있는 경우 쓰기 작업, 동적 관리, 원격 서비스, 유도 및 장기 실행 작업을 추가하세요.