├── .gitignore ├── README.md ├── a2a_servers ├── __init__.py ├── agent_servers │ ├── __init__.py │ ├── gsearch_report_agent_server.py │ ├── host_agent_server.py │ ├── stock_report_agent_server.py │ └── utils.py ├── agents │ ├── __init__.py │ ├── adk_agent.py │ └── utils │ │ ├── __init__.py │ │ └── remote_agent_connection.py ├── common │ ├── __init__.py │ ├── agent_task_manager.py │ ├── client │ │ ├── __init__.py │ │ ├── card_resolver.py │ │ └── client.py │ ├── server │ │ ├── __init__.py │ │ ├── server.py │ │ ├── task_manager.py │ │ └── utils.py │ ├── types.py │ └── utils │ │ ├── in_memory_cache.py │ │ └── push_notification_auth.py ├── hosts │ ├── __init__.py │ └── cli │ │ ├── .python-version │ │ ├── README.md │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── push_notification_listener.py │ │ └── pyproject.toml └── run_from_local_client.py ├── adk_agents_testing ├── __init__.py ├── hierarchical_agents.py ├── mcp_tools │ ├── __init__.py │ ├── mcp_tool_search.py │ └── mcp_tool_stocks.py └── single_agent_search_mcp.py ├── mcp_server ├── __init__.py ├── sse │ ├── __init__.py │ ├── search_server.py │ └── stocks_server.py └── stdio │ ├── __init__.py │ ├── search_server.py │ └── stocks_server.py ├── pyproject.toml ├── services ├── __init__.py ├── search_engine_service │ ├── __init__.py │ └── serper_dev_service.py └── stocks_service │ ├── __init__.py │ └── finhub_service.py └── uv.lock /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/README.md -------------------------------------------------------------------------------- /a2a_servers/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /a2a_servers/agent_servers/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /a2a_servers/agent_servers/gsearch_report_agent_server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/agent_servers/gsearch_report_agent_server.py -------------------------------------------------------------------------------- /a2a_servers/agent_servers/host_agent_server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/agent_servers/host_agent_server.py -------------------------------------------------------------------------------- /a2a_servers/agent_servers/stock_report_agent_server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/agent_servers/stock_report_agent_server.py -------------------------------------------------------------------------------- /a2a_servers/agent_servers/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/agent_servers/utils.py -------------------------------------------------------------------------------- /a2a_servers/agents/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /a2a_servers/agents/adk_agent.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/agents/adk_agent.py -------------------------------------------------------------------------------- /a2a_servers/agents/utils/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /a2a_servers/agents/utils/remote_agent_connection.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/agents/utils/remote_agent_connection.py -------------------------------------------------------------------------------- /a2a_servers/common/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /a2a_servers/common/agent_task_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/common/agent_task_manager.py -------------------------------------------------------------------------------- /a2a_servers/common/client/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/common/client/__init__.py -------------------------------------------------------------------------------- /a2a_servers/common/client/card_resolver.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/common/client/card_resolver.py -------------------------------------------------------------------------------- /a2a_servers/common/client/client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/common/client/client.py -------------------------------------------------------------------------------- /a2a_servers/common/server/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /a2a_servers/common/server/server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/common/server/server.py -------------------------------------------------------------------------------- /a2a_servers/common/server/task_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/common/server/task_manager.py -------------------------------------------------------------------------------- /a2a_servers/common/server/utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/common/server/utils.py -------------------------------------------------------------------------------- /a2a_servers/common/types.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/common/types.py -------------------------------------------------------------------------------- /a2a_servers/common/utils/in_memory_cache.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/common/utils/in_memory_cache.py -------------------------------------------------------------------------------- /a2a_servers/common/utils/push_notification_auth.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/common/utils/push_notification_auth.py -------------------------------------------------------------------------------- /a2a_servers/hosts/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /a2a_servers/hosts/cli/.python-version: -------------------------------------------------------------------------------- 1 | 3.12 2 | -------------------------------------------------------------------------------- /a2a_servers/hosts/cli/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/hosts/cli/README.md -------------------------------------------------------------------------------- /a2a_servers/hosts/cli/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /a2a_servers/hosts/cli/__main__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/hosts/cli/__main__.py -------------------------------------------------------------------------------- /a2a_servers/hosts/cli/push_notification_listener.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/hosts/cli/push_notification_listener.py -------------------------------------------------------------------------------- /a2a_servers/hosts/cli/pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/hosts/cli/pyproject.toml -------------------------------------------------------------------------------- /a2a_servers/run_from_local_client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/a2a_servers/run_from_local_client.py -------------------------------------------------------------------------------- /adk_agents_testing/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /adk_agents_testing/hierarchical_agents.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/adk_agents_testing/hierarchical_agents.py -------------------------------------------------------------------------------- /adk_agents_testing/mcp_tools/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /adk_agents_testing/mcp_tools/mcp_tool_search.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/adk_agents_testing/mcp_tools/mcp_tool_search.py -------------------------------------------------------------------------------- /adk_agents_testing/mcp_tools/mcp_tool_stocks.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/adk_agents_testing/mcp_tools/mcp_tool_stocks.py -------------------------------------------------------------------------------- /adk_agents_testing/single_agent_search_mcp.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/adk_agents_testing/single_agent_search_mcp.py -------------------------------------------------------------------------------- /mcp_server/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mcp_server/sse/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mcp_server/sse/search_server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/mcp_server/sse/search_server.py -------------------------------------------------------------------------------- /mcp_server/sse/stocks_server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/mcp_server/sse/stocks_server.py -------------------------------------------------------------------------------- /mcp_server/stdio/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mcp_server/stdio/search_server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/mcp_server/stdio/search_server.py -------------------------------------------------------------------------------- /mcp_server/stdio/stocks_server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/mcp_server/stdio/stocks_server.py -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/pyproject.toml -------------------------------------------------------------------------------- /services/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /services/search_engine_service/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /services/search_engine_service/serper_dev_service.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/services/search_engine_service/serper_dev_service.py -------------------------------------------------------------------------------- /services/stocks_service/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /services/stocks_service/finhub_service.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/services/stocks_service/finhub_service.py -------------------------------------------------------------------------------- /uv.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tsadoq/a2a-mcp-tutorial/HEAD/uv.lock --------------------------------------------------------------------------------