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

این وبلاگ با ادامه سریال در A2A و MCP ، بر اجرای ترکیبی آنها متمرکز است. ما قبلاً در مورد معرفی و اجرای فردی هر دو A2A و MCP کاوش کرده ایم. اکنون ، آنها را در یک مجموعه تک و منسجم جمع خواهیم کرد.
بازپرداخت سریع
MCP: پروتکل زمینه مدل
پروتکل زمینه Model (MCP) مجموعه ای از قوانینی است که نحوه ارتباط بین مشتری MCP و یک سرور MCP را برای استفاده از خدمات شخص ثالث به طور مؤثر کنترل می کند.
A2a: پروتکل عامل به عامل
پروتکل عامل به عامل (A2A) یک پروتکل باز است که به مأمورین اجازه می دهد تا در اکوسیستم های مختلف ، چارچوب ها یا سازمان ها ارتباط برقرار کنند. این محیط از یک محیط پویا و چند عامل پشتیبانی می کند که در آن مأمورین می توانند ارتباط برقرار کنند ، یکدیگر را کشف کنند و به طور مستقل همکاری کنند.
من یک رجیستری A2A برای جامعه AI ایجاد کرده ام ، آن را بررسی کنید و در شبکه خود به اشتراک بگذارید.
شما ممکن است در وبلاگ های مختلف اجرای جداگانه A2A و MCP را مشاهده کرده باشید ، اما منابع بسیار کمی وجود دارد که استفاده از آنها را پوشش می دهد. این وبلاگ با هدف ایجاد این شکاف و راهنمایی شما از طریق ادغام عملی هر دو پروتکل است.
جریان کلی اجرای ترکیبی A2A و MCP چیست؟
قبل از غواصی در اجرای واقعی ، درک جریان اساسی چگونگی کار A2A و MCP با هم در یک مجموعه ترکیبی مهم است.
در این تنظیم ، ما با a شروع می کنیم نماینده میزبان، یک نماینده مستقر در زیرساخت های خود ما. این عامل برای برقراری ارتباط با خودش پیکربندی شده است سرورهای MCP، امکان دسترسی به خدمات شخص ثالث مورد نیاز را فراهم می کند.
از طرف دیگر ، ما داریم عوامل دور افتاده که در زیرساخت های خارجی مستقر شده اند. این عوامل را می توان با استفاده از پروتکل A2a، به طور معمول از طریق /.well-known/agent.json
نقطه پایانی نماینده میزبان از این URL برای یافتن و برقراری ارتباط با عوامل از راه دور استفاده می کند.
درست مانند نماینده میزبان ، عوامل از راه دور بسته به نیازهای خاص خود ، سرورهای MCP خود را پیکربندی می کنند. این تنظیم به نمایندگان در محیط های مختلف اجازه می دهد تا با یکدیگر کشف و ارتباط برقرار کنند ، در حالی که هنوز هم از سرورهای MCP مربوطه خود برای تعامل با خدمات استفاده می کنند.
چه چیزی را اجرا خواهیم کرد؟
هدف از این اجرای ساخت سیستمی است که می تواند با بازیابی پویا به نمایش داده های زبان طبیعی در مورد شرکت ها پاسخ دهد:
- قیمت سهام فعلی یا تاریخی
- اخبار اخیر یا اطلاعات متنی از وب
به جای تماس های سخت API ، ما از این موارد استفاده خواهیم کرد A2a وت MCP پروتکل ها برای اینکه عوامل AI بتوانند این درخواست ها را در صورت تقاضا انجام دهند.
به عنوان مثال ، وقتی از آنها سؤال شد:
“در مورد سهام اپل و شرکت به من بگویید ،”
سیستم:
- سوال را در زیرنویس های قابل کنترل تجزیه کنید
- آن کارها را به سمت عوامل مناسب هدایت کنید
- سپس هر نماینده با استفاده از MCP از خدمات خارجی مربوطه پرس و جو می کند
- سرانجام ، نتایج به یک پاسخ به روز و به روز سنتز می شوند
در مرحله بعد ، ما اجزای مورد نیاز برای زنده کردن این سیستم را از طریق آن خواهیم گذراند.
اجزای اجرا
برای دسترسی به اطلاعات در دنیای واقعی ، این پروژه دو را مشخص می کند سرورهای MCP آن API های عمومی را بسته بندی می کند. این سرورها به عنوان پل بین نمایندگان و خدمات خارجی عمل می کنند و درخواست های عامل را به تماس های API ترجمه می کنند و داده ها را با فرمت ساختاری باز می گردانند.
لایه سرور 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 (پروتکل زمینه مدل) روشی قدرتمند را برای همکاری نمایندگان ، تفویض وظایف و واکشی داده های زمان واقعی به صورت پویا باز می کند. این معماری نه تنها روند اتصال به خدمات شخص ثالث را ساده می کند بلکه یک سیستم انعطاف پذیر و مقیاس پذیر را نیز ایجاد می کند که در آن عوامل می توانند در حوزه های مختلف استدلال ، برنامه ریزی و عمل کنند.
این وبلاگ نحوه راه اندازی چنین سیستمی را از ابتدا نشان داد و توانایی های زمان واقعی را در عمل نشان داد. از جستجوی قیمت سهام گرفته تا برنامه ریزی گردش کار چند عامل ، این یک پایه محکم برای ساخت و گسترش است.
اگر این مفید را پیدا کردید ، فراموش نکنید سهم وت دنبال کردن برای بینش های بیشتر عامل. یک ایده یا گردش کار در ذهن دارید؟ به بحث در نظرات بپیوندید یا به آن دسترسی پیدا کنید توییتر یا وابسته به لینکدینبشر