aip-agents-binary 0.5.20__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. aip_agents/__init__.py +65 -0
  2. aip_agents/a2a/__init__.py +19 -0
  3. aip_agents/a2a/server/__init__.py +10 -0
  4. aip_agents/a2a/server/base_executor.py +1086 -0
  5. aip_agents/a2a/server/google_adk_executor.py +198 -0
  6. aip_agents/a2a/server/langflow_executor.py +180 -0
  7. aip_agents/a2a/server/langgraph_executor.py +270 -0
  8. aip_agents/a2a/types.py +232 -0
  9. aip_agents/agent/__init__.py +27 -0
  10. aip_agents/agent/base_agent.py +970 -0
  11. aip_agents/agent/base_langgraph_agent.py +2942 -0
  12. aip_agents/agent/google_adk_agent.py +926 -0
  13. aip_agents/agent/google_adk_constants.py +6 -0
  14. aip_agents/agent/hitl/__init__.py +24 -0
  15. aip_agents/agent/hitl/config.py +28 -0
  16. aip_agents/agent/hitl/langgraph_hitl_mixin.py +515 -0
  17. aip_agents/agent/hitl/manager.py +532 -0
  18. aip_agents/agent/hitl/models.py +18 -0
  19. aip_agents/agent/hitl/prompt/__init__.py +9 -0
  20. aip_agents/agent/hitl/prompt/base.py +42 -0
  21. aip_agents/agent/hitl/prompt/deferred.py +73 -0
  22. aip_agents/agent/hitl/registry.py +149 -0
  23. aip_agents/agent/interface.py +138 -0
  24. aip_agents/agent/interfaces.py +65 -0
  25. aip_agents/agent/langflow_agent.py +464 -0
  26. aip_agents/agent/langgraph_memory_enhancer_agent.py +433 -0
  27. aip_agents/agent/langgraph_react_agent.py +2514 -0
  28. aip_agents/agent/system_instruction_context.py +34 -0
  29. aip_agents/clients/__init__.py +10 -0
  30. aip_agents/clients/langflow/__init__.py +10 -0
  31. aip_agents/clients/langflow/client.py +477 -0
  32. aip_agents/clients/langflow/types.py +18 -0
  33. aip_agents/constants.py +23 -0
  34. aip_agents/credentials/manager.py +132 -0
  35. aip_agents/examples/__init__.py +5 -0
  36. aip_agents/examples/compare_streaming_client.py +783 -0
  37. aip_agents/examples/compare_streaming_server.py +142 -0
  38. aip_agents/examples/demo_memory_recall.py +401 -0
  39. aip_agents/examples/hello_world_a2a_google_adk_client.py +49 -0
  40. aip_agents/examples/hello_world_a2a_google_adk_client_agent.py +48 -0
  41. aip_agents/examples/hello_world_a2a_google_adk_client_streaming.py +60 -0
  42. aip_agents/examples/hello_world_a2a_google_adk_server.py +79 -0
  43. aip_agents/examples/hello_world_a2a_langchain_client.py +39 -0
  44. aip_agents/examples/hello_world_a2a_langchain_client_agent.py +39 -0
  45. aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.py +37 -0
  46. aip_agents/examples/hello_world_a2a_langchain_client_streaming.py +41 -0
  47. aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.py +60 -0
  48. aip_agents/examples/hello_world_a2a_langchain_reference_server.py +105 -0
  49. aip_agents/examples/hello_world_a2a_langchain_server.py +79 -0
  50. aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.py +78 -0
  51. aip_agents/examples/hello_world_a2a_langflow_client.py +83 -0
  52. aip_agents/examples/hello_world_a2a_langflow_server.py +82 -0
  53. aip_agents/examples/hello_world_a2a_langgraph_artifact_client.py +73 -0
  54. aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.py +76 -0
  55. aip_agents/examples/hello_world_a2a_langgraph_artifact_server.py +92 -0
  56. aip_agents/examples/hello_world_a2a_langgraph_client.py +54 -0
  57. aip_agents/examples/hello_world_a2a_langgraph_client_agent.py +54 -0
  58. aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.py +32 -0
  59. aip_agents/examples/hello_world_a2a_langgraph_client_streaming.py +50 -0
  60. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.py +44 -0
  61. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.py +92 -0
  62. aip_agents/examples/hello_world_a2a_langgraph_server.py +84 -0
  63. aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.py +79 -0
  64. aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.py +132 -0
  65. aip_agents/examples/hello_world_a2a_mcp_langgraph.py +196 -0
  66. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.py +244 -0
  67. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.py +251 -0
  68. aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.py +57 -0
  69. aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.py +80 -0
  70. aip_agents/examples/hello_world_google_adk.py +41 -0
  71. aip_agents/examples/hello_world_google_adk_mcp_http.py +34 -0
  72. aip_agents/examples/hello_world_google_adk_mcp_http_stream.py +40 -0
  73. aip_agents/examples/hello_world_google_adk_mcp_sse.py +44 -0
  74. aip_agents/examples/hello_world_google_adk_mcp_sse_stream.py +48 -0
  75. aip_agents/examples/hello_world_google_adk_mcp_stdio.py +44 -0
  76. aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.py +48 -0
  77. aip_agents/examples/hello_world_google_adk_stream.py +44 -0
  78. aip_agents/examples/hello_world_langchain.py +28 -0
  79. aip_agents/examples/hello_world_langchain_lm_invoker.py +15 -0
  80. aip_agents/examples/hello_world_langchain_mcp_http.py +34 -0
  81. aip_agents/examples/hello_world_langchain_mcp_http_interactive.py +130 -0
  82. aip_agents/examples/hello_world_langchain_mcp_http_stream.py +42 -0
  83. aip_agents/examples/hello_world_langchain_mcp_multi_server.py +155 -0
  84. aip_agents/examples/hello_world_langchain_mcp_sse.py +34 -0
  85. aip_agents/examples/hello_world_langchain_mcp_sse_stream.py +40 -0
  86. aip_agents/examples/hello_world_langchain_mcp_stdio.py +30 -0
  87. aip_agents/examples/hello_world_langchain_mcp_stdio_stream.py +41 -0
  88. aip_agents/examples/hello_world_langchain_stream.py +36 -0
  89. aip_agents/examples/hello_world_langchain_stream_lm_invoker.py +39 -0
  90. aip_agents/examples/hello_world_langflow_agent.py +163 -0
  91. aip_agents/examples/hello_world_langgraph.py +39 -0
  92. aip_agents/examples/hello_world_langgraph_bosa_twitter.py +41 -0
  93. aip_agents/examples/hello_world_langgraph_mcp_http.py +31 -0
  94. aip_agents/examples/hello_world_langgraph_mcp_http_stream.py +34 -0
  95. aip_agents/examples/hello_world_langgraph_mcp_sse.py +35 -0
  96. aip_agents/examples/hello_world_langgraph_mcp_sse_stream.py +50 -0
  97. aip_agents/examples/hello_world_langgraph_mcp_stdio.py +35 -0
  98. aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.py +50 -0
  99. aip_agents/examples/hello_world_langgraph_stream.py +43 -0
  100. aip_agents/examples/hello_world_langgraph_stream_lm_invoker.py +37 -0
  101. aip_agents/examples/hello_world_model_switch_cli.py +210 -0
  102. aip_agents/examples/hello_world_multi_agent_adk.py +75 -0
  103. aip_agents/examples/hello_world_multi_agent_langchain.py +54 -0
  104. aip_agents/examples/hello_world_multi_agent_langgraph.py +66 -0
  105. aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.py +69 -0
  106. aip_agents/examples/hello_world_pii_logger.py +21 -0
  107. aip_agents/examples/hello_world_sentry.py +133 -0
  108. aip_agents/examples/hello_world_step_limits.py +273 -0
  109. aip_agents/examples/hello_world_stock_a2a_server.py +103 -0
  110. aip_agents/examples/hello_world_tool_output_client.py +46 -0
  111. aip_agents/examples/hello_world_tool_output_server.py +114 -0
  112. aip_agents/examples/hitl_demo.py +724 -0
  113. aip_agents/examples/mcp_configs/configs.py +63 -0
  114. aip_agents/examples/mcp_servers/common.py +76 -0
  115. aip_agents/examples/mcp_servers/mcp_name.py +29 -0
  116. aip_agents/examples/mcp_servers/mcp_server_http.py +19 -0
  117. aip_agents/examples/mcp_servers/mcp_server_sse.py +19 -0
  118. aip_agents/examples/mcp_servers/mcp_server_stdio.py +19 -0
  119. aip_agents/examples/mcp_servers/mcp_time.py +10 -0
  120. aip_agents/examples/pii_demo_langgraph_client.py +69 -0
  121. aip_agents/examples/pii_demo_langgraph_server.py +126 -0
  122. aip_agents/examples/pii_demo_multi_agent_client.py +80 -0
  123. aip_agents/examples/pii_demo_multi_agent_server.py +247 -0
  124. aip_agents/examples/todolist_planning_a2a_langchain_client.py +70 -0
  125. aip_agents/examples/todolist_planning_a2a_langgraph_server.py +88 -0
  126. aip_agents/examples/tools/__init__.py +27 -0
  127. aip_agents/examples/tools/adk_arithmetic_tools.py +36 -0
  128. aip_agents/examples/tools/adk_weather_tool.py +60 -0
  129. aip_agents/examples/tools/data_generator_tool.py +103 -0
  130. aip_agents/examples/tools/data_visualization_tool.py +312 -0
  131. aip_agents/examples/tools/image_artifact_tool.py +136 -0
  132. aip_agents/examples/tools/langchain_arithmetic_tools.py +26 -0
  133. aip_agents/examples/tools/langchain_currency_exchange_tool.py +88 -0
  134. aip_agents/examples/tools/langchain_graph_artifact_tool.py +172 -0
  135. aip_agents/examples/tools/langchain_weather_tool.py +48 -0
  136. aip_agents/examples/tools/langgraph_streaming_tool.py +130 -0
  137. aip_agents/examples/tools/mock_retrieval_tool.py +56 -0
  138. aip_agents/examples/tools/pii_demo_tools.py +189 -0
  139. aip_agents/examples/tools/random_chart_tool.py +142 -0
  140. aip_agents/examples/tools/serper_tool.py +202 -0
  141. aip_agents/examples/tools/stock_tools.py +82 -0
  142. aip_agents/examples/tools/table_generator_tool.py +167 -0
  143. aip_agents/examples/tools/time_tool.py +82 -0
  144. aip_agents/examples/tools/weather_forecast_tool.py +38 -0
  145. aip_agents/executor/agent_executor.py +473 -0
  146. aip_agents/executor/base.py +48 -0
  147. aip_agents/mcp/__init__.py +1 -0
  148. aip_agents/mcp/client/__init__.py +14 -0
  149. aip_agents/mcp/client/base_mcp_client.py +369 -0
  150. aip_agents/mcp/client/connection_manager.py +193 -0
  151. aip_agents/mcp/client/google_adk/__init__.py +11 -0
  152. aip_agents/mcp/client/google_adk/client.py +381 -0
  153. aip_agents/mcp/client/langchain/__init__.py +11 -0
  154. aip_agents/mcp/client/langchain/client.py +265 -0
  155. aip_agents/mcp/client/persistent_session.py +359 -0
  156. aip_agents/mcp/client/session_pool.py +351 -0
  157. aip_agents/mcp/client/transports.py +215 -0
  158. aip_agents/mcp/utils/__init__.py +7 -0
  159. aip_agents/mcp/utils/config_validator.py +139 -0
  160. aip_agents/memory/__init__.py +14 -0
  161. aip_agents/memory/adapters/__init__.py +10 -0
  162. aip_agents/memory/adapters/base_adapter.py +717 -0
  163. aip_agents/memory/adapters/mem0.py +84 -0
  164. aip_agents/memory/base.py +84 -0
  165. aip_agents/memory/constants.py +49 -0
  166. aip_agents/memory/factory.py +86 -0
  167. aip_agents/memory/guidance.py +20 -0
  168. aip_agents/memory/simple_memory.py +47 -0
  169. aip_agents/middleware/__init__.py +17 -0
  170. aip_agents/middleware/base.py +88 -0
  171. aip_agents/middleware/manager.py +128 -0
  172. aip_agents/middleware/todolist.py +274 -0
  173. aip_agents/schema/__init__.py +69 -0
  174. aip_agents/schema/a2a.py +56 -0
  175. aip_agents/schema/agent.py +111 -0
  176. aip_agents/schema/hitl.py +157 -0
  177. aip_agents/schema/langgraph.py +37 -0
  178. aip_agents/schema/model_id.py +97 -0
  179. aip_agents/schema/step_limit.py +108 -0
  180. aip_agents/schema/storage.py +40 -0
  181. aip_agents/sentry/__init__.py +11 -0
  182. aip_agents/sentry/sentry.py +151 -0
  183. aip_agents/storage/__init__.py +41 -0
  184. aip_agents/storage/base.py +85 -0
  185. aip_agents/storage/clients/__init__.py +12 -0
  186. aip_agents/storage/clients/minio_client.py +318 -0
  187. aip_agents/storage/config.py +62 -0
  188. aip_agents/storage/providers/__init__.py +15 -0
  189. aip_agents/storage/providers/base.py +106 -0
  190. aip_agents/storage/providers/memory.py +114 -0
  191. aip_agents/storage/providers/object_storage.py +214 -0
  192. aip_agents/tools/__init__.py +33 -0
  193. aip_agents/tools/bosa_tools.py +105 -0
  194. aip_agents/tools/browser_use/__init__.py +82 -0
  195. aip_agents/tools/browser_use/action_parser.py +103 -0
  196. aip_agents/tools/browser_use/browser_use_tool.py +1112 -0
  197. aip_agents/tools/browser_use/llm_config.py +120 -0
  198. aip_agents/tools/browser_use/minio_storage.py +198 -0
  199. aip_agents/tools/browser_use/schemas.py +119 -0
  200. aip_agents/tools/browser_use/session.py +76 -0
  201. aip_agents/tools/browser_use/session_errors.py +132 -0
  202. aip_agents/tools/browser_use/steel_session_recording.py +317 -0
  203. aip_agents/tools/browser_use/streaming.py +813 -0
  204. aip_agents/tools/browser_use/structured_data_parser.py +257 -0
  205. aip_agents/tools/browser_use/structured_data_recovery.py +204 -0
  206. aip_agents/tools/browser_use/types.py +78 -0
  207. aip_agents/tools/code_sandbox/__init__.py +26 -0
  208. aip_agents/tools/code_sandbox/constant.py +13 -0
  209. aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.py +257 -0
  210. aip_agents/tools/code_sandbox/e2b_sandbox_tool.py +411 -0
  211. aip_agents/tools/constants.py +165 -0
  212. aip_agents/tools/document_loader/__init__.py +44 -0
  213. aip_agents/tools/document_loader/base_reader.py +302 -0
  214. aip_agents/tools/document_loader/docx_reader_tool.py +68 -0
  215. aip_agents/tools/document_loader/excel_reader_tool.py +171 -0
  216. aip_agents/tools/document_loader/pdf_reader_tool.py +79 -0
  217. aip_agents/tools/document_loader/pdf_splitter.py +169 -0
  218. aip_agents/tools/gl_connector/__init__.py +5 -0
  219. aip_agents/tools/gl_connector/tool.py +351 -0
  220. aip_agents/tools/memory_search/__init__.py +22 -0
  221. aip_agents/tools/memory_search/base.py +200 -0
  222. aip_agents/tools/memory_search/mem0.py +258 -0
  223. aip_agents/tools/memory_search/schema.py +48 -0
  224. aip_agents/tools/memory_search_tool.py +26 -0
  225. aip_agents/tools/time_tool.py +117 -0
  226. aip_agents/tools/tool_config_injector.py +300 -0
  227. aip_agents/tools/web_search/__init__.py +15 -0
  228. aip_agents/tools/web_search/serper_tool.py +187 -0
  229. aip_agents/types/__init__.py +70 -0
  230. aip_agents/types/a2a_events.py +13 -0
  231. aip_agents/utils/__init__.py +79 -0
  232. aip_agents/utils/a2a_connector.py +1757 -0
  233. aip_agents/utils/artifact_helpers.py +502 -0
  234. aip_agents/utils/constants.py +22 -0
  235. aip_agents/utils/datetime/__init__.py +34 -0
  236. aip_agents/utils/datetime/normalization.py +231 -0
  237. aip_agents/utils/datetime/timezone.py +206 -0
  238. aip_agents/utils/env_loader.py +27 -0
  239. aip_agents/utils/event_handler_registry.py +58 -0
  240. aip_agents/utils/file_prompt_utils.py +176 -0
  241. aip_agents/utils/final_response_builder.py +211 -0
  242. aip_agents/utils/formatter_llm_client.py +231 -0
  243. aip_agents/utils/langgraph/__init__.py +19 -0
  244. aip_agents/utils/langgraph/converter.py +128 -0
  245. aip_agents/utils/langgraph/tool_managers/__init__.py +15 -0
  246. aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.py +99 -0
  247. aip_agents/utils/langgraph/tool_managers/base_tool_manager.py +66 -0
  248. aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.py +1071 -0
  249. aip_agents/utils/langgraph/tool_output_management.py +967 -0
  250. aip_agents/utils/logger.py +195 -0
  251. aip_agents/utils/metadata/__init__.py +27 -0
  252. aip_agents/utils/metadata/activity_metadata_helper.py +407 -0
  253. aip_agents/utils/metadata/activity_narrative/__init__.py +35 -0
  254. aip_agents/utils/metadata/activity_narrative/builder.py +817 -0
  255. aip_agents/utils/metadata/activity_narrative/constants.py +51 -0
  256. aip_agents/utils/metadata/activity_narrative/context.py +49 -0
  257. aip_agents/utils/metadata/activity_narrative/formatters.py +230 -0
  258. aip_agents/utils/metadata/activity_narrative/utils.py +35 -0
  259. aip_agents/utils/metadata/schemas/__init__.py +16 -0
  260. aip_agents/utils/metadata/schemas/activity_schema.py +29 -0
  261. aip_agents/utils/metadata/schemas/thinking_schema.py +31 -0
  262. aip_agents/utils/metadata/thinking_metadata_helper.py +38 -0
  263. aip_agents/utils/metadata_helper.py +358 -0
  264. aip_agents/utils/name_preprocessor/__init__.py +17 -0
  265. aip_agents/utils/name_preprocessor/base_name_preprocessor.py +73 -0
  266. aip_agents/utils/name_preprocessor/google_name_preprocessor.py +100 -0
  267. aip_agents/utils/name_preprocessor/name_preprocessor.py +87 -0
  268. aip_agents/utils/name_preprocessor/openai_name_preprocessor.py +48 -0
  269. aip_agents/utils/pii/__init__.py +25 -0
  270. aip_agents/utils/pii/pii_handler.py +397 -0
  271. aip_agents/utils/pii/pii_helper.py +207 -0
  272. aip_agents/utils/pii/uuid_deanonymizer_mapping.py +195 -0
  273. aip_agents/utils/reference_helper.py +273 -0
  274. aip_agents/utils/sse_chunk_transformer.py +831 -0
  275. aip_agents/utils/step_limit_manager.py +265 -0
  276. aip_agents/utils/token_usage_helper.py +156 -0
  277. aip_agents_binary-0.5.20.dist-info/METADATA +681 -0
  278. aip_agents_binary-0.5.20.dist-info/RECORD +280 -0
  279. aip_agents_binary-0.5.20.dist-info/WHEEL +5 -0
  280. aip_agents_binary-0.5.20.dist-info/top_level.txt +1 -0
@@ -0,0 +1,34 @@
1
+ """Example showing Google ADK agent with MCP tools integration using Streamable HTTP transport.
2
+
3
+ This example demonstrates how to create a Google ADK agent that can use tools
4
+ from MCP servers via Streamable HTTP transport.
5
+
6
+ Authors:
7
+ Fachriza Dian Adhiatma (fachriza.d.adhiatma@gdplabs.id)
8
+ Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
9
+ """
10
+
11
+ import asyncio
12
+
13
+ from aip_agents.agent.google_adk_agent import GoogleADKAgent
14
+ from aip_agents.examples.mcp_configs.configs import mcp_config_http
15
+
16
+
17
+ async def main():
18
+ """Demonstrates the GoogleADKAgent with MCP tools via Streamable HTTP transport."""
19
+ agent = GoogleADKAgent(
20
+ name="GoogleADKMCPHTTP",
21
+ instruction="""You are a helpful assistant that can use playwright tools to browse the web.
22
+ If a user ask something, you try to answer it by browsing the web via playwright tools
23
+ Do not ask for clarification, just answer to the best of your ability using playwright tools.""",
24
+ model="gemini-2.0-flash",
25
+ max_iterations=5,
26
+ )
27
+ agent.add_mcp_server(mcp_config_http)
28
+
29
+ response = await agent.arun(query="Who is the Winner of La Liga in 2024/2025 Season? Browse it.")
30
+ print(f"Response: {response.get('output')}")
31
+
32
+
33
+ if __name__ == "__main__":
34
+ asyncio.run(main())
@@ -0,0 +1,40 @@
1
+ """Example showing Google ADK agent with MCP tools integration.
2
+
3
+ Transport: Streamable HTTP
4
+ Streaming: Yes
5
+
6
+ This example demonstrates how to create a Google ADK agent that can use tools
7
+ from MCP servers via Streamable HTTP transport while streaming the response
8
+ in real-time.
9
+
10
+ Authors:
11
+ Fachriza Dian Adhiatma (fachriza.d.adhiatma@gdplabs.id)
12
+ Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
13
+ """
14
+
15
+ import asyncio
16
+
17
+ from aip_agents.agent.google_adk_agent import GoogleADKAgent
18
+ from aip_agents.examples.mcp_configs.configs import mcp_config_http
19
+
20
+
21
+ async def main():
22
+ """Demonstrates the GoogleADKAgent with MCP tools via Streamable HTTP transport and streaming."""
23
+ agent = GoogleADKAgent(
24
+ name="GoogleADKMCPHTTPStream",
25
+ instruction="""You are a helpful assistant that can use playwright tools to browse the web.
26
+ If a user ask something, you try to answer it by browsing the web via playwright tools
27
+ Do not ask for clarification, just answer to the best of your ability using playwright tools.""",
28
+ model="gemini-2.0-flash",
29
+ max_iterations=5,
30
+ )
31
+ agent.add_mcp_server(mcp_config_http)
32
+ query = (
33
+ "Go to huggingface.co, and then browse to the number 1 trending model page to find the abstract of the model"
34
+ )
35
+ async for chunk in agent.arun_stream(query=query):
36
+ print(chunk, end="", flush=True)
37
+
38
+
39
+ if __name__ == "__main__":
40
+ asyncio.run(main())
@@ -0,0 +1,44 @@
1
+ """Example showing Google ADK agent with MCP tools integration using SSE transport.
2
+
3
+ This example demonstrates how to create a Google ADK agent that can use tools
4
+ from MCP servers via Server-Sent Events (SSE) transport.
5
+
6
+ Authors:
7
+ Fachriza Dian Adhiatma (fachriza.d.adhiatma@gdplabs.id)
8
+ Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
9
+ """
10
+
11
+ import asyncio
12
+
13
+ from aip_agents.agent.google_adk_agent import GoogleADKAgent
14
+ from aip_agents.examples.mcp_configs.configs import mcp_config_sse
15
+
16
+
17
+ async def main():
18
+ """Demonstrates the GoogleADKAgent with MCP tools via SSE transport."""
19
+ agent_name = "GoogleADKMCPSSE"
20
+
21
+ agent = GoogleADKAgent(
22
+ name=agent_name,
23
+ instruction="""You are a helpful assistant that can use playwright tools to browse the web.
24
+ If a user ask something, you try to answer it by browsing the web via playwright tools
25
+ Do not ask for clarification, just answer to the best of your ability using playwright tools.""",
26
+ model="gemini-2.0-flash",
27
+ tools=[],
28
+ max_iterations=5,
29
+ )
30
+ agent.add_mcp_server(mcp_config_sse)
31
+
32
+ query = "How many trophies did FC Barcelona win in 2024/2025 season?"
33
+
34
+ print(f"--- Agent: {agent_name} ---")
35
+ print(f"Query: {query}")
36
+
37
+ print("\nRunning arun with MCP SSE tools...")
38
+ response = await agent.arun(query=query)
39
+ print(f"[arun] Final Response: {response.get('output')}")
40
+ print("--- End of Google ADK MCP SSE Example ---")
41
+
42
+
43
+ if __name__ == "__main__":
44
+ asyncio.run(main())
@@ -0,0 +1,48 @@
1
+ """Example showing Google ADK agent with MCP tools integration using SSE transport and streaming capabilities.
2
+
3
+ This example demonstrates how to create a Google ADK agent that can use tools
4
+ from MCP servers via Server-Sent Events (SSE) transport while streaming the response
5
+ in real-time.
6
+
7
+ Authors:
8
+ Fachriza Dian Adhiatma (fachriza.d.adhiatma@gdplabs.id)
9
+ Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
10
+ """
11
+
12
+ import asyncio
13
+
14
+ from aip_agents.agent.google_adk_agent import GoogleADKAgent
15
+ from aip_agents.examples.mcp_configs.configs import mcp_config_sse
16
+
17
+
18
+ async def main():
19
+ """Demonstrates the GoogleADKAgent with MCP tools via SSE transport and streaming."""
20
+ agent_name = "GoogleADKMCPSSEStream"
21
+
22
+ agent = GoogleADKAgent(
23
+ name=agent_name,
24
+ instruction="""You are a helpful assistant that can use playwright tools to browse the web.
25
+ If a user ask something, you try to answer it by browsing the web via playwright tools
26
+ Do not ask for clarification, just answer to the best of your ability using playwright tools.""",
27
+ model="gemini-2.0-flash",
28
+ tools=[],
29
+ max_iterations=5,
30
+ )
31
+ agent.add_mcp_server(mcp_config_sse)
32
+
33
+ query = "How many trophies did FC Barcelona win in 2024/2025 season?"
34
+
35
+ print(f"--- Agent: {agent_name} ---")
36
+ print(f"Query: {query}")
37
+
38
+ print("\nRunning arun_stream with MCP SSE tools...")
39
+ print("Streaming response:")
40
+
41
+ async for chunk in agent.arun_stream(query=query):
42
+ print(chunk, end="", flush=True)
43
+
44
+ print("\n--- End of Google ADK MCP SSE Streaming Example ---")
45
+
46
+
47
+ if __name__ == "__main__":
48
+ asyncio.run(main())
@@ -0,0 +1,44 @@
1
+ """Example showing Google ADK agent with MCP tools integration using stdio transport.
2
+
3
+ This example demonstrates how to create a Google ADK agent that can use tools
4
+ from MCP servers via stdio (standard input/output) transport, which runs the
5
+ MCP server as a subprocess.
6
+
7
+ Authors:
8
+ Fachriza Dian Adhiatma (fachriza.d.adhiatma@gdplabs.id)
9
+ Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
10
+ """
11
+
12
+ import asyncio
13
+
14
+ from aip_agents.agent.google_adk_agent import GoogleADKAgent
15
+ from aip_agents.examples.mcp_configs.configs import mcp_config_stdio
16
+
17
+
18
+ async def main():
19
+ """Demonstrates the GoogleADKAgent with MCP tools via stdio transport."""
20
+ agent_name = "GoogleADKMCPStdio"
21
+
22
+ agent = GoogleADKAgent(
23
+ name=agent_name,
24
+ instruction="""You are a helpful assistant that can provide weather forecasts.
25
+ For weather, specify the day in lowercase (e.g., 'monday').""",
26
+ model="gemini-2.0-flash",
27
+ tools=[],
28
+ max_iterations=5,
29
+ )
30
+ agent.add_mcp_server(mcp_config_stdio)
31
+
32
+ query = "What's the weather forecast for monday?" # Uses MCP weather tool
33
+
34
+ print(f"--- Agent: {agent_name} ---")
35
+ print(f"Query: {query}")
36
+
37
+ print("\nRunning arun with MCP stdio tools...")
38
+ response = await agent.arun(query=query)
39
+ print(f"[arun] Final Response: {response.get('output')}")
40
+ print("--- End of Google ADK MCP Stdio Example ---")
41
+
42
+
43
+ if __name__ == "__main__":
44
+ asyncio.run(main())
@@ -0,0 +1,48 @@
1
+ """Example showing Google ADK agent with MCP tools integration using stdio transport and streaming capabilities.
2
+
3
+ This example demonstrates how to create a Google ADK agent that can use tools
4
+ from MCP servers via stdio (standard input/output) transport while streaming the response
5
+ in real-time. The MCP server runs as a subprocess.
6
+
7
+ Authors:
8
+ Fachriza Dian Adhiatma (fachriza.d.adhiatma@gdplabs.id)
9
+ Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
10
+ """
11
+
12
+ import asyncio
13
+
14
+ from aip_agents.agent.google_adk_agent import GoogleADKAgent
15
+ from aip_agents.examples.mcp_configs.configs import mcp_config_stdio
16
+
17
+
18
+ async def main():
19
+ """Demonstrates the GoogleADKAgent with MCP tools via stdio transport and streaming."""
20
+ agent_name = "GoogleADKMCPStdioStream"
21
+
22
+ agent = GoogleADKAgent(
23
+ name=agent_name,
24
+ instruction="""You are a helpful assistant that can provide weather forecasts.
25
+ For weather, specify the day in lowercase (e.g., 'monday').
26
+ Explain your steps clearly for streaming demonstration.""",
27
+ model="gemini-2.0-flash",
28
+ tools=[],
29
+ max_iterations=5,
30
+ )
31
+ agent.add_mcp_server(mcp_config_stdio)
32
+
33
+ query = "What's the weather forecast for monday?" # Uses MCP weather tool
34
+
35
+ print(f"--- Agent: {agent_name} ---")
36
+ print(f"Query: {query}")
37
+
38
+ print("\nRunning arun_stream with MCP stdio tools...")
39
+ print("Streaming response:")
40
+
41
+ async for chunk in agent.arun_stream(query=query):
42
+ print(chunk, end="", flush=True)
43
+
44
+ print("\n--- End of Google ADK MCP Stdio Streaming Example ---")
45
+
46
+
47
+ if __name__ == "__main__":
48
+ asyncio.run(main())
@@ -0,0 +1,44 @@
1
+ """Minimal example demonstrating the GoogleADKAgent's streaming capabilities with async execution.
2
+
3
+ This example shows how to use the arun_stream method to process responses in real-time
4
+ with Google's Agent Development Kit (ADK).
5
+ """
6
+
7
+ import asyncio
8
+
9
+ from aip_agents.agent.google_adk_agent import GoogleADKAgent
10
+ from aip_agents.examples.tools.adk_arithmetic_tools import add_numbers
11
+
12
+
13
+ async def google_adk_example_stream():
14
+ """Demonstrates the GoogleADKAgent's arun_stream method."""
15
+ agent_name = "GoogleADKStreamingCalculator"
16
+
17
+ # Create the agent with simplified instructions for streaming
18
+ agent = GoogleADKAgent(
19
+ name=agent_name,
20
+ instruction="""You are a calculator assistant. When asked math problems,
21
+ extract numbers and call add_numbers tool to add them.
22
+ Explain your steps clearly for streaming demonstration.""",
23
+ model="gemini-2.0-flash",
24
+ tools=[add_numbers],
25
+ max_iterations=5, # Allow multiple tool calls if needed
26
+ )
27
+
28
+ # Use the same query as in LangGraph example for consistency
29
+ query = "What is the sum of 23 and 47? And then add 10 to that, then add 5 more."
30
+ print(f"--- Agent: {agent_name} ---")
31
+ print(f"Query: {query}")
32
+
33
+ print("\nRunning arun_stream...")
34
+ print("Streaming response:")
35
+
36
+ # Stream the response chunks
37
+ async for chunk in agent.arun_stream(query=query):
38
+ print(chunk, end="", flush=True)
39
+
40
+ print("\n--- End of Google ADK Streaming Example ---")
41
+
42
+
43
+ if __name__ == "__main__":
44
+ asyncio.run(google_adk_example_stream())
@@ -0,0 +1,28 @@
1
+ """Minimal LangChain agent example demonstrating asynchronous run."""
2
+
3
+ import asyncio
4
+
5
+ from langchain_openai import ChatOpenAI
6
+
7
+ from aip_agents.agent import LangChainAgent
8
+ from aip_agents.examples.tools.langchain_arithmetic_tools import add_numbers
9
+
10
+
11
+ async def langchain_example():
12
+ """Demonstrates the LangChainAgent's arun method."""
13
+ langchain_agent = LangChainAgent(
14
+ name="LangChainArithmeticAgent",
15
+ instruction="You are a helpful assistant that can add two numbers using the add_numbers tool.",
16
+ model=ChatOpenAI(model="gpt-4.1", temperature=0),
17
+ tools=[add_numbers],
18
+ )
19
+
20
+ response = await langchain_agent.arun(
21
+ query="What is the sum of 23 and 47? And then add 10 to that, then add 5 more."
22
+ )
23
+ print(response["output"])
24
+
25
+
26
+ if __name__ == "__main__":
27
+ # OPENAI_API_KEY should be set in the environment.
28
+ asyncio.run(langchain_example())
@@ -0,0 +1,15 @@
1
+ """Minimal LangChain agent example demonstrating asynchronous run."""
2
+
3
+ from aip_agents.agent import LangChainAgent
4
+ from aip_agents.examples.tools.langchain_weather_tool import weather_tool
5
+
6
+ if __name__ == "__main__":
7
+ langchain_agent = LangChainAgent(
8
+ name="LangChainWeatherAgent",
9
+ instruction="You are a helpful assistant that can get the weather in a given city using the get_weather tool.",
10
+ model="openai/gpt-4o",
11
+ tools=[weather_tool],
12
+ )
13
+
14
+ response = langchain_agent.run(query="What is the weather in Tokyo?")
15
+ print(response["output"])
@@ -0,0 +1,34 @@
1
+ """Example showing LangChain agent with MCP tools integration using Streamable HTTP transport.
2
+
3
+ Authors:
4
+ Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
5
+ """
6
+
7
+ import asyncio
8
+
9
+ from langchain_openai import ChatOpenAI
10
+
11
+ from aip_agents.agent import LangChainAgent
12
+ from aip_agents.examples.mcp_configs.configs import mcp_config_http
13
+
14
+
15
+ async def main():
16
+ """Demonstrates the LangChainAgent with MCP tools via Streamable HTTP transport."""
17
+ langchain_agent = LangChainAgent(
18
+ name="langchain_mcp_example",
19
+ instruction=(
20
+ "You are a helpful assistant that can browse the web. If you are blocked by captcha, try another website."
21
+ ),
22
+ model=ChatOpenAI(model="gpt-4.1", temperature=0),
23
+ )
24
+ langchain_agent.add_mcp_server(mcp_config_http)
25
+
26
+ response = await langchain_agent.arun(query="What's the best restaurant in San Francisco, search it")
27
+ print(response["output"])
28
+ print("-" * 50)
29
+ response = await langchain_agent.arun(query="What's the best restaurant in New York, search it")
30
+ print(response["output"])
31
+
32
+
33
+ if __name__ == "__main__":
34
+ asyncio.run(main())
@@ -0,0 +1,130 @@
1
+ """Interactive example showing LangChain agent with MCP tools integration using Streamable HTTP transport.
2
+
3
+ This script provides an interactive CLI interface with chat history functionality,
4
+ similar to hello_world_model_switch_cli.py, but with MCP tools via HTTP transport.
5
+
6
+ Authors:
7
+ Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
8
+ """
9
+
10
+ import asyncio
11
+ import os
12
+
13
+ from langchain_core.messages import AIMessage, HumanMessage, SystemMessage
14
+
15
+ from aip_agents.agent import LangChainAgent
16
+ from aip_agents.utils.env_loader import load_local_env
17
+
18
+ load_local_env()
19
+
20
+
21
+ def print_help():
22
+ """Prints available commands and their descriptions."""
23
+ help_text = (
24
+ "\nAvailable commands:\n"
25
+ " /help Show this help message\n"
26
+ " /exit Quit the chat\n"
27
+ "Type anything else to chat with the assistant.\n"
28
+ )
29
+ print(help_text)
30
+
31
+
32
+ def build_mcp_config_from_env() -> dict:
33
+ """Construct MCP configuration from environment variables.
34
+
35
+ Returns:
36
+ dict: MCP configuration dictionary.
37
+
38
+ Raises:
39
+ RuntimeError: If required environment variables are missing.
40
+ """
41
+ url = "https://huggingface.co/mcp"
42
+ token = os.getenv("TEST_HF_TOKEN")
43
+
44
+ missing = [
45
+ name
46
+ for name, value in {
47
+ "TEST_HF_TOKEN": token,
48
+ }.items()
49
+ if not value
50
+ ]
51
+
52
+ if missing:
53
+ missing_vars = ", ".join(missing)
54
+ raise RuntimeError(
55
+ "Missing required environment variables for MCP configuration: "
56
+ f"{missing_vars}. Please set them before running the example."
57
+ )
58
+
59
+ return {
60
+ "mcp_server": {
61
+ "url": url,
62
+ "transport": "http",
63
+ "headers": {
64
+ "Authorization": f"Bearer {token}",
65
+ },
66
+ }
67
+ }
68
+
69
+
70
+ async def main():
71
+ """Runs the interactive LangChainAgent with MCP tools via Streamable HTTP transport."""
72
+ print("Welcome to the Interactive LangChain MCP HTTP Example!")
73
+ print("🎯 Demonstrating MCP tools integration with HTTP transport:")
74
+ print(" • Web browsing capabilities via Playwright tools")
75
+ print()
76
+ print("Type your message, or type /help to show available commands, or /exit to quit.")
77
+
78
+ # Initialize the agent with MCP tools
79
+ langchain_agent = LangChainAgent(
80
+ name="interactive_langchain_mcp_example",
81
+ instruction=("You are a helpful assistant."),
82
+ # Using a basic model for the example - you can adjust this as needed
83
+ model="openai/gpt-4.1", # Changed to a string identifier for consistency
84
+ )
85
+ mcp_config = build_mcp_config_from_env()
86
+ langchain_agent.add_mcp_server(mcp_config)
87
+
88
+ # Conversation history as LangChain message objects
89
+ messages = [SystemMessage(content="You are a helpful assistant.")]
90
+
91
+ while True:
92
+ user_input = input("You: ").strip()
93
+ if user_input.lower() == "/help":
94
+ print_help()
95
+ continue
96
+ if user_input.lower() == "/exit":
97
+ print("Goodbye!")
98
+ break
99
+ elif user_input == "":
100
+ continue
101
+
102
+ # Add user message to history
103
+ messages.append(HumanMessage(content=user_input))
104
+
105
+ # Run the agent with history
106
+ try:
107
+ # Pass the conversation history to the agent
108
+ response = await langchain_agent.arun(query=user_input, messages=messages[:-1])
109
+
110
+ # Extract AI message (should be last in response state)
111
+ output = response.get("output")
112
+ ai_message = None
113
+
114
+ # Try to find the returned messages in the response (standard pattern)
115
+ if "messages" in response and response["messages"]:
116
+ # Use the last message as the AI reply
117
+ ai_message = response["messages"][-1]
118
+ elif output:
119
+ ai_message = AIMessage(content=output)
120
+ else:
121
+ ai_message = AIMessage(content=str(response))
122
+
123
+ messages.append(ai_message)
124
+ print(f"Agent: {ai_message.content}")
125
+ except Exception as e:
126
+ print(f"Error: {e}")
127
+
128
+
129
+ if __name__ == "__main__":
130
+ asyncio.run(main())
@@ -0,0 +1,42 @@
1
+ """Example showing LangChain agent with MCP tools integration.
2
+
3
+ Transport: Streamable HTTP
4
+ Streaming: Yes
5
+
6
+ This example demonstrates how to create a LangChain agent that can use tools
7
+ from MCP servers via Streamable HTTP transport while streaming the response
8
+ in real-time.
9
+
10
+ Authors:
11
+ Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
12
+ """
13
+
14
+ import asyncio
15
+
16
+ from langchain_openai import ChatOpenAI
17
+
18
+ from aip_agents.agent import LangChainAgent
19
+ from aip_agents.examples.mcp_configs.configs import mcp_config_http
20
+
21
+
22
+ async def main():
23
+ """Demonstrates the LangChainAgent with MCP tools via Streamable HTTP transport and streaming capabilities."""
24
+ langchain_agent = LangChainAgent(
25
+ name="langchain_mcp_stream_example",
26
+ instruction="""You are a helpful assistant that can browse the web.""",
27
+ model=ChatOpenAI(model="gpt-4.1", temperature=0),
28
+ )
29
+ langchain_agent.add_mcp_server(mcp_config_http)
30
+
31
+ async for chunk in langchain_agent.arun_stream(query="What's the latest news about FC Barcelona?"):
32
+ if isinstance(chunk, str):
33
+ print(chunk, end="", flush=True)
34
+
35
+ # run again to make sure it use persistent session
36
+ async for chunk in langchain_agent.arun_stream(query="What's the latest news about UEFA Champions League?"):
37
+ if isinstance(chunk, str):
38
+ print(chunk, end="", flush=True)
39
+
40
+
41
+ if __name__ == "__main__":
42
+ asyncio.run(main())