برنامه‌های هوشمند

با «پلاتفرم برنامه‌های متصل‌شده»، برنامه‌تان را به Gemini و «جستجو» گسترش دهید

بلندگو

  • Kateryna Semenova

    مهندس روابط توسعه‌دهنده کارمند

  • Mai Lowe

    مدیر گروه محصولات

درباره

درباره سخنرانی

«پلاتفرم برنامه‌های متصل‌شده» جدید به شما امکان می‌دهد سرویس‌های برنامه‌تان را مستقیماً در Gemini، «حالت هوشواره‌ای» در «جستجو»، و سیستم هوشمند Android ادغام کنید. این جلسه راهنمایی عملی برای شروع کار ارائه می‌دهد. بااستفاده از نمونه‌های کد و یادگیری از مطالعات موردی واقعی، چرخه حیات توسعه را مرور خواهیم کرد: ساختن، آزمایش کردن، و منتشر کردن اولین برنامه متصل‌شده‌تان برای دسترسی به کاربران در گردش‌های کاری مجهز به هوش مصنوعی آن‌ها.

در پایان این جلسه، می‌توانید:

  • سرویس خود را با «پلاتفرم برنامه‌های متصل‌شده» ادغام کنید.
  • ادغام خود را در سطوح مختلف هوش مصنوعی آزمایش کنید.
  • ویژگی‌های برنامه‌تان را در گردش‌های کاری هوش مصنوعی کاربران منتشر کنید.

خلاصه

  • «پلاتفرم برنامه‌های متصل‌شده» یک نقطه ورودی واحد برای راه‌اندازی قابلیت‌های برنامه در Gemini و «جستجو» بااستفاده از طرح‌واره‌های توصیفی ارائه می‌دهد. این برنامه به‌صورت مرحله‌ای باز می‌شود و با پیش‌نمایشی برای توسعه‌دهندگان ایالات متحده شروع می‌شود.
  • ادغام‌ها از استاندارد «پروتکل بافتار مدل» (MCP) ازطریق سرورهای راه دور یا سرورهای محلی درون‌دستگاهی ازطریق کتابخانه AppFunctions Jetpack استفاده می‌کنند. سرورهای راه دور همچنین می‌توانند واسط کاربر سفارشی را که در iframe ارائه شده است برگردانند.
  • تأییدیه‌ها با ریسک مقیاس‌بندی می‌شوند تا از اعتماد کاربر محافظت شود. توسعه‌دهندگان ابزارها را به‌عنوان فقط خواندنی یا با destructiveHint علامت‌گذاری می‌کنند تا به Gemini کمک کنند هنگام تغییر یا حذف داده‌ها، تأیید صریح درخواست کند.
  • «حالت توسعه‌دهنده Gemini» به شما امکان می‌دهد فراخوانی‌های ابزار و تأخیر را درمقابل نقاط پایانی عمومی بررسی کنید. این ویژگی اکنون برای توسعه‌دهندگان در ایالات متحده دردسترس است.
  • «کنسول یکپارچه Google» عرضه تولید را برای توسعه‌دهندگان تأییدشده مدیریت می‌کند. نقاط پایانی را پیکربندی می‌کنید، آزمایش‌گران را در سطوح انتخابی مدیریت می‌کنید، و برنامه‌تان را برای بازبینی ارسال می‌کنید.

منابع

Gemini Notebook

موضوع

  • gemini
  • جستجو
  • برنامه‌های متصل‌شده
  • mcp
  • appfunctions
  • android

آوانویسی

مقدمه

  • سلام به همه.

  • من مای هستم و مدیر محصول «پلاتفرم برنامه‌های متصل‌شده Gemini» هستم.

  • و بعداً، از کیت، مهندس DevRel ما، نیز خواهید شنید.

  • او قرار است بیاید.

  • بنابراین، امروز بسیار هیجان‌زده هستیم که با شما درباره اینکه چگونه می‌توانید برنامه‌تان را به برخی‌از محبوب‌ترین محصولات عامل‌محور Google، یعنی Gemini و «جستجو»، گسترش دهید صحبت کنیم.

  • می‌خواهیم به شما بگوییم که چرا برنامه‌های متصل‌شده برای کاربران ما مفید و جادویی هستند.

  • و حتی بهتر از آن، به شما نشان خواهیم داد که برای ساختن آن چه چیزی لازم است.

  • پس بیایید شروع کنیم.

  • بنابراین، می‌دانم که بسیاری از ما دیده‌ایم که اتفاقی واقعاً عظیم در سراسر بوم‌سازگان برنامه درحال رخ دادن است.

  • نحوه استفاده افراد از دستگاه‌هایشان، جستجوی پاسخ‌ها، و انجام کارها فقط درحال تکامل نیست.

  • اساساً تغییر کرده است.

  • دیگر مردم مرورگرها را باز نمی‌کنند و روی گزینه‌های مختلف ضربه نمی‌زنند.

  • آن‌ها مستقیماً با دستیارهایی مثل Gemini مکالمه می‌کنند.

  • آن‌ها سؤالات پیچیده‌ای از Gemini می‌پرسند و پاسخ‌ها را به‌صورت چندحالتی در «جستجو» جستجو می‌کنند.

  • و انتظار دارند دستگاه‌های Android نه‌تنها آنچه را می‌گویند درک کنند، بلکه بدانند که می‌خواهند چه کاری انجام شود.

  • به برخی‌از گردش‌های کار خودتان که می‌توانید در هر روزی انجام دهید فکر کنید.

  • فرض کنید از Gemini می‌خواهید به شما کمک کند تا برای گذراندن یک آخر هفته سرگرم‌کننده با دوستان در مکانی خاص و در زمانی خاص، چند گزینه را با بارش فکری پیدا کنید.

  • مدل‌های امروزی می‌توانند این طرح را در چند ثانیه پردازش کنند.

  • عالی است.

  • سازمان‌دهی شده است.

  • و بعد، چه؟

  • به‌پایان می‌رسد.

  • کاربر به بن‌بست می‌رسد و با طرحی که هیچ‌چیز آن تأیید نشده است، بلاتکلیف می‌ماند.

  • مدل می‌داند چه کاری باید انجام دهد، اما دست ندارد که آن را انجام دهد.

  • بنابراین، باید اطلاعات را از گپ با Gemini کپی و در برنامه دیگری جای‌گذاری کنید.

  • گاهی اوقات اگر در تلفن همراه باشید، بسیار نامناسب می‌شود.

  • سپس باید همه این موارد را به‌خاطر بسپارید و بعداً تایپ کنید.

  • این جهش شناختی و این اصطکاک کاملاً جادو را ازبین می‌برد.

  • و این برای همه شما چه معنایی دارد؟

  • این یعنی شما تقاضای کاربر با قصد جدی دارید که به‌جای هدایت کاربران غنی و تعاملی به برنامه‌تان، در حبابک گپ گیر کرده است.

  • و به همین دلیل است که برنامه‌های متصل‌شده تحول‌آفرین هستند، زیرا به ما کمک می‌کنند دقیقاً در جایی که کاربرانمان هستند به آن‌ها دسترسی پیدا کنیم.

  • و درحال‌حاضر، آن‌ها زمان زیادی را صرف گفتگو با دستیارهایی مثل Gemini می‌کنند.

  • وقتی کاربری قصد واقعی خود را برای انجام کنشی ابراز می‌کند، این لحظه بسیار ارزشمندی در سفر او است.

  • آن‌ها به‌طور منفعل مرور نمی‌کنند.

  • آن‌ها چیز مشخصی دارند که می‌خواهند همین حالا انجام شود.

  • با فعال کردن ادغام بین برنامه‌ها و این مدل‌های زایا، دستیارهایی مانند Gemini از پاسخ دادن به سؤالات به انجام کارها می‌رسند.

  • وقتی کاربر فهرست کارهای اولویت‌بندی‌شده می‌خواهد، یا به‌دنبال اجاره خودرو برای سفر پیش‌رو است، یا می‌خواهد خواربار لازم برای دستور پختی را که تازه پیدا کرده است بخرد، برنامه شما به‌عنوان پیوندی ایستا در پایین صفحه قرار نمی‌گیرد.

  • می‌توانید به ایجاد این جادو کمک کنید و آن کنش را همان‌جا و در همان لحظه اجرا کنید.

  • و اجازه دهید درباره چیزی کاملاً شفاف باشم، چون می‌دانم هر توسعه‌دهنده و رهبر محصولی به این فکر می‌کند، برنامه‌های متصل‌شده برای این نیست که برنامه شما را انتزاعی کند.

  • نمانام شما، منطق کسب‌وکار شما، روابط اصالت‌سنجی‌شده شما، و تجربه‌های واسط کاربر سفارشی شما، همه به شما تعلق دارند.

  • برنامه‌های متصل‌شده درباره ادغام سرویس‌های شما در یک سطح میانای برنامه‌سازی کاربردی عامل‌محور است تا محصولات عامل‌محور Google بتوانند به‌طور یکپارچه کاربران با قصد جدی را مستقیماً به محصول شما هدایت کنند.

پلاتفرم برنامه‌های متصل‌شده

  • بنابراین، امروز، همین حالا، بسیار هیجان‌زده هستم که راه‌اندازی رسمی «پلاتفرم برنامه‌های متصل‌شده» را اعلام کنم.

  • در گذشته، دسترسی به کاربران در محصولات Google به‌معنای ادغام متفاوت برای هرکدام بود.

  • اگر کنش یا میان‌بر برنامه Android می‌خواستید، باید خودتان آن را می‌ساختید.

  • یکپارچه‌سازی جستجو، یکی دیگر.

  • اما می‌خواهیم کارها را تا حد امکان برای شما آسان و عالی کنیم.

  • بنابراین، آماده‌سازی را استاندارد کرده‌ایم تا یک نقطه ورودی برای راه‌اندازی برنامه‌تان در چندین محصول عامل‌محور Google به شما ارائه دهیم.

  • اکنون، شما عملکرد برنامه خود را یک‌بار بااستفاده از طرح‌واره‌های اعلانی استاندارد می‌سازید و به‌همین سادگی، این عملکرد در دو محصول کلیدی ما، Gemini و «جستجو»، فعال می‌شود.

  • و به‌زودی محصولات بیشتری هم ارائه می‌شود.

  • پس بیایید درباره این دسترسی و معنای آن برای شما صحبت کنیم.

  • واقعاً نباید مجبور باشید چندین افزونه سفارشی بسازید، چهار کنسول توسعه‌دهنده مختلف را مدیریت کنید، و دست‌دهی‌های اصالت‌سنجی‌شده مختلفی را حفظ کنید تا فقط به کاربران Google در Android،‏ Gemini، و «جستجو» دسترسی پیدا کنید.

  • با پلاتفرم یکپارچه ما، تعاریف ابزار خود را یک بار می‌سازید و ثبت می‌کنید.

  • محصولات Google موردنظرتان را انتخاب می‌کنید و ما یک دکمه راه‌اندازی واحد در «کنسول یکپارچه Google» جدیدمان به شما ارائه می‌دهیم.

  • وقتی قابلیت‌هایتان را عرضه می‌کنید، برای هرکسی که از Gemini یا «جستجو» استفاده می‌کند قابل‌کشف می‌شود.

  • چه کاربران در رایانه کیفی خود در Gemini تایپ کنند، چه در «جستجو» در وب یک سری پُرسمان بپرسند، یا از ویژگی‌های دستیار در Android استفاده کنند، این انتخاب را خواهند داشت که درست زمانی که برایشان مهم است و درست در جایی که هستند از برنامه شما استفاده کنند.

  • بنابراین، پلاتفرم خود را به‌صورت مرحله‌ای باز خواهیم کرد، که با پیش‌نمایش ما شروع می‌شود.

  • به شما قول می‌دهم که کل تیم به‌شدت در تلاش است تا همه ویژگی‌ها را در سریع‌ترین زمان ممکن برای بیشترین تعداد ممکن از شما ارائه دهد.

  • برای این مرحله از پیش‌نمایش، پلاتفرم را فقط برای توسعه‌دهندگان ایالات متحده باز می‌کنیم.

  • می‌توانید ازطریق فرمی برای دسترسی ثبت‌نام کنید و می‌توانید آن را در راهنمای توسعه‌دهنده ما در developers.google.com/connected-apps پیدا کنید، یا اگر توسعه‌دهنده Play هستید، می‌توانید آن را در صفحه اصلی «کنسول Google Play» خود نیز پیدا کنید.

  • بنابراین، سؤال بعدی این است که ساختن یکی از این‌ها واقعاً چقدر سخت است؟

  • اگر REST API یا هدف‌های Android دارید، در نقطه شروع بسیار خوبی هستید.

  • ما درحال ساختن مفاهیم آشنای توسعه‌دهنده هستیم.

  • پلاتفرم ما با «پروتکل بافت مدل» یا استاندارد MCP ازطریق MCPهای مبتنی بر سرور و بومی Android ادغام می‌شود.

  • و برای اینکه این تجربه را برای شما بهتر و آسان‌تر کنیم، امروز ویژگی کاملاً جدیدی را در Gemini به‌نام «حالت توسعه‌دهنده» راه‌اندازی می‌کنیم که هم‌اکنون برای همه شما در ایالات متحده دردسترس است.

  • این ویژگی به شما امکان می‌دهد با برنامه‌تان در Gemini بازی کنید، بازخورد هم‌زمان درباره حالت‌های خطا، تأخیر، و پاسخ‌های مدل دریافت کنید.

  • و به‌زودی می‌توانید مجموعه‌های ارزیابی خودتان را تولید کنید و کارت‌های امتیاز سنجه کیفیت و محک‌ها را دریافت کنید.

  • عالی خواهد شد.

  • صرف‌نظر از اینکه دسترسی شما به پلاتفرم چگونه است، همیشه می‌توانید برنامه‌تان را در «حالت توسعه‌دهنده» امتحان کنید.

  • مطمئنم که مشتاقید جزئیات بیشتری بدانید، و کیت بلافاصله بعداز من روی صحنه می‌آید و ظرف چند دقیقه همه چیز را برایتان توضیح می‌دهد.

اعتماد، حریم خصوصی، و کنترل کاربر

  • بنابراین، ابتدا باید درباره چیزی با شما صحبت کنم که همیشه اهمیت بیشتری دارد: اعتماد کاربر.

  • هرگاه درباره اقدام کردن عامل‌ها ازطرف فردی صحبت می‌کنیم، اولین پرسش اغلب این است که «چگونه کنترل را دراختیار کاربر نگه داریم؟»

  • بنابراین، در اینجا نحوه نگاه ما به این موضوع را در چند مفهوم ساده می‌بینید.

  • اول اینکه تأییدهای ما با ریسک مقیاس‌بندی می‌شوند.

  • قرار نیست برای هر فراخوانی ابزار، بالاپر نشان دهیم.

  • جستجوی چیزی، بررسی دردسترس بودن منو، پیگیری سفارش، این‌ها باید بدون مشکل انجام شود.

  • اما وقتی کنشی پیامدهای واقعی دارد، مثل ویرایش کردن چیزی که هم‌رسانی شده است، تکمیل کردن رزرو، یا حذف کردن چیزی که کاربر نمی‌تواند به‌راحتی آن را برگرداند، در این مواقع مدل تلاش می‌کند قبل‌از انجام کنش، از کاربر تأیید صریح بگیرد.

  • دوم، داده‌های حساس نشان داده می‌شود و پنهان نیست.

  • بنابراین، محصولات ما به‌گونه‌ای طراحی شده‌اند که بررسی کنند چه اطلاعات شخصی‌ای ممکن است با برنامه‌تان هم‌رسانی شود.

  • اگر مورد حساسی شناسایی شود، دقیقاً آنچه هم‌رسانی می‌شود را به کاربر نشان می‌دهیم تا کاربر بتواند در همان لحظه تصمیم بگیرد که آیا می‌خواهد با برنامه شما ادامه دهد یا نه.

  • سوم، وقتی درخواست می‌کنیم، دقیق هستیم.

  • ما به‌طور مبهم نمی‌پرسیم «مطمئنید؟»، بلکه می‌گوییم کدام برنامه و دقیقاً چه چیزی ارسال یا تغییر داده می‌شود.

  • به این ترتیب، تأیید به کاربر کمک می‌کند واقعاً تصمیم بگیرد، نه اینکه فقط چیزی باشد که به‌طور تصادفی روی آن کلیک کند.

  • و چون هیچ‌کس نمی‌خواهد سفرش پر از تأییدیه باشد، کاربران کنترل بیشتری بر تعداد دفعات درخواست تأییدیه خواهند داشت.

  • برای مثال، در برنامه Gemini، کاربران می‌توانند برای هر برنامه و حتی برای هر کنش انتخاب کنند که آیا کنش همیشه مجاز باشد یا نه.

  • برای شما، همه این‌ها به این معنی است که از شما می‌خواهیم ابزارهایتان را صادقانه علامت‌گذاری کنید.

  • مشخص کنید چه چیزی فقط خواندنی است، چه چیزی تغییر می‌کند، چه چیزی داده‌ها را حذف می‌کند.

  • این سیگنال‌ها به محصولات ما کمک می‌کنند تصمیم بگیرند چه زمانی کاربر را وارد کنند.

  • و دوباره، کیت دقیقاً به شما نشان خواهد داد که چگونه در چند دقیقه.

تجربه‌های شریک و مسیر تولید

  • بسیار خوب، بیایید به همان سفر آخر هفته‌ای که درباره‌اش صحبت می‌کردیم برگردیم، یعنی بخش برنامه‌ریزی.

  • یادتان هست که این کار چقدر سخت و پراکنده بود؟

  • برنامه عالی‌ای برای گروهی از دوستانتان داشتید، اما بعد به مشکل برخوردید، مجبور شدید چیزهایی را کپی و جای‌گذاری کنید، و مدام از برنامه‌ای به برنامه دیگر بروید.

  • بنابراین، Viator و Ticketmaster دو شریک عالی اولیه ما هستند و فرصتی واقعی برای ملاقات با کاربر در جایی که هستند دیدند.

  • آن‌ها تصمیم گرفتند با ما شریک شوند و این دیوار را بردارند و به این کاربر با قصد جدی اجازه دهند مستقیماً از داخل Gemini به برنامه آن‌ها دسترسی پیدا کند.

  • به‌دلیل برنامه‌های متصلی که این شرکا ساخته‌اند، کل سفر بسیار روان‌تر و بدون اصطکاک است.

  • پس بیایید نگاهی بیندازیم.

  • کاربر برنامه‌ها را متصل می‌کند و از Gemini می‌خواهد یک گشت غذای روزانه در Viator و چند بلیت کنسرت در Ticketmaster برای یک گروه ۴ نفره پیدا کند.

  • ‫Gemini می‌تواند این قابلیت را تشخیص دهد و مستقیماً با اندازه گروه، تاریخ‌ها، و اولویت‌های مناسب که قبلاً تکمیل شده‌اند، با Viator و ابزارهای Ticketmaster تماس بگیرد.

  • بدون ترک مکالمه، هر دو برنامه دردسترس بودن هم‌زمان را برمی‌گردانند و تجربه‌های تعاملی غنی را درست در داخل گپ برای کاربر ارائه می‌دهند.

  • به‌جای اینکه به بن‌بست بخورید و با چندین برگه سروکله بزنید، Viator و Ticketmaster نمونه‌هایی از شرکایی هستند که به کاربران اجازه می‌دهند درست همان کاری را که می‌خواهند انجام دهند، مثلاً ایستگاه‌های گشت غذا را کاوش کنند، صندلی‌های کنسرت را انتخاب کنند، و کاملاً یکپارچه از مرحله کاوش به مرحله اقدام بروند.

  • بنابراین، دوران راه‌اندازهای برنامه ایستا درحال پایان است و جای خود را به تجربه‌های هوشمند، پیش‌کنشی، و عاملی می‌دهد.

  • کاربران شما درحال‌حاضر با «جستجو» و Gemini تعامل دارند و درخواست کمک می‌کنند.

  • باهم می‌توانیم به آن‌ها کمک کنیم تا فراتر از پاسخ‌ها بروند و تجربه‌های واقعاً قدرتمند و جادویی ارائه دهند.

  • و این هم از من.

  • اکنون کار را به کیت می‌سپارم تا دقیقاً نحوه ساختن برنامه متصل‌شده را به شما نشان دهد.

  • بیا بالا.

  • سلام به همه.

  • من کیت هستم، مهندس روابط توسعه‌دهندگان، و به توسعه‌دهندگانی مثل شما کمک می‌کنم تا با «پلاتفرم برنامه‌های متصل‌شده» ادغام شوند.

  • بنابراین، می‌خواهم شما را با نحوه آزمایش، ساخت، و استقرار برنامه متصل‌شده‌تان آشنا کنم.

  • و همان‌طور که مای قبلاً اشاره کرد، دو روش اصلی برای ادغام با «پلاتفرم برنامه‌های متصل‌شده» وجود دارد: یا ازطریق «سرور MCP» راه دور بااستفاده از پروتکل MCP یا ازطریق Android MCP، که در آن می‌توانید «سرور MCP» راه دور خود را بااستفاده از کتابخانه AppFunctions در دستگاه بسازید.

  • توصیه می‌کنیم وقتی می‌خواهید در پلاتفرم‌هایی مثل Android،‏ iOS، و وب ادغام کنید، از سرورهای MCP راه دور استفاده کنید.

  • همچنین بازخوردهایی از برخی توسعه‌دهندگان دریافت کردیم که گاهی اوقات، وقتی داده‌های برنامه فقط در دستگاه دردسترس است، اجرای محلی را ترجیح می‌دهید.

  • برای این موارد استفاده، توصیه می‌کنیم از Android MCP بااستفاده از کتابخانه AppFunctions Jetpack استفاده کنید.

  • و لطفاً گفتگوی اختصاصی را بررسی کنید که در آن دن و سارا می‌توانند به‌طور عمیق به نحوه ادغام با «پلاتفرم برنامه‌های متصل‌شده» ازطریق AppFunctions و Android MCP بپردازند.

ادغام و نسخه نمایشی سرور MCP ازراه‌دور

  • اکنون بیایید نحوه ساختن «سرور MCP» ازراه‌دور را بررسی کنیم.

  • و برای اینکه نشان دهیم این ویژگی در عمل چگونه کار می‌کند، برنامه متصل‌شده رسمی AndroidDevSummit را ساختیم.

  • بگذارید نشانتان دهم چطور کار می‌کند.

  • بیایید به نسخه نمایشی زنده برگردیم.

  • بنابراین، تصور کنید که بپرسید: «AndroidDevSummit، درباره جلسات XR بیشتر به من بگو.»

  • درحال‌حاضر، Gemini به «سرور MCP» ما که برای این برنامه متصل‌شده ساخته‌ایم متصل می‌شود.

  • ابزار مناسب را برای فراخوانی پیدا می‌کند و از داده‌های آن برای ساختن پاسخ کاربرپسند استفاده می‌کند.

  • بنابراین، اطلاعات مربوط به جلسات مرتبط با XR را در اینجا برای روز ۱ و روز ۲ پیدا می‌کند و در پایان، ابزاره سفارشی با نمانام ما را برای AndroidDevSummit با روبات Android ارائه می‌دهد.

  • بنابراین، درست در داخل Gemini، می‌توانید با این ابزاره تعامل داشته باشید.

  • می‌توانید زمان‌بندی را ببینید، مثلاً می‌توانید مکان را عوض کنید یا براساس روز فیلتر کنید.

  • همچنین می‌توانید براساس موضوعات مختلف فیلتر کنید، مثلاً اگر بخواهم جلسات مرتبط با واقعیت گسترش‌یافته را جستجو کنم، و همچنین می‌توانید جزئیات را ببینید و سخنرانان را هم ببینید.

  • بنابراین، هورا!

  • همه چیز در Gemini، تجربه سفارشی با نمانام شما، و کاربران نیازی به جابه‌جایی ندارند، کاربران نیازی به رفتن و پیدا کردن اطلاعات دیگر در برنامه دیگری ندارند، همه چیز در یک مکان بدون تعامل-- بدون هیچ جابه‌جایی یا ترک خود برنامه.

  • بنابراین، بیایید به اسلایدها برگردیم.

توسعه سرور MCP و واسط کاربر سفارشی

  • و بیایید نحوه ساختن این برنامه‌های متصل را کاوش کنیم.

  • بنابراین، راه‌اندازی «سرور MCP» با کتابخانه FastMCP بسیار آسان است، اما چهار روال مطلوب بسیار مهم وجود دارد که باید دنبال کنید.

  • ابتدا باید دستورالعمل‌های صریح سرور را ارائه دهید.

    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» که بعداً به شما نشان خواهم داد نیز به‌طور صریح وجود این دستورالعمل‌ها را اعتبارسنجی می‌کند.

  • و دوم، حاشیه‌نویسی‌های ابزار را برای ایمنی و کنترل اضافه کنید.

    @mcp.tool(
        title="List Sessions",
    
        annotations=ToolAnnotations(
            readOnlyHint=True,
            destructiveHint=False,
        ),
    
        meta={ … },
    )
    def list_sessions( … )
    …
  • برای سرور ADS، این دو حاشیه‌نویسی را داریم.

  • برای مدل مهم است که بداند ابزار شما چه زمانی فقط خواندنی است یا داده‌ها را اصلاح می‌کند.

  • بنابراین، اگر ابزاری دارید که اطلاعات کاربر را ویرایش یا حذف می‌کند، همیشه از این destructiveHint استفاده کنید تا آن‌ها را به‌عنوان ابزاری که می‌تواند عملیات ویرایش یا حذف را انجام دهد علامت‌گذاری کنید.

  • و به این ترتیب، «پلاتفرم برنامه‌های متصل‌شده» متوجه می‌شود که باید پیام تأییدی به کاربر نشان دهد تا کاربر موافقت خود را با تکمیل این کنش اعلام کند.

  • همچنین می‌توانید ابزارهایتان را در «کنسول یکپارچه Google» متصل پیکربندی کنید که بعداً به شما نشان خواهم داد.

  • و سوم، طرح‌واره‌های با نوع قوی و رشته‌های مستندسازی معنایی.

    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').
        """
        …
  • رشته‌های مستندسازی پارامتر را به‌عنوان بخشی از پیام‌واره‌تان درنظر بگیرید.

  • در این ابزار list_sessions، مقادیر موردانتظار را به‌طور صریح مستند می‌کنیم، مثل ابزارها و عملکرد، یا MTV درمقابل لندن برای مکان.

  • بزرگ‌ترین عامل در فراخوانی دقیق ابزار، طرح‌واره‌های واضح و توصیفی است.

  • و آخرین مورد، اتصال فراداده منبع میانای کاربر.

    @mcp.tool(
        …
        meta={
            "ui": {
                "resourceUri": "ui://ads-mcp/summit-app",
            },
            …
        },
    )
    def list_sessions(…)
    …
  • به تعریف میانای کاربر ما در متا نگاه کنید.

  • این فراداده پلی است که به Gemini دستور می‌دهد خروجی ابزار را مستقیماً به منبع واسط کاربر سفارشی ما در اینجا متصل کند.

  • این ما را به رندر کردن میانای کاربری می‌رساند.

    @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 خود ازطریق «میانای کاربر برنامه‌های MCP» ارائه دهید.

  • و وقتی که انعطاف‌پذیری کامل برای یک میانای سفارشی و بیانگر نمانام می‌خواهید، مثل «نشست تولیدکنندگان نرم‌افزار Android»، می‌توانید منبع MCP UI را نمایش دهید.

  • و Gemini می‌تواند در یک iframe امن و جعبه شنی ارائه شود.

گردش کار آزمایش و اعتبارسنجی

  • و سپس، شما را با آزمایش و استقرار «برنامه متصل‌شده» خود، مستقیماً از ماشین محلی‌تان به محیط تولید، آشنا خواهم کرد.

  • آره.

  • بنابراین، بیایید ببینیم چگونه می‌توانید به‌صورت محلی توسعه و آزمایش کنید.

  • درحین توسعه، می‌توانید بااستفاده از فرمان اول به‌راحتی سرورتان را به‌صورت محلی راه‌اندازی کنید.

    ./venv/bin/python server.py
    npx @modelcontextprotocol/inspector
  • و سپس می‌توانید از «بازرس MCP» برای اشکال‌زدایی سرور، دیدن ابزارهای دردسترس، و همچنین تعامل با میانای کاربر استفاده کنید.

  • این فقط نمونه‌ای از ظاهر MCP Inspector برای «نشست توسعه‌دهندگان Android» ما است.

  • بنابراین، می‌توانید ابزارها و همچنین میانای کاربر را ببینید و آن را به‌صورت محلی آزمایش کنید.

  • دوم، باید سرور MCP خود را در یک نقطه پایان راه دور مستقر کنید تا به آن دسترسی پیدا کنید و همچنین آن را در «حالت توسعه‌دهنده Gemini» اعتبارسنجی کنید.

  • می‌توانید نقطه پایانی MCP خود را در هر زیرساختی یا هر ارائه‌دهنده ابری میزبانی کنید.

  • اما اگر Google Cloud را ترجیح می‌دهید، استفاده از آن با Google Cloud CLI بسیار ساده است.

  • فقط از این فرمان ساده برای استقرار استفاده کنید و برنامه‌تان از راه دور دردسترس قرار خواهد گرفت.

    gcloud run deploy ads-mcp-server
  • مرحله بعدی این است که نقطه پایانی عمومی‌تان را در «حالت توسعه‌دهنده Gemini» اعتبارسنجی کنید.

  • بنابراین، بیایید به یک نسخه نمایشی زنده برگردیم و من به شما نشان خواهم داد که چگونه از حالت توسعه‌دهنده در عمل استفاده کنید.

  • بنابراین، اگر به تنظیمات بروید و روی «حالت توسعه‌دهنده» کلیک کنید، به‌راحتی می‌توانید حالت توسعه‌دهنده را پیدا کنید.

  • سپس باید انتخاب کنید که کدام برنامه متصل‌شده را می‌خواهید آزمایش کنید.

  • برای مثال، می‌توانید با ارائه نشانی وب سرور MCP در اینجا، سرور جدیدی ایجاد کنید.

  • من قبلاً یکی برای آزمایش ایجاد کرده‌ام که ADS MCP نام دارد و نقطه پایانی آزمایشی من است.

  • And I just want to test it how it works with Gemini end-to-end.

  • پس بیایید چیزی بپرسیم.

  • «ADS MCP, tell me more about the event.‎» (ADS MCP، درباره این رویداد بیشتر بگو.)

  • بنابراین، درحال‌حاضر، Gemini سرور MCP ما را فراخوانی می‌کند و همچنین می‌توانید ببینید کدام ابزار در «حالت توسعه‌دهنده» فراخوانی می‌شود.

  • بنابراین، برای مثال، برای این پیام‌واره خاص، «درباره رویداد بیشتر به من بگو»، get_summit_info فراخوانی شد.

  • و همچنین می‌توانید پاسخی را که موفقیت‌آمیز بوده است ببینید.

  • و می‌توانید تأخیر را ببینید.

  • همچنین می‌توانید همه جزئیات درخواست و پاسخ را ببینید.

  • بنابراین، برای مثال، برای پاسخمان، اطلاعات زیادی داریم.

  • همچنین می‌توانید کمی بزرگ‌نمایی کنید و ببینید که مثلاً چگونه اطلاعات موردنیازتان را اشکال‌زدایی کنید و مطمئن شوید که همه چیز دقیق است.

  • همچنین می‌توانید آن را کپی کنید که اگر بخواهید آن را با هم‌تیمی‌تان هم‌رسانی کنید بسیار راحت است.

  • همچنین می‌توانید کل گزارش رویداد را صادر کنید و درصورت نیاز هم‌رسانی کنید.

  • What I also like that you can also explore other tools that are available, so here in the Developer Mode you can see get summit info, list session, and other tools.

  • همچنین می‌توانید محیط را برای شبیه‌سازی زمینه‌های مختلف کاربر تغییر دهید.

  • برای مثال، می‌توانید زمان روز یا اولویت‌هایی مثل زبان را تغییر دهید و همچنین می‌توانید اصالت‌سنجی را راه‌اندازی کنید.

  • بنابراین، این «حالت توسعه‌دهنده» بود.

  • و بله، می‌توانید از همین امروز ساختن «سرور MCP» خودتان را شروع کنید و از همین امروز آن را با «حالت توسعه‌دهنده» آزمایش کنید.

  • درحال‌حاضر برای همه دردسترس است.

  • و بیایید به اسلایدها برگردیم.

  • بسیارخوب.

  • بنابراین، فرض کنید قبلاً با «حالت توسعه‌دهنده» آزمایش کرده‌اید، همه‌چیز عالی به‌نظر می‌رسد، بعداز آن چه می‌کنید؟

  • برای دسترسی به پلاتفرم ما باید برای دسترسی ثبت‌نام کنید و ابتدا باید این فرم علاقه‌مندی را تکمیل کنید.

  • همچنین در اسناد ما و در «کنسول یکپارچه Google» دردسترس است.

آماده‌سازی برای تولید و منابع

  • و پس‌از تأیید شدن درخواستتان، به «کنسول یکپارچه Google» دسترسی پیدا خواهید کرد و در آنجا می‌توانید برنامه‌تان را برای عرضه در دسته هدف تولید آماده کنید.

  • در کنسول، فقط چند مرحله برای آماده‌سازی برنامه‌تان لازم است.

  • ابتدا باید «برنامه متصل‌شده» جدیدی در آنجا ایجاد کنید و نامی برای آن ارائه دهید.

  • و سپس فقط باید قابلیت‌ها و دسته مشابه را انتخاب کنید.

  • برای مثال، برای این نمونه، بهره‌وری را انتخاب کردیم و فقط روی ایجاد کلیک می‌کنیم.

  • سپس، در بخش جزئیات برنامه، باید داده‌های عمومی مانند نام نمایشی، نماد، و همچنین شرحی برای کاربر و قابلیت‌ها، محدودیت‌ها، پیام‌واره‌های نمونه، و سایر داده‌های برنامه‌تان را ارائه دهید.

  • و سپس وقتی سرور MCP خود را پیکربندی می‌کنید، باید نقطه پایانی خود را ارائه دهید.

  • باید تأیید کنید که این دامنه متعلق به شما است و همچنین می‌توانید اعتبارنامه‌ها را برای همگام‌سازی ابزارها پیکربندی کنید.

  • به‌خاطر داشته باشید که «کنسول Google» از طرح MCP شما عکس آنی می‌گیرد، بنابراین هر زمان که در طرح خود تغییراتی ایجاد کنید، باید برگردید و دوباره آن را مستقر کنید.

  • و پس‌از آن، می‌توانید دردسترس بودن برنامه‌تان را پیکربندی کنید.

  • می‌توانید مناطقی را که برنامه‌تان باید در آن‌ها دردسترس باشد، زبان‌ها، سطوح، و دیگر پیکربندی‌های ابزار را به‌طور جداگانه انتخاب کنید.

  • از آنجا می‌توانید فقط روی «روانه کردن تغییرات» فشار دهید و برای بازبینی مرحله Gemini ارسال کنید.

  • و سپس می‌توانید حساب‌های آزمایشی را نیز در بخش مدیریت آزمایش‌کنندگان اضافه کنید.

  • و بلافاصله آن را به‌طور زنده با این حساب‌های آزمایشی در وب، تلفن همراه، یا هر سطح دیگری که قبلاً انتخاب کرده‌اید، مانند Gemini یا «جستجو»، آزمایش کنید و سپس آن را برای پیش‌نمایش نهایی ارسال کنید.

  • و وقتی برنامه‌تان آماده شد، می‌توانید آن را به‌طور جهانی برای کاربران یا مثلاً مناطق انتخابی در محیط تولید عرضه کنید، فقط کافی است آن دکمه را ارسال کنید.

  • همین!

  • مشتاقیم ببینیم چه چیزی می‌توانید با «پلاتفرم برنامه‌های متصل‌شده» بسازید، چه قابلیت‌های برنامه‌تان را ازطریق «سرور MCP راه دور» ارائه دهید و چه ازطریق Android MCP.

  • خوشحال می‌شویم که در ساختن این ادغام‌های شگفت‌انگیز از شما پشتیبانی کنیم.

  • کافی است این مستندات و نمونه‌های ما را که بااستفاده از این بارکد دردسترس است دنبال کنید.

  • و از اینکه امروز به ما پیوستید بسیار سپاس‌گزاریم!

  • کدنویسی خوش بگذرد!

کد

تکه‌کدها

قطعه Python در 14:56 در «توسعه سرور 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 "
    ),
)
قطعه کد Python در دقیقه ۱۵:۲۲ در «توسعه سرور MCP و واسط کاربر سفارشی»
@mcp.tool(
    title="List Sessions",

    annotations=ToolAnnotations(
        readOnlyHint=True,
        destructiveHint=False,
    ),

    meta={ … },
)
def list_sessions( … )
…
قطعه Python در ۱۶:۰۸ در «توسعه سرور MCP و واسط کاربر سفارشی»
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').
    """
    …
قطعه Python در دقیقه ۱۶:۳۲ در «توسعه سرور MCP و واسط کاربر سفارشی»
@mcp.tool(
    …
    meta={
        "ui": {
            "resourceUri": "ui://ads-mcp/summit-app",
        },
        …
    },
)
def list_sessions(…)
…
قطعه Python در ۱۶:۴۹ در «توسعه سرور MCP و واسط کاربر سفارشی»
@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",
        )
    ])
قطعه کد Shell در دقیقه ۱۷:۲۹ در «گردش کار آزمایش و اعتبارسنجی»
./venv/bin/python server.py
npx @modelcontextprotocol/inspector
قطعه کد Shell در ۱۸:۱۶ در «گردش کار آزمایش و اعتبارسنجی»
gcloud run deploy ads-mcp-server