그룹 제품 관리자
새로운 연결된 앱 플랫폼을 사용하면 앱의 서비스를 Gemini, Google 검색의 AI 모드, Android 인텔리전스 시스템에 직접 통합할 수 있습니다. 이 세션에서는 시작하기 위한 실용적인 가이드를 제공합니다. 코드 예시를 사용하고 실제 우수사례를 통해 학습하면서 개발 수명 주기를 살펴봅니다. 첫 번째 연결된 앱을 빌드, 테스트, 게시하여 AI 기반 워크플로 내에서 사용자에게 도달하는 방법을 알아봅니다.
이 세션의 목표는 다음과 같습니다.
destructiveHint로 표시하여 Gemini가 작업을 통해 데이터를 수정하거나 삭제할 때 명시적인 확인을 요청하도록 할 수 있습니다.스크립트
여러분 안녕하세요?
저는 Gemini 연결된 앱 플랫폼의 제품 책임자인 마이입니다.
그리고 DevRel 엔지니어인 케이트의 세션도 준비되어 있습니다.
올라올 거야.
그래서 오늘은 Google의 가장 인기 있는 에이전트형 제품인 Gemini와 Google 검색으로 앱을 확장하는 방법을 소개해 드리려고 합니다.
연결된 앱이 사용자에게 어떻게 도움이 되고 얼마나 유용한지 알려드리겠습니다.
더 좋은 점은, 이를 구축하는 데 필요한 사항을 보여드리겠다는 것입니다.
시작해 보겠습니다
앱 생태계 전반에서 엄청난 변화가 일어나고 있다는 사실을 많은 분이 알고 계실 것입니다.
사람들이 기기를 사용하고, 답을 찾고, 작업을 처리하는 방식은 단순히 진화하는 것이 아닙니다.
근본적으로 바뀌었습니다.
사람들은 더 이상 브라우저를 열고 탭을 클릭하지 않습니다.
Gemini와 같은 어시스턴트와 직접 대화하고 있습니다.
사용자들은 Google 검색에서 Gemini에게 복잡한 질문을 하고, 멀티모달 방식으로 답변을 검색하고 있습니다.
또한 Android 기기가 사용자의 말을 이해하는 것을 넘어 사용자가 원하는 작업을 파악하기를 기대합니다.
하루 동안 수행할 수 있는 워크플로를 생각해 보세요.
특정 장소에서 특정 시간에 친구들과 함께 즐거운 주말을 보낼 수 있는 옵션을 브레인스토밍하는 데 도움을 달라고 Gemini에게 요청한다고 가정해 보겠습니다.
오늘날의 모델은 이 계획을 몇 초 만에 처리할 수 있습니다.
정말 멋집니다.
체계적입니다.
그다음은 어떻게 될까요?
종료됩니다.
사용자는 난관에 부딪히고 계획만 있을 뿐 아무것도 확정되지 않은 상태로 남게 됩니다.
모델은 무엇을 해야 하는지 알고 있지만 이를 수행할 손이 없습니다.
따라서 Gemini와의 채팅에서 정보를 복사하여 다른 앱에 붙여넣어야 합니다.
모바일에서는 가끔 너무 불편할 때가 있습니다.
그런 다음 모든 내용을 기억하고 나중에 입력해야 합니다.
이러한 인지적 도약과 마찰은 마법을 완전히 깨뜨립니다.
이것이 여러분에게 어떤 의미가 있을까요?
이는 구매 의도가 높은 사용자가 앱으로 유입되지 않고 채팅 풍선에 머물러 있다는 의미입니다.
이것이 바로 연결된 앱이 판도를 바꾸는 이유입니다. 사용자가 있는 곳에서 바로 사용자를 만날 수 있기 때문입니다.
그리고 현재 Gemini와 같은 어시스턴트와 대화하는 데 많은 시간을 보내고 있습니다.
사용자가 행동에 대한 실제 의도를 표현하는 순간은 사용자 여정에서 매우 중요한 순간입니다.
수동적으로 탐색하지 않습니다.
지금 당장 하고 싶은 명확한 일이 있습니다.
앱과 이러한 생성 모델 간의 통합을 사용 설정하면 Gemini와 같은 어시스턴트가 질문에 답변하는 것에서 나아가 작업을 처리할 수 있습니다.
사용자가 우선순위가 지정된 할 일 목록을 요청하거나, 예정된 여행을 위해 자동차를 렌트하거나, 방금 찾은 레시피의 식료품을 구매하려고 할 때 앱이 페이지 하단에 정적 링크로 표시되지 않습니다.
이때 마법 같은 경험을 선사하고 바로 그 자리에서 조치를 취할 수 있습니다.
모든 개발자와 제품 리더가 생각하고 있는 점을 분명히 말씀드리자면, 연결된 앱은 앱을 추상화하는 것이 아닙니다.
브랜드, 비즈니스 로직, 인증된 관계, 맞춤 UI 환경은 모두 여러분의 것입니다.
연결된 앱은 서비스를 에이전트 API 표면에 통합하여 Google의 에이전트 제품이 구매 의도가 높은 사용자를 제품으로 원활하게 직접 유도할 수 있도록 하는 것입니다.
오늘 이 자리에서 연결된 앱 플랫폼의 출시를 공식적으로 발표하게 되어 매우 기쁩니다.
과거에는 Google 제품 전반에서 사용자에게 도달하려면 각 제품에 대해 서로 다른 통합이 필요했습니다.
Android 앱 작업이나 바로가기를 원한다면 직접 빌드해야 했습니다.
검색 통합입니다.
하지만 Google은 최대한 쉽고 멋진 경험을 제공하고자 합니다.
따라서 Google은 온보딩을 표준화하여 여러 Google 에이전트 제품에서 앱을 실행할 수 있는 단일 진입점을 제공합니다.
이제 표준 선언적 스키마를 사용하여 앱 기능을 한 번만 빌드하면 Google의 두 가지 주요 제품인 Gemini와 Google 검색에서 바로 사용할 수 있습니다.
곧 더 많은 제품이 출시될 예정입니다.
이러한 도달범위와 이것이 크리에이터에게 어떤 의미가 있는지 살펴보겠습니다.
Android, Gemini, Google 검색에서 Google 사용자에게 도달하기 위해 여러 개의 맞춤 플러그인을 빌드하고, 4개의 서로 다른 개발자 콘솔을 관리하고, 다양한 인증된 핸드셰이크를 유지할 필요가 없습니다.
통합 플랫폼을 사용하면 도구 정의를 한 번만 빌드하고 등록하면 됩니다.
원하는 Google 제품을 선택하면 Google의 새로운 Google Connected Console에서 단일 실행 버튼을 제공합니다.
기능을 출시하면 누구나 Gemini 또는 Google 검색을 사용할 때 해당 기능을 검색할 수 있습니다.
사용자가 노트북에서 Gemini에 입력하거나, 웹의 Google 검색에서 일련의 검색어를 입력하거나, Android에서 어시스턴트 기능을 사용할 때, 가장 중요한 순간에 바로 그 자리에서 앱을 사용할 수 있습니다.
따라서 프리뷰를 시작으로 플랫폼을 단계적으로 공개할 예정입니다.
YouTube팀은 최대한 많은 크리에이터에게 최대한 빨리 모든 기능을 제공하기 위해 최선을 다하고 있습니다.
이 프리뷰 단계에서는 미국 개발자에게만 플랫폼을 공개합니다.
액세스 권한을 얻으려면 양식을 통해 가입해야 합니다. 양식은 developers.google.com/connected-apps의 개발자 가이드에서 찾을 수 있으며, Play 개발자인 경우 Google Play Console 홈페이지에서도 찾을 수 있습니다.
그렇다면 다음 질문은, 실제로 이런 것을 만드는 것이 얼마나 어려운가요?
REST API 또는 Android 인텐트가 있다면 좋은 출발점이 될 수 있습니다.
익숙한 개발자 개념을 기반으로 빌드하고 있습니다.
Google의 플랫폼은 서버 기반 MCP와 Android 네이티브 MCP를 통해 모델 컨텍스트 프로토콜(MCP) 표준과 통합됩니다.
또한 오늘 Gemini에 개발자 모드라는 새로운 기능을 출시하여 더욱 편리하게 사용할 수 있도록 했습니다. 이 기능은 현재 미국에서 누구나 사용할 수 있습니다.
이를 통해 Gemini 내에서 앱을 사용해 보고 오류 상태, 지연 시간, 모델 응답에 관한 실시간 피드백을 받을 수 있습니다.
곧 자체 평가 세트를 생성하고 품질 측정항목 스코어카드와 벤치마크를 얻을 수 있게 됩니다.
정말 멋질 거예요.
플랫폼에 대한 액세스 권한과 관계없이 언제든지 개발자 모드에서 앱을 사용해 볼 수 있습니다.
더 자세한 내용을 알고 싶으실 텐데요. 제가 발표를 마치면 케이트가 무대에 올라 몇 분 동안 자세히 설명해 드릴 예정입니다.
먼저, 항상 중요한 주제인 사용자 신뢰에 대해 이야기해 보겠습니다.
에이전트가 누군가를 대신해 작업을 수행하는 것에 관해 이야기할 때 가장 먼저 나오는 질문은 '사용자가 어떻게 제어권을 유지할 수 있는가?'입니다.
몇 가지 간단한 개념을 통해 이를 살펴보겠습니다.
첫째, Google의 확인은 위험에 따라 확장됩니다.
모든 도구 호출 앞에 팝업을 표시하지는 않습니다.
무언가를 검색하고, 메뉴를 확인하고, 주문을 추적하는 과정은 원활해야 합니다.
하지만 공유 항목 수정, 예약 완료, 사용자가 쉽게 복구할 수 없는 항목 삭제와 같이 실제 결과가 발생하는 작업의 경우 모델은 작업이 실행되기 전에 사용자에게 명시적인 동의를 요청합니다.
둘째, 민감한 정보가 숨겨지지 않고 표시됩니다.
따라서 Google 제품은 앱과 공유될 수 있는 개인 정보를 확인하도록 설계되었습니다.
민감한 정보가 감지되면 사용자에게 공유되는 내용을 정확하게 표시하여 사용자가 그 순간에 앱을 계속 사용할지 여부를 결정할 수 있도록 합니다.
셋째, 요청할 때는 구체적으로 요청합니다.
'계속하시겠습니까?'와 같은 모호한 질문 대신 어떤 앱이 무엇을 전송하거나 변경하는지 명확하게 알려줍니다.
이렇게 하면 확인 메시지가 사용자가 무작위로 클릭하는 것이 아니라 실제로 결정하는 데 도움이 됩니다.
또한 확인 요청이 너무 많으면 사용자가 불편을 느끼므로, 사용자가 요청 빈도를 더 세부적으로 관리할 수 있게 됩니다.
예를 들어 Gemini 앱에서 사용자는 앱별로, 심지어 작업별로도 작업을 항상 허용할지 여부를 선택할 수 있습니다.
따라서 도구를 정직하게 표시해 주시기 바랍니다.
읽기 전용, 변경, 데이터 삭제를 표시합니다.
이러한 신호는 제품이 사용자를 언제 참여시킬지 결정하는 데 도움이 됩니다.
잠시 후 케이트가 정확한 방법을 보여드릴 것입니다.
좋습니다. 그럼 앞서 이야기했던 주말 여행 계획으로 돌아가 보겠습니다.
얼마나 어렵고 파편화되어 있었는지 기억하시나요?
친구들과 함께할 멋진 계획을 세웠지만, 복사하여 붙여넣기하고 앱을 넘나들어야 하는 등 난관에 부딪혔습니다.
Viator와 Ticketmaster는 초기 파트너로서 사용자가 있는 곳에서 사용자를 만나는 데서 진정한 기회를 발견했습니다.
이들은 Google과 협력하여 장벽을 허물고, 구매 의도가 높은 사용자가 Gemini 내에서 바로 앱에 액세스할 수 있도록 했습니다.
이러한 파트너가 구축한 연결된 앱 덕분에 전체 여정이 훨씬 더 원활하고 매끄럽게 진행됩니다.
그럼 살펴보겠습니다.
사용자가 앱을 연결하고 Gemini에게 Viator에서 낮 시간대 음식 투어를 찾고 Ticketmaster에서 4인용 콘서트 티켓을 찾아 달라고 요청합니다.
Gemini는 이 기능을 인식하고 Viator 및 Ticketmaster 도구를 직접 호출하여 적절한 그룹 규모, 날짜, 환경설정을 이미 입력한 상태로 제공할 수 있습니다.
두 앱 모두 대화를 종료하지 않고도 실시간 예약 가능 여부를 가져와 채팅 내에서 사용자에게 풍부한 대화형 환경을 렌더링합니다.
Viator와 Ticketmaster는 사용자가 여러 탭을 오가며 막다른 길에 부딪히는 대신, 음식 투어 장소를 탐색하고 콘서트 좌석을 선택하는 등 필요한 작업을 즉시 수행하고 탐색에서 액션으로 원활하게 전환할 수 있도록 지원하는 파트너의 예입니다.
정적인 앱 런처의 시대는 가고 지능적이고 선제적이며 에이전트 중심의 경험이 그 자리를 대신하고 있습니다.
사용자는 이미 Google 검색과 Gemini를 사용하며 도움을 요청하고 있습니다.
Google과 함께라면 단순한 답변을 넘어 강력하고 마법 같은 경험을 제공할 수 있습니다.
이상입니다.
이제 케이트가 연결된 앱을 빌드하는 방법을 자세히 안내해 드리겠습니다.
올라오세요.
여러분 안녕하세요?
저는 개발자 관계 엔지니어인 케이트입니다. 여러분과 같은 개발자가 연결된 앱 플랫폼과 통합할 수 있도록 지원하고 있습니다.
연결된 앱을 테스트, 빌드, 배포하는 방법을 안내해 드리겠습니다.
앞서 마이가 언급했듯이 연결된 앱 플랫폼과 통합하는 방법에는 두 가지가 있습니다. MCP 프로토콜을 사용하여 원격 MCP 서버를 통해 통합하거나, AppFunctions 라이브러리를 사용하여 기기에서 원격 MCP 서버를 빌드할 수 있는 Android MCP를 통해 통합하는 것입니다.
Android, iOS, 웹과 같은 플랫폼 간에 통합하려면 원격 MCP 서버를 사용하는 것이 좋습니다.
또한 앱 데이터가 기기에서만 사용 가능한 경우 로컬 실행을 선호한다는 일부 개발자의 의견도 있었습니다.
이 사용 사례의 경우 AppFunctions Jetpack 라이브러리를 사용하여 Android MCP를 사용하는 것이 좋습니다.
댄과 사라가 AppFunctions 및 Android MCP를 통해 연결된 앱 플랫폼과 통합하는 방법을 심층적으로 다루는 전용 강연도 확인해 보세요.
이제 원격 MCP 서버를 빌드하는 방법을 살펴보겠습니다.
이 기능이 실제로 어떻게 작동하는지 보여드리기 위해 공식 AndroidDevSummit 연결 앱을 빌드했습니다.
그럼 어떻게 작동하는지 보여드리겠습니다.
라이브 데모로 다시 전환해 보겠습니다.
"AndroidDevSummit, XR 세션에 대해 자세히 알려 줘"라고 질문한다고 가정해 보겠습니다.
이제 Gemini가 이 연결된 앱을 위해 빌드한 MCP 서버에 연결됩니다.
호출할 적절한 도구를 찾고 해당 데이터를 사용하여 사용자 친화적인 대답을 구성합니다.
따라서 1일 차와 2일 차의 XR 관련 세션에 관한 정보를 찾고 마지막에는 Android 로봇과 함께 AndroidDevSummit의 맞춤 브랜드 위젯을 렌더링합니다.
Gemini 내에서 바로 이 위젯과 상호작용할 수 있습니다.
일정을 확인하고, 위치를 전환하거나, 날짜별로 필터링할 수 있습니다.
XR 관련 세션을 검색하고 싶은 경우와 같이 다양한 주제로 필터링할 수도 있으며, 세부정보와 발표자도 확인할 수 있습니다.
정말 기쁩니다.
Gemini 내의 모든 기능, 맞춤 브랜드 환경, 사용자는 전환할 필요가 없고, 다른 앱에서 다른 정보를 찾을 필요가 없으며, 상호작용 없이 한곳에서 모든 것을 처리할 수 있습니다. 전환하거나 앱 자체를 나갈 필요가 없습니다.
그럼 슬라이드로 돌아가겠습니다.
이러한 연결된 앱을 빌드하는 방법을 살펴보겠습니다.
따라서 FastMCP 라이브러리를 사용하면 MCP 서버를 매우 쉽게 시작할 수 있지만, 따라야 할 매우 중요한 권장사항이 네 가지 있습니다.
먼저 명시적인 서버 안내를 제공해야 합니다.
from mcp.server.fastmcp import FastMCP
mcp = FastMCP(
name="ADS-MCP",
instructions=(
"A Model Context Protocol server providing event "
"overview, schedules, sessions, speakers, and "
"sandbox demos for the Android Developer Summit "
),
)MCP 서버를 초기화할 때는 항상 연결된 앱의 도메인과 기능을 설명하는 명확한 요청 사항을 정의하세요.
연결된 앱 플랫폼은 이러한 요청 사항을 기반으로 서버에 위임할 시점을 파악합니다.
또한 나중에 보여드릴 Google Connected Console에서도 이러한 안내가 있는지 명시적으로 확인합니다.
두 번째는 안전과 제어를 위해 도구 주석을 추가하는 것입니다.
@mcp.tool(
title="List Sessions",
annotations=ToolAnnotations(
readOnlyHint=True,
destructiveHint=False,
),
meta={ … },
)
def list_sessions( … )
…ADS 서버에는 다음 두 가지 주석이 있습니다.
도구가 읽기 전용인지 또는 데이터를 수정하는지 모델이 아는 것이 중요합니다.
따라서 사용자 정보를 수정하거나 삭제하는 도구가 있는 경우 항상 이 destructiveHint를 사용하여 수정 또는 삭제 작업을 표시하세요.
이렇게 하면 연결된 앱 플랫폼은 사용자에게 이 작업을 완료해도 괜찮은지 확인하는 메시지를 표시해야 한다는 것을 알게 됩니다.
Connected Google Connected Console에서 도구를 구성할 수도 있습니다. 이 내용은 나중에 보여드리겠습니다.
세 번째는 강력한 유형의 스키마와 시맨틱 docstring입니다.
def list_sessions(
track: Optional[str] = None,
location: Optional[str] = None,
) -> List[Dict[str, Any]]:
"""Lists all sessions, optionally filtered by track
(e.g. 'Tools and performance', 'Apps Foundation',
'AI experiences', 'Android XR') or location
(e.g. 'MTV', 'Mountain View', 'London', 'LON').
"""
…파라미터 docstring을 프롬프트의 일부로 취급합니다.
이 list_sessions 도구에서는 도구 및 실적, 위치(MTV 또는 런던)와 같은 예상 값을 명시적으로 문서화합니다.
정확한 도구 호출에서 가장 중요한 요소는 명확하고 설명이 포함된 스키마입니다.
마지막으로 UI 리소스 메타데이터 바인딩입니다.
@mcp.tool(
…
meta={
"ui": {
"resourceUri": "ui://ads-mcp/summit-app",
},
…
},
)
def list_sessions(…)
…메타의 UI 정의를 살펴보세요.
이 메타데이터는 Gemini가 도구 출력을 커스텀 UI 리소스에 직접 바인딩하도록 지시하는 가교 역할을 합니다.
이제 UI 렌더링에 대해 알아보겠습니다.
@mcp.resource(
"ui://ads-mcp/summit-app",
name="summit-app",
mime_type="text/html",
)
def get_summit_ui() -> ResourceResult:
"""Renders the interactive ADS 2026 dashboard."""
return ResourceResult([
ResourceContent(
_build_summit_ui_html(),
mime_type="text/html",
)
])연결된 앱 플랫폼을 사용하면 MCP 앱 UI를 통해 MCP 서버에서 풍부한 사용자 인터페이스를 렌더링할 수 있습니다.
Android Dev Summit과 같이 브랜드를 표현하는 맞춤 인터페이스를 위해 완전한 유연성이 필요한 경우 MCP UI 리소스를 노출할 수 있습니다.
Gemini는 안전한 샌드박스 iframe에서 렌더링할 수 있습니다.
다음으로 로컬 머신에서 바로 프로덕션으로 연결된 앱을 테스트하고 배포하는 방법을 안내해 드리겠습니다.
네.
로컬에서 개발하고 테스트하는 방법을 살펴보겠습니다.
개발 중에 첫 번째 명령어를 사용하여 로컬에서 서버를 쉽게 가동할 수 있습니다.
./venv/bin/python server.py
npx @modelcontextprotocol/inspector그런 다음 MCP Inspector를 사용하여 서버를 디버그하고, 사용 가능한 도구를 확인하고, UI와 상호작용할 수 있습니다.
이것은 Android Dev Summit에서 MCP Inspector가 어떻게 보이는지 보여주는 예입니다.
도구와 UI를 확인하고 로컬에서 테스트할 수 있습니다.
둘째, Gemini 개발자 모드에서 액세스하고 검증하려면 MCP 서버를 원격 엔드포인트에 배포해야 합니다.
모든 인프라 또는 클라우드 제공업체에서 MCP 엔드포인트를 호스팅할 수 있습니다.
하지만 Google Cloud를 선호하는 경우 Google Cloud CLI를 사용하면 매우 간단합니다.
이 간단한 명령어를 사용하여 배포하면 앱을 원격으로 사용할 수 있습니다.
gcloud run deploy ads-mcp-server다음 단계는 Gemini 개발자 모드에서 공개 엔드포인트를 검증하는 것입니다.
이제 라이브 데모로 돌아가서 개발 모드를 실제로 사용하는 방법을 보여드리겠습니다.
따라서 설정으로 이동하여 개발자 모드를 클릭하면 개발자 모드를 쉽게 찾을 수 있습니다.
그런 다음 테스트할 연결된 앱을 선택해야 합니다.
예를 들어 여기에서 MCP 서버 URL을 제공하여 새 서버를 만들 수 있습니다.
테스트를 위해 테스트 엔드포인트가 있는 ADS MCP라는 엔드포인트를 이미 만들었습니다.
Gemini와 엔드 투 엔드로 어떻게 작동하는지 테스트해 보고 싶습니다.
그럼 질문을 해보겠습니다.
"ADS MCP, 이벤트에 대해 자세히 알려 줘."
지금 Gemini가 MCP 서버를 호출하고 있으며, 개발자 모드에서 어떤 도구가 호출되고 있는지 확인할 수 있습니다.
예를 들어 이 특정 프롬프트인 '이벤트에 대해 자세히 알려줘'의 경우 get_summit_info가 호출되었습니다.
성공적인 응답도 확인할 수 있습니다.
지연 시간도 확인할 수 있습니다.
모든 요청 및 응답 세부정보도 확인할 수 있습니다.
예를 들어 응답에는 많은 정보가 포함되어 있습니다.
또한 약간 확대하여 필요한 정보를 디버그하고 모든 정보가 정확한지 확인할 수 있습니다.
복사할 수도 있으므로 팀원과 공유하려는 경우 매우 편리합니다.
필요한 경우 전체 이벤트 로그를 내보내고 공유할 수도 있습니다.
또한 사용 가능한 다른 도구를 살펴볼 수 있다는 점도 마음에 듭니다. 여기 개발자 모드에서 서밋 정보, 세션 목록, 기타 도구를 확인할 수 있습니다.
또한 환경을 변경하여 다양한 사용자 컨텍스트를 시뮬레이션할 수 있습니다.
예를 들어 시간대나 언어와 같은 환경설정을 변경할 수 있으며 인증을 설정할 수도 있습니다.
지금까지 개발 모드에 대해 알아봤습니다.
오늘부터 MCP 서버를 빌드하고 개발 모드로 테스트할 수 있습니다.
현재 모든 사용자가 이용할 수 있습니다.
슬라이드로 돌아가겠습니다.
좋습니다.
개발 모드로 이미 테스트를 완료했고 모든 것이 정상적으로 작동한다고 가정해 보겠습니다. 다음 단계는 무엇일까요?
플랫폼에 액세스하려면 액세스 권한을 신청해야 하며, 먼저 이 신청 양식을 작성해야 합니다.
문서와 Google Connected Console에서도 확인할 수 있습니다.
제출이 승인되면 Google Connected Console에 액세스하여 프로덕션 출시를 위해 애플리케이션을 준비할 수 있습니다.
콘솔에서 몇 단계만 거치면 앱을 준비할 수 있습니다.
먼저 새 연결된 앱을 만들고 이름을 지정해야 합니다.
그런 다음 기능과 카테고리를 선택하면 됩니다.
예를 들어 이 예시에서는 생산성을 선택하고 만들기를 클릭합니다.
다음으로 앱 세부정보에서 표시 이름, 아이콘과 같은 공개 데이터를 제공하고 사용자 대상 설명과 앱 기능, 제한사항, 프롬프트 예시, 기타 데이터를 제공해야 합니다.
그런 다음 MCP 서버를 구성할 때 엔드포인트를 제공해야 합니다.
이 도메인이 본인 소유인지 확인해야 하며 동기화 도구에 사용자 인증 정보를 구성할 수도 있습니다.
Google Console은 MCP 스키마의 스냅샷을 생성하므로 스키마를 변경할 때마다 다시 배포해야 합니다.
그런 다음 앱 사용 가능 여부를 구성하면 됩니다.
앱을 사용할 수 있는 지역, 언어, 표시 경로, 기타 개별 도구 구성을 선택할 수 있습니다.
여기에서 변경사항 푸시를 누르고 Gemini 단계 검토를 위해 제출하면 됩니다.
테스터 관리에서 테스트 계정을 추가할 수도 있습니다.
그리고 웹, 모바일 또는 Gemini나 Google 검색과 같이 이전에 선택한 모든 표시 경로에서 이 테스트 계정으로 즉시 실시간 테스트를 진행한 후 최종 프리뷰를 위해 제출합니다.
앱이 준비되면 버튼을 제출하여 전 세계 사용자 또는 선택한 지역에 프로덕션으로 출시할 수 있습니다.
이상입니다
원격 MCP 서버를 통해 앱 기능을 노출하든 Android MCP를 통해 노출하든, 연결된 앱 플랫폼으로 무엇을 빌드할지 기대됩니다.
이 멋진 통합을 구축할 수 있도록 최선을 다해 지원해 드리겠습니다.
이 문서와 이 바코드를 사용하여 제공되는 샘플을 따르세요.
오늘 함께해 주셔서 감사합니다.
즐겁게 코딩해 보세요!
from mcp.server.fastmcp import FastMCP
mcp = FastMCP(
name="ADS-MCP",
instructions=(
"A Model Context Protocol server providing event "
"overview, schedules, sessions, speakers, and "
"sandbox demos for the Android Developer Summit "
),
)@mcp.tool(
title="List Sessions",
annotations=ToolAnnotations(
readOnlyHint=True,
destructiveHint=False,
),
meta={ … },
)
def list_sessions( … )
…def list_sessions(
track: Optional[str] = None,
location: Optional[str] = None,
) -> List[Dict[str, Any]]:
"""Lists all sessions, optionally filtered by track
(e.g. 'Tools and performance', 'Apps Foundation',
'AI experiences', 'Android XR') or location
(e.g. 'MTV', 'Mountain View', 'London', 'LON').
"""
…@mcp.tool(
…
meta={
"ui": {
"resourceUri": "ui://ads-mcp/summit-app",
},
…
},
)
def list_sessions(…)
…@mcp.resource(
"ui://ads-mcp/summit-app",
name="summit-app",
mime_type="text/html",
)
def get_summit_ui() -> ResourceResult:
"""Renders the interactive ADS 2026 dashboard."""
return ResourceResult([
ResourceContent(
_build_summit_ui_html(),
mime_type="text/html",
)
])./venv/bin/python server.py
npx @modelcontextprotocol/inspectorgcloud run deploy ads-mcp-server