برنامه نویسی

اجرای ترکیب A2A و ​​MCP

این وبلاگ با ادامه سریال در A2A و ​​MCP ، بر اجرای ترکیبی آنها متمرکز است. ما قبلاً در مورد معرفی و اجرای فردی هر دو A2A و ​​MCP کاوش کرده ایم. اکنون ، آنها را در یک مجموعه تک و منسجم جمع خواهیم کرد.


بازپرداخت سریع

MCP: پروتکل زمینه مدل

پروتکل زمینه Model (MCP) مجموعه ای از قوانینی است که نحوه ارتباط بین مشتری MCP و یک سرور MCP را برای استفاده از خدمات شخص ثالث به طور مؤثر کنترل می کند.

A2a: پروتکل عامل به عامل

پروتکل عامل به عامل (A2A) یک پروتکل باز است که به مأمورین اجازه می دهد تا در اکوسیستم های مختلف ، چارچوب ها یا سازمان ها ارتباط برقرار کنند. این محیط از یک محیط پویا و چند عامل پشتیبانی می کند که در آن مأمورین می توانند ارتباط برقرار کنند ، یکدیگر را کشف کنند و به طور مستقل همکاری کنند.


من یک رجیستری A2A برای جامعه AI ایجاد کرده ام ، آن را بررسی کنید و در شبکه خود به اشتراک بگذارید.

رجیستری A2a


شما ممکن است در وبلاگ های مختلف اجرای جداگانه A2A و ​​MCP را مشاهده کرده باشید ، اما منابع بسیار کمی وجود دارد که استفاده از آنها را پوشش می دهد. این وبلاگ با هدف ایجاد این شکاف و راهنمایی شما از طریق ادغام عملی هر دو پروتکل است.

جریان کلی اجرای ترکیبی A2A و ​​MCP چیست؟

قبل از غواصی در اجرای واقعی ، درک جریان اساسی چگونگی کار A2A و ​​MCP با هم در یک مجموعه ترکیبی مهم است.

جریان اجرای A2A و ​​MCP

در این تنظیم ، ما با a شروع می کنیم نماینده میزبان، یک نماینده مستقر در زیرساخت های خود ما. این عامل برای برقراری ارتباط با خودش پیکربندی شده است سرورهای MCP، امکان دسترسی به خدمات شخص ثالث مورد نیاز را فراهم می کند.

از طرف دیگر ، ما داریم عوامل دور افتاده که در زیرساخت های خارجی مستقر شده اند. این عوامل را می توان با استفاده از پروتکل A2a، به طور معمول از طریق /.well-known/agent.json نقطه پایانی نماینده میزبان از این URL برای یافتن و برقراری ارتباط با عوامل از راه دور استفاده می کند.

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


چه چیزی را اجرا خواهیم کرد؟

هدف از این اجرای ساخت سیستمی است که می تواند با بازیابی پویا به نمایش داده های زبان طبیعی در مورد شرکت ها پاسخ دهد:

  • قیمت سهام فعلی یا تاریخی
  • اخبار اخیر یا اطلاعات متنی از وب

به جای تماس های سخت API ، ما از این موارد استفاده خواهیم کرد A2a وت MCP پروتکل ها برای اینکه عوامل AI بتوانند این درخواست ها را در صورت تقاضا انجام دهند.

به عنوان مثال ، وقتی از آنها سؤال شد:

“در مورد سهام اپل و شرکت به من بگویید ،”

سیستم:

  • سوال را در زیرنویس های قابل کنترل تجزیه کنید
  • آن کارها را به سمت عوامل مناسب هدایت کنید
  • سپس هر نماینده با استفاده از MCP از خدمات خارجی مربوطه پرس و جو می کند
  • سرانجام ، نتایج به یک پاسخ به روز و به روز سنتز می شوند

در مرحله بعد ، ما اجزای مورد نیاز برای زنده کردن این سیستم را از طریق آن خواهیم گذراند.


اجزای اجرا

برای دسترسی به اطلاعات در دنیای واقعی ، این پروژه دو را مشخص می کند سرورهای MCP آن API های عمومی را بسته بندی می کند. این سرورها به عنوان پل بین نمایندگان و خدمات خارجی عمل می کنند و درخواست های عامل را به تماس های API ترجمه می کنند و داده ها را با فرمت ساختاری باز می گردانند.

جریان اجرای A2A و ​​MCP

لایه سرور MCP

هر سرور MCP با یک ارائه دهنده داده خارجی خاص رابط می کند. این سرورها با رعایت استاندارد MCP ، به هر عامل اجازه می دهند بدون نیاز به اداره مستقیم API سطح پایین ، از آنها استفاده کند. در این سیستم ، ما دو سرور MCP را تعریف می کنیم ، یکی برای جستجوی وب و دیگری برای داده های مالی. پس از پیکربندی ، این سرورها به طور مستقل اجرا می شوند و درخواست های نماینده را کنترل می کنند.

1. سرور MCP را جستجو کنید

مسیر: mcp_server/sse/search_server.py

  • با API Serper.dev (جستجوی Google) ادغام می شود.
  • برای بازیابی اخبار اخیر یا اطلاعات عمومی شرکت استفاده می شود.

2. سرور MCP سهام

مسیر: mcp_server/stdio/search_server.py

  • با API Finhub (داده های بازار سهام) ادغام می شود.
  • برای واکشی قیمت سهام اخیر یا تاریخی برای شرکت ها استفاده می شود.

لایه عوامل

نمایندگان با تخصص مشخص طراحی شده اند. یک مرکزی نماینده برنامه ریزی رسیدگی به پرس و جوهای کاربر ورودی ، مشخص می کند که چه اطلاعات زیر مورد نیاز است و سپس وظایف را به سایر عوامل واگذار می کند. به عنوان مثال ، یک عامل ممکن است جستجوهای وب را انجام دهد ، در حالی که دیگری بر تجزیه و تحلیل مالی تمرکز دارد. این عوامل با سرورهای MCP مربوطه خود برای واکشی داده ها ارتباط برقرار می کنند.

1. نماینده میزبان

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

2. نماینده جستجوی Google

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

3. نماینده گزارش سهام

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

با وجود معماری و مؤلفه ها ، بیایید به اجرای واقعی شیرجه بزنیم.

اجرای

قبل از پرش به کد ، اطمینان حاصل کنید که پیش نیازهای زیر رضایت دارند.

پیش نیازهای

اگر از شما استفاده می کنید ردیف رایگان API Gemini، شما باید نام مدل را در سراسر پروژه به روز کنید. تعویض کردن gemini-2.5-pro-exp-03-25 با یک مدل سطح آزاد در دسترس مانند gemini-2.0-flashبشر

پرونده های زیر را بر این اساس به روز کنید:

  • a2a_servers/agent_servers/gsearch_report_agent_server.py
  • a2a_servers/agent_servers/host_agent_server.py
  • a2a_servers/agent_servers/stock_report_agent_server.py
  • adk_agents_testing/hierarchical_agents.py
  • adk_agents_testing/single_agent_search_mcp.py

توجه:

در این پیاده سازی خاص ، ما از Agent Search Google استفاده نخواهیم کرد.

با این حال ، اگر قصد دارید آن را درج کنید ، به یک کلید API Serper نیاز دارید که می توانید از Serper.dev به دست آورید.

دنبال کردن

برای شروع با اجرای ، این مراحل را دنبال کنید:

1. مخزن Git را کلون کنید

git clone https://github.com/Tsadoq/a2a-mcp-tutorial.git
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. ایجاد یک .env پرونده

در پوشه ریشه پروژه ، ایجاد کنید .env متغیرهای محیط زیر را اضافه کنید:

FINNHUB_API_KEY=
GOOGLE_API_KEY=
SERPER_DEV_API_KEY=  # Required only if you plan to use the Google Search agent
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

3. سرور سهام MCP را شروع کنید

سرور MCP سهام را با استفاده از دستور زیر اجرا کنید:

uv run mcp_server/sse/stocks_server.py
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این سرور دو ابزار را ارائه می دهد:

  • get_symbol_from_query: نماد سهام را برای نام شرکت معین بازیابی می کند.
  • get_price_of_stock: قیمت سهام واقعی را با استفاده از نماد ارائه شده دریافت می کند.

این سرور MCP در درجه اول توسط گزارش سهام برای جمع آوری داده های مالی

4. نماینده گزارش سهام را شروع کنید

uv run a2a_servers/agent_servers/stock_report_agent_server.py
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • این نماینده در دسترس خواهد بود http://0.0.0.0:10000 و توانایی های خود را از طریق /.well-known/agent.json نقطه پایانی پیکربندی آن مانند این است:
{
    "name": "stock_report_agent",
    "description": "An agent that provides US stock prices and info.",
    "url": "http://0.0.0.0:10000",
    "version": "1.0.0",
    "capabilities": {
        "streaming": false,
        "pushNotifications": false,
        "stateTransitionHistory": true
    },
    "defaultInputModes": [
        "text"
    ],
    "defaultOutputModes": [
        "text"
    ],
    "skills": [
        {
            "id": "SKILL_STOCK_REPORT",
            "name": "stock_report",
            "description": "Provides stock prices and info."
        }
    ]
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این عامل از طریق سرور MCP سهام به ابزارهای تعریف شده در سهام MCP دسترسی پیدا می کند return_sse_mcp_tools_stocks عملکرد. این تابع به سرور MCP (در حال اجرا در پورت “متصل می شود 8181، همانطور که قبلاً آغاز شد) برای بازیابی ابزارهای موجود.

5. عامل جستجوی Google را شروع کنید (برای راه اندازی نماینده میزبان مورد نیاز است)

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

دستورات زیر را اجرا کنید:

uv run mcp_server/sse/stocks_server.py
uv run a2a_servers/agent_servers/google_search_agent_server.py
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

6. نماینده میزبان را شروع کنید

uv run a2a_servers/agent_servers/host_agent_server.py
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این عامل هماهنگ کننده اصلی است. این پرس و جو کاربر را دریافت می کند ، آن را به زیرنویس ها می شکند و آن وظایف را به نمایندگان مربوطه (به عنوان مثال ، نماینده گزارش سهام و عامل جستجوی Google) واگذار می کند.

7. مشتری میزبان محلی را شروع کنید

برای ارسال پرس و جو به سیستم ، مشتری محلی A2A را شروع کنید:

uv run a2a_servers/host_agent_server.py
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این اسکریپت به عنوان مشتری A2A عمل می کند و نمایش داده های کاربر را به نماینده میزبان ارسال می کند ، که ما در مراحل قبلی شروع کردیم.


تجسم گردش کار

فرایند کامل را می توان به شرح زیر مشاهده کرد:

User (Query)
 ↓
run_from_local_client.py (A2A Client)
 ↓
Host Agent (plans the task)
 ├──> Stock Report Agent → MCP Stock Server → FinnHub API
 └──> Google Search Agent → MCP Search Server → Serper.dev
 ↓
Host Agent compiles and sends final report
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

زمینه استقرار

در این تنظیم:

  • در نماینده میزبان در زیرساخت های ما مستقر شده و از طریق مشتری A2A به صورت محلی قابل دسترسی است.
  • در گزارش سهام وت نماینده جستجوی گوگل از نظر مفهومی به عنوان عوامل از راه دور رفتار می شوند. در حالت ایده آل ، آنها در حوزه های از راه دور مربوطه مستقر می شوند و از طریق آنها قابل دسترسی هستند /.well-known/agent.json نقاط پایانی

با این حال ، برای این اجرای محلی ، ما با استقرار همه عوامل در درگاه های مختلف همان دستگاه (LocalHost) این محیط را شبیه سازی می کنیم.


پرس و جو سیستم

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

مثال 1: کشف عوامل موجود

Enter your query: what agents do you have access to ?

Answer:
I have access to the following agents:
- google_search_agent: An agent that handles search queries and can read pages online.
- stock_report_agent: An agent that provides US stock prices and info.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در این حالت ، نماینده میزبان با استفاده از قابلیت های کشف آن مستقیماً پاسخ می دهد. هیچ کاری به عوامل از راه دور ارسال نمی شود.

توجه:

مشتری A2A می تواند فقط یک درخواست را به طور همزمان انجام دهد ، بنابراین برای هر پرس و جو باید آن را به صورت دستی دوباره انجام دهید.

مثال 2: بازیابی نماد سهام

Enter your query: which symbol is used to retrieve stock details of Apple company ?

Answer:
AAPL is the symbol used to retrieve stock details of Apple Inc. I used the stock_report_agent to get this information.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال 3: قیمت سهام را بازیابی کنید

Enter your query: What is the current stock value of APPL ?

Answer:
The current stock price of AAPL is 195.27, with a change of -6.09 and a percentage change of -3.0244. The day's high was 197.7, and the day's low was 193.46. The day's open price was 193.665, and the previous close price was 201.36.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این نتیجه مطابق شکل زیر با داده های زمان واقعی مطابقت دارد:

داده های قیمت سهام اپل

می توانید گزارش های درخواست و پاسخ را در ویندوزهای ترمینال در حال اجرا مشاهده کنید سرور MCP سهام وت گزارش سهامبشر

همچنین می توانید با فعال کردن با نمایش داده های ترکیبی آزمایش کنید نماینده جستجوی گوگلبشر این به نماینده میزبان اجازه می دهد تا وظایف را به چندین عامل واگذار کند و پاسخ های غنی تر و متنی را جمع کند.

این نسخه ی نمایشی نشان می دهد که چگونه می توان عوامل AI را با استفاده از بازیابی داده های زمان واقعی با استفاده از آن افزایش داد A2a وت MCP پروتکل ها با مسئولیت های مدولار کردن و به نمایندگان اجازه می دهد تا به طور مستقل از داده های مربوطه پرس و جو کنند ، ما یک سیستم مقیاس پذیر و قابل تعامل ایجاد می کنیم.

برای توضیح دقیق در مورد اجرای اساسی ، کامل GitHub Readme را بررسی کنید.


پایان

ترکیب A2A (عامل به عامل) و MCP (پروتکل زمینه مدل) روشی قدرتمند را برای همکاری نمایندگان ، تفویض وظایف و واکشی داده های زمان واقعی به صورت پویا باز می کند. این معماری نه تنها روند اتصال به خدمات شخص ثالث را ساده می کند بلکه یک سیستم انعطاف پذیر و مقیاس پذیر را نیز ایجاد می کند که در آن عوامل می توانند در حوزه های مختلف استدلال ، برنامه ریزی و عمل کنند.

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


اگر این مفید را پیدا کردید ، فراموش نکنید سهم وت دنبال کردن برای بینش های بیشتر عامل. یک ایده یا گردش کار در ذهن دارید؟ به بحث در نظرات بپیوندید یا به آن دسترسی پیدا کنید توییتر یا وابسته به لینکدینبشر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا