fast-agent-mcp 0.2.9__tar.gz → 0.2.11__tar.gz

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 (171) hide show
  1. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/.gitignore +2 -0
  2. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/PKG-INFO +7 -6
  3. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/README.md +5 -5
  4. fast_agent_mcp-0.2.11/examples/mcp/state-transfer/agent_one.py +18 -0
  5. fast_agent_mcp-0.2.11/examples/mcp/state-transfer/agent_two.py +18 -0
  6. fast_agent_mcp-0.2.11/examples/mcp/state-transfer/fastagent.config.yaml +27 -0
  7. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/pyproject.toml +9 -2
  8. fast_agent_mcp-0.2.9/src/mcp_agent/cli/commands/bootstrap.py → fast_agent_mcp-0.2.11/src/mcp_agent/cli/commands/quickstart.py +88 -21
  9. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/cli/commands/setup.py +10 -4
  10. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/cli/main.py +8 -6
  11. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/config.py +3 -0
  12. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/providers/augmented_llm_generic.py +2 -2
  13. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/providers/augmented_llm_openrouter.py +2 -2
  14. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/mcp_connection_manager.py +5 -1
  15. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/prompt_serialization.py +62 -37
  16. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/prompts/prompt_load.py +27 -27
  17. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/prompts/prompt_server.py +50 -1
  18. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp_server/agent_server.py +6 -20
  19. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp_server_registry.py +5 -1
  20. fast_agent_mcp-0.2.11/src/mcp_agent/resources/examples/in_dev/css-LICENSE.txt +21 -0
  21. fast_agent_mcp-0.2.11/src/mcp_agent/resources/examples/internal/simple.txt +2 -0
  22. fast_agent_mcp-0.2.11/src/mcp_agent/resources/examples/mcp/state-transfer/agent_one.py +18 -0
  23. fast_agent_mcp-0.2.11/src/mcp_agent/resources/examples/mcp/state-transfer/agent_two.py +18 -0
  24. fast_agent_mcp-0.2.11/src/mcp_agent/resources/examples/mcp/state-transfer/fastagent.config.yaml +27 -0
  25. fast_agent_mcp-0.2.11/src/mcp_agent/resources/examples/mcp/state-transfer/fastagent.secrets.yaml.example +14 -0
  26. fast_agent_mcp-0.2.11/src/mcp_agent/resources/examples/prompting/delimited_prompt.txt +14 -0
  27. fast_agent_mcp-0.2.11/src/mcp_agent/resources/examples/prompting/prompt1.txt +6 -0
  28. fast_agent_mcp-0.2.11/src/mcp_agent/resources/examples/workflows/short_story.txt +19 -0
  29. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/LICENSE +0 -0
  30. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/data-analysis/analysis-campaign.py +0 -0
  31. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/data-analysis/analysis.py +0 -0
  32. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/data-analysis/fastagent.config.yaml +0 -0
  33. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
  34. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/researcher/fastagent.config.yaml +0 -0
  35. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/researcher/researcher-eval.py +0 -0
  36. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/researcher/researcher-imp.py +0 -0
  37. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/researcher/researcher.py +0 -0
  38. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/workflows/chaining.py +0 -0
  39. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/workflows/evaluator.py +0 -0
  40. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/workflows/fastagent.config.yaml +0 -0
  41. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/workflows/graded_report.md +0 -0
  42. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/workflows/human_input.py +0 -0
  43. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/workflows/orchestrator.py +0 -0
  44. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/workflows/parallel.py +0 -0
  45. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/workflows/router.py +0 -0
  46. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/workflows/short_story.md +0 -0
  47. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/examples/workflows/short_story.txt +0 -0
  48. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/__init__.py +0 -0
  49. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/agents/__init__.py +0 -0
  50. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/agents/agent.py +0 -0
  51. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/agents/base_agent.py +0 -0
  52. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/agents/workflow/__init__.py +0 -0
  53. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/agents/workflow/chain_agent.py +0 -0
  54. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/agents/workflow/evaluator_optimizer.py +0 -0
  55. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/agents/workflow/orchestrator_agent.py +0 -0
  56. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/agents/workflow/orchestrator_models.py +0 -0
  57. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/agents/workflow/orchestrator_prompts.py +0 -0
  58. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/agents/workflow/parallel_agent.py +0 -0
  59. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/agents/workflow/router_agent.py +0 -0
  60. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/app.py +0 -0
  61. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/cli/__init__.py +0 -0
  62. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/cli/__main__.py +0 -0
  63. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/cli/commands/config.py +0 -0
  64. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/cli/terminal.py +0 -0
  65. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/console.py +0 -0
  66. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/context.py +0 -0
  67. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/context_dependent.py +0 -0
  68. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/core/__init__.py +0 -0
  69. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/core/agent_app.py +0 -0
  70. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/core/agent_types.py +0 -0
  71. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/core/direct_decorators.py +0 -0
  72. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/core/direct_factory.py +0 -0
  73. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/core/enhanced_prompt.py +0 -0
  74. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/core/error_handling.py +0 -0
  75. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/core/exceptions.py +0 -0
  76. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/core/fastagent.py +0 -0
  77. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/core/interactive_prompt.py +0 -0
  78. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/core/mcp_content.py +0 -0
  79. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/core/prompt.py +0 -0
  80. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/core/request_params.py +0 -0
  81. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/core/validation.py +0 -0
  82. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/event_progress.py +0 -0
  83. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/executor/__init__.py +0 -0
  84. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/executor/decorator_registry.py +0 -0
  85. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/executor/executor.py +0 -0
  86. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/executor/task_registry.py +0 -0
  87. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/executor/temporal.py +0 -0
  88. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/executor/workflow.py +0 -0
  89. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/executor/workflow_signal.py +0 -0
  90. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/human_input/__init__.py +0 -0
  91. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/human_input/handler.py +0 -0
  92. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/human_input/types.py +0 -0
  93. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/__init__.py +0 -0
  94. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/augmented_llm.py +0 -0
  95. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/augmented_llm_passthrough.py +0 -0
  96. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/augmented_llm_playback.py +0 -0
  97. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/memory.py +0 -0
  98. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/model_factory.py +0 -0
  99. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/prompt_utils.py +0 -0
  100. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/providers/__init__.py +0 -0
  101. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/providers/anthropic_utils.py +0 -0
  102. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/providers/augmented_llm_anthropic.py +0 -0
  103. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/providers/augmented_llm_deepseek.py +0 -0
  104. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/providers/augmented_llm_openai.py +0 -0
  105. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/providers/multipart_converter_anthropic.py +0 -0
  106. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/providers/multipart_converter_openai.py +0 -0
  107. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/providers/openai_multipart.py +0 -0
  108. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/providers/openai_utils.py +0 -0
  109. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/providers/sampling_converter_anthropic.py +0 -0
  110. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/providers/sampling_converter_openai.py +0 -0
  111. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/sampling_converter.py +0 -0
  112. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/llm/sampling_format_converter.py +0 -0
  113. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/logging/__init__.py +0 -0
  114. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/logging/events.py +0 -0
  115. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/logging/json_serializer.py +0 -0
  116. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/logging/listeners.py +0 -0
  117. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/logging/logger.py +0 -0
  118. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/logging/rich_progress.py +0 -0
  119. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/logging/tracing.py +0 -0
  120. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/logging/transport.py +0 -0
  121. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/__init__.py +0 -0
  122. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/gen_client.py +0 -0
  123. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/helpers/__init__.py +0 -0
  124. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/helpers/content_helpers.py +0 -0
  125. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/interfaces.py +0 -0
  126. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/logger_textio.py +0 -0
  127. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/mcp_agent_client_session.py +0 -0
  128. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/mcp_aggregator.py +0 -0
  129. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/mime_utils.py +0 -0
  130. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/prompt_message_multipart.py +0 -0
  131. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/prompt_render.py +0 -0
  132. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/prompts/__init__.py +0 -0
  133. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/prompts/__main__.py +0 -0
  134. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/prompts/prompt_constants.py +0 -0
  135. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/prompts/prompt_helpers.py +0 -0
  136. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/prompts/prompt_template.py +0 -0
  137. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/resource_utils.py +0 -0
  138. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp/sampling.py +0 -0
  139. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/mcp_server/__init__.py +0 -0
  140. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/progress_display.py +0 -0
  141. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/data-analysis/analysis-campaign.py +0 -0
  142. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/data-analysis/analysis.py +0 -0
  143. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/data-analysis/fastagent.config.yaml +0 -0
  144. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
  145. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/in_dev/agent_build.py +0 -0
  146. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/in_dev/slides.py +0 -0
  147. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/internal/agent.py +0 -0
  148. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/internal/fastagent.config.yaml +0 -0
  149. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/internal/history_transfer.py +0 -0
  150. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/internal/job.py +0 -0
  151. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/internal/prompt_category.py +0 -0
  152. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/internal/prompt_sizing.py +0 -0
  153. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/internal/sizer.py +0 -0
  154. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/internal/social.py +0 -0
  155. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/prompting/__init__.py +0 -0
  156. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/prompting/agent.py +0 -0
  157. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/prompting/fastagent.config.yaml +0 -0
  158. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/prompting/image_server.py +0 -0
  159. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/prompting/work_with_image.py +0 -0
  160. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/researcher/fastagent.config.yaml +0 -0
  161. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/researcher/researcher-eval.py +0 -0
  162. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/researcher/researcher-imp.py +0 -0
  163. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/researcher/researcher.py +0 -0
  164. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/workflows/chaining.py +0 -0
  165. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/workflows/evaluator.py +0 -0
  166. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/workflows/fastagent.config.yaml +0 -0
  167. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/workflows/human_input.py +0 -0
  168. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/workflows/orchestrator.py +0 -0
  169. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/workflows/parallel.py +0 -0
  170. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/resources/examples/workflows/router.py +0 -0
  171. {fast_agent_mcp-0.2.9 → fast_agent_mcp-0.2.11}/src/mcp_agent/ui/console_display.py +0 -0
@@ -191,3 +191,5 @@ fastagent.jsonl
191
191
  tests/integration/resources/fastagent.jsonl
192
192
  fastagent.jsonl
193
193
  tests/e2e/workflow/weather_location.txt
194
+ tests/integration/prompt-state/multipart.json
195
+ tests/integration/prompt-state/history.json
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fast-agent-mcp
3
- Version: 0.2.9
3
+ Version: 0.2.11
4
4
  Summary: Define, Prompt and Test MCP enabled Agents and Workflows
5
5
  Author-email: Shaun Smith <fastagent@llmindset.co.uk>, Sarmad Qadri <sarmad@lastmileai.dev>
6
6
  License: Apache License
@@ -209,6 +209,7 @@ Classifier: License :: OSI Approved :: Apache Software License
209
209
  Classifier: Operating System :: OS Independent
210
210
  Classifier: Programming Language :: Python :: 3
211
211
  Requires-Python: >=3.10
212
+ Requires-Dist: a2a-types>=0.1.0
212
213
  Requires-Dist: aiohttp>=3.11.13
213
214
  Requires-Dist: anthropic>=0.49.0
214
215
  Requires-Dist: fastapi>=0.115.6
@@ -252,7 +253,7 @@ Description-Content-Type: text/markdown
252
253
  ## Overview
253
254
 
254
255
  > [!TIP]
255
- > Documentation site is in production here : https://fast-agent.ai. Feel free to feed back what's helpful and what's not.
256
+ > Documentation site is in production here : https://fast-agent.ai. Feel free to feed back what's helpful and what's not. llms.txt link is here: https://fast-agent.ai/llms.txt
256
257
 
257
258
  **`fast-agent`** enables you to create and interact with sophisticated Agents and Workflows in minutes. It is the first framework with complete, end-to-end tested MCP Feature support including Sampling. Both Anthropic (Haiku, Sonnet, Opus) and OpenAI models (gpt-4o family, o1/o3 family) are supported.
258
259
 
@@ -282,10 +283,10 @@ uv pip install fast-agent-mcp # install fast-agent!
282
283
  fast-agent setup # create an example agent and config files
283
284
  uv run agent.py # run your first agent
284
285
  uv run agent.py --model=o3-mini.low # specify a model
285
- fast-agent bootstrap workflow # create "building effective agents" examples
286
+ fast-agent quickstart workflow # create "building effective agents" examples
286
287
  ```
287
288
 
288
- Other bootstrap examples include a Researcher Agent (with Evaluator-Optimizer workflow) and Data Analysis Agent (similar to the ChatGPT experience), demonstrating MCP Roots support.
289
+ Other quickstart examples include a Researcher Agent (with Evaluator-Optimizer workflow) and Data Analysis Agent (similar to the ChatGPT experience), demonstrating MCP Roots support.
289
290
 
290
291
  > [!TIP]
291
292
  > Windows Users - there are a couple of configuration changes needed for the Filesystem and Docker MCP Servers - necessary changes are detailed within the configuration files.
@@ -341,7 +342,7 @@ Specify a model with the `--model` switch - for example `uv run sizer.py --model
341
342
 
342
343
  ### Combining Agents and using MCP Servers
343
344
 
344
- _To generate examples use `fast-agent bootstrap workflow`. This example can be run with `uv run workflow/chaining.py`. fast-agent looks for configuration files in the current directory before checking parent directories recursively._
345
+ _To generate examples use `fast-agent quickstart workflow`. This example can be run with `uv run workflow/chaining.py`. fast-agent looks for configuration files in the current directory before checking parent directories recursively._
345
346
 
346
347
  Agents can be chained to build a workflow, using MCP Servers defined in the `fastagent.config.yaml` file:
347
348
 
@@ -463,7 +464,7 @@ async with fast.run() as agent:
463
464
 
464
465
  When used in a workflow, it returns the last `generator` message as the result.
465
466
 
466
- See the `evaluator.py` workflow example, or `fast-agent bootstrap researcher` for a more complete example.
467
+ See the `evaluator.py` workflow example, or `fast-agent quickstart researcher` for a more complete example.
467
468
 
468
469
  ### Router
469
470
 
@@ -10,7 +10,7 @@
10
10
  ## Overview
11
11
 
12
12
  > [!TIP]
13
- > Documentation site is in production here : https://fast-agent.ai. Feel free to feed back what's helpful and what's not.
13
+ > Documentation site is in production here : https://fast-agent.ai. Feel free to feed back what's helpful and what's not. llms.txt link is here: https://fast-agent.ai/llms.txt
14
14
 
15
15
  **`fast-agent`** enables you to create and interact with sophisticated Agents and Workflows in minutes. It is the first framework with complete, end-to-end tested MCP Feature support including Sampling. Both Anthropic (Haiku, Sonnet, Opus) and OpenAI models (gpt-4o family, o1/o3 family) are supported.
16
16
 
@@ -40,10 +40,10 @@ uv pip install fast-agent-mcp # install fast-agent!
40
40
  fast-agent setup # create an example agent and config files
41
41
  uv run agent.py # run your first agent
42
42
  uv run agent.py --model=o3-mini.low # specify a model
43
- fast-agent bootstrap workflow # create "building effective agents" examples
43
+ fast-agent quickstart workflow # create "building effective agents" examples
44
44
  ```
45
45
 
46
- Other bootstrap examples include a Researcher Agent (with Evaluator-Optimizer workflow) and Data Analysis Agent (similar to the ChatGPT experience), demonstrating MCP Roots support.
46
+ Other quickstart examples include a Researcher Agent (with Evaluator-Optimizer workflow) and Data Analysis Agent (similar to the ChatGPT experience), demonstrating MCP Roots support.
47
47
 
48
48
  > [!TIP]
49
49
  > Windows Users - there are a couple of configuration changes needed for the Filesystem and Docker MCP Servers - necessary changes are detailed within the configuration files.
@@ -99,7 +99,7 @@ Specify a model with the `--model` switch - for example `uv run sizer.py --model
99
99
 
100
100
  ### Combining Agents and using MCP Servers
101
101
 
102
- _To generate examples use `fast-agent bootstrap workflow`. This example can be run with `uv run workflow/chaining.py`. fast-agent looks for configuration files in the current directory before checking parent directories recursively._
102
+ _To generate examples use `fast-agent quickstart workflow`. This example can be run with `uv run workflow/chaining.py`. fast-agent looks for configuration files in the current directory before checking parent directories recursively._
103
103
 
104
104
  Agents can be chained to build a workflow, using MCP Servers defined in the `fastagent.config.yaml` file:
105
105
 
@@ -221,7 +221,7 @@ async with fast.run() as agent:
221
221
 
222
222
  When used in a workflow, it returns the last `generator` message as the result.
223
223
 
224
- See the `evaluator.py` workflow example, or `fast-agent bootstrap researcher` for a more complete example.
224
+ See the `evaluator.py` workflow example, or `fast-agent quickstart researcher` for a more complete example.
225
225
 
226
226
  ### Router
227
227
 
@@ -0,0 +1,18 @@
1
+ import asyncio
2
+
3
+ from mcp_agent.core.fastagent import FastAgent
4
+
5
+ # Create the application
6
+ fast = FastAgent("fast-agent agent_one (mcp server)")
7
+
8
+
9
+ # Define the agent
10
+ @fast.agent(name="agent_one", instruction="You are a helpful AI Agent.")
11
+ async def main():
12
+ # use the --model command line switch or agent arguments to change model
13
+ async with fast.run() as agent:
14
+ await agent.interactive()
15
+
16
+
17
+ if __name__ == "__main__":
18
+ asyncio.run(main())
@@ -0,0 +1,18 @@
1
+ import asyncio
2
+
3
+ from mcp_agent.core.fastagent import FastAgent
4
+
5
+ # Create the application
6
+ fast = FastAgent("fast-agent agent_two (mcp client)")
7
+
8
+
9
+ # Define the agent
10
+ @fast.agent(name="agent_two", instruction="You are a helpful AI Agent.", servers=["agent_one"])
11
+ async def main():
12
+ # use the --model command line switch or agent arguments to change model
13
+ async with fast.run() as agent:
14
+ await agent.interactive()
15
+
16
+
17
+ if __name__ == "__main__":
18
+ asyncio.run(main())
@@ -0,0 +1,27 @@
1
+ # Model string takes format:
2
+ # <provider>.<model_string>.<reasoning_effort?> (e.g. anthropic.claude-3-5-sonnet-20241022 or openai.o3-mini.low)
3
+ #
4
+ # Can be overriden with a command line switch --model=<model>, or within the Agent decorator.
5
+ # Check here for current details: https://fast-agent.ai/models/
6
+
7
+ # set the default model for fast-agent below:
8
+ default_model: gpt-4o
9
+
10
+ # Logging and Console Configuration:
11
+ logger:
12
+ # Switched off to avoid polluting the console
13
+ progress_display: false
14
+
15
+ # Show chat User/Assistant messages on the console
16
+ show_chat: true
17
+ # Show tool calls on the console
18
+ show_tools: true
19
+ # Truncate long tool responses on the console
20
+ truncate_tools: true
21
+
22
+ # MCP Servers
23
+ mcp:
24
+ servers:
25
+ agent_one:
26
+ transport: sse
27
+ url: http://localhost:8001/sse
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fast-agent-mcp"
3
- version = "0.2.9"
3
+ version = "0.2.11"
4
4
  description = "Define, Prompt and Test MCP enabled Agents and Workflows"
5
5
  readme = "README.md"
6
6
  license = { file = "LICENSE" }
@@ -30,6 +30,7 @@ dependencies = [
30
30
  "openai>=1.63.2",
31
31
  "prompt-toolkit>=3.0.50",
32
32
  "aiohttp>=3.11.13",
33
+ "a2a-types>=0.1.0",
33
34
  ]
34
35
 
35
36
  [project.optional-dependencies]
@@ -64,6 +65,8 @@ include = [
64
65
  "src/mcp_agent/**/*.yaml",
65
66
  "src/mcp_agent/**/*.yml",
66
67
  "src/mcp_agent/**/*.csv",
68
+ "src/mcp_agent/**/*.txt",
69
+ "src/mcp_agent/**/*.example",
67
70
  "examples/**/*.py",
68
71
  "examples/**/*.yaml",
69
72
  "examples/**/*.yml",
@@ -72,6 +75,10 @@ include = [
72
75
  "examples/**/*.md",
73
76
  "examples/**/*.css",
74
77
  "examples/**/mount-point/*.csv",
78
+ "examples/workflows/short_story.txt",
79
+ "examples/mcp/**/*.py",
80
+ "examples/mcp/**/*.yaml",
81
+ "examples/mcp/**/*.example",
75
82
  ]
76
83
 
77
84
  [tool.pytest.ini_options]
@@ -95,11 +102,11 @@ dev = [
95
102
  "tomli>=2.2.1",
96
103
  "pytest>=7.4.0",
97
104
  "pytest-asyncio>=0.21.1",
105
+ "pytest-cov>=6.1.1",
98
106
  ]
99
107
 
100
108
  [project.scripts]
101
109
  fast-agent = "mcp_agent.cli.__main__:app"
102
- fast_agent = "mcp_agent.cli.__main__:app"
103
110
  fastagent = "mcp_agent.cli.__main__:app"
104
111
  silsila = "mcp_agent.cli.__main__:app"
105
112
  prompt-server = "mcp_agent.mcp.prompts.__main__:main"
@@ -47,6 +47,18 @@ EXAMPLE_TYPES = {
47
47
  "mount_point_files": ["WA_Fn-UseC_-HR-Employee-Attrition.csv"],
48
48
  "create_subdir": True,
49
49
  },
50
+ "state-transfer": {
51
+ "description": "Example demonstrating state transfer between multiple agents.\n"
52
+ "Shows how state can be passed between agent runs to maintain context.\n"
53
+ "Creates examples in a 'state-transfer' subdirectory.",
54
+ "files": [
55
+ "agent_one.py",
56
+ "agent_two.py",
57
+ "fastagent.config.yaml",
58
+ "fastagent.secrets.yaml.example",
59
+ ],
60
+ "create_subdir": True,
61
+ },
50
62
  }
51
63
 
52
64
 
@@ -75,28 +87,54 @@ def copy_example_files(example_type: str, target_dir: Path, force: bool = False)
75
87
 
76
88
  try:
77
89
  # First try to find examples in the package resources
78
- source_dir = (
79
- files("mcp_agent")
80
- .joinpath("resources")
81
- .joinpath("examples")
82
- .joinpath("workflows" if example_type == "workflow" else f"{example_type}")
83
- )
90
+ if example_type == "state-transfer":
91
+ # The state-transfer example is in the mcp subdirectory
92
+ source_dir = (
93
+ files("mcp_agent")
94
+ .joinpath("resources")
95
+ .joinpath("examples")
96
+ .joinpath("mcp")
97
+ .joinpath("state-transfer")
98
+ )
99
+ else:
100
+ # Other examples are at the top level of examples
101
+ source_dir = (
102
+ files("mcp_agent")
103
+ .joinpath("resources")
104
+ .joinpath("examples")
105
+ .joinpath("workflows" if example_type == "workflow" else f"{example_type}")
106
+ )
107
+
108
+ # Check if we found a valid directory
84
109
  if not source_dir.is_dir():
110
+ console.print(
111
+ f"[yellow]Resource directory not found: {source_dir}. Falling back to development mode.[/yellow]"
112
+ )
85
113
  # Fall back to the top-level directory for development mode
86
114
  package_dir = Path(__file__).parent.parent.parent.parent.parent
115
+ if example_type == "state-transfer":
116
+ source_dir = package_dir / "examples" / "mcp" / "state-transfer"
117
+ else:
118
+ source_dir = (
119
+ package_dir
120
+ / "examples"
121
+ / ("workflows" if example_type == "workflow" else f"{example_type}")
122
+ )
123
+ console.print(f"[blue]Using development directory: {source_dir}[/blue]")
124
+ except (ImportError, ModuleNotFoundError, ValueError) as e:
125
+ console.print(
126
+ f"[yellow]Error accessing resources: {e}. Falling back to development mode.[/yellow]"
127
+ )
128
+ # Fall back to the top-level directory if the resource finding fails
129
+ package_dir = Path(__file__).parent.parent.parent.parent.parent
130
+ if example_type == "state-transfer":
131
+ source_dir = package_dir / "examples" / "mcp" / "state-transfer"
132
+ else:
87
133
  source_dir = (
88
134
  package_dir
89
135
  / "examples"
90
136
  / ("workflows" if example_type == "workflow" else f"{example_type}")
91
137
  )
92
- except (ImportError, ModuleNotFoundError, ValueError):
93
- # Fall back to the top-level directory if the resource finding fails
94
- package_dir = Path(__file__).parent.parent.parent.parent.parent
95
- source_dir = (
96
- package_dir
97
- / "examples"
98
- / ("workflows" if example_type == "workflow" else f"{example_type}")
99
- )
100
138
 
101
139
  if not source_dir.exists():
102
140
  console.print(f"[red]Error: Source directory not found: {source_dir}[/red]")
@@ -116,7 +154,14 @@ def copy_example_files(example_type: str, target_dir: Path, force: bool = False)
116
154
  continue
117
155
 
118
156
  shutil.copy2(source, target)
119
- created.append(str(target.relative_to(target_dir.parent)))
157
+ try:
158
+ # This can fail in test environments where the target is not relative to target_dir.parent
159
+ rel_path = str(target.relative_to(target_dir.parent))
160
+ except ValueError:
161
+ # Fallback to just the filename
162
+ rel_path = f"{example_type}/{filename}"
163
+
164
+ created.append(rel_path)
120
165
  console.print(f"[green]Created[/green] {created[-1]}")
121
166
 
122
167
  except Exception as e:
@@ -174,15 +219,17 @@ def show_overview() -> None:
174
219
  # Show usage instructions in a panel
175
220
  usage_text = (
176
221
  "[bold]Commands:[/bold]\n"
177
- " fastagent bootstrap workflow DIR Create workflow examples in DIR\n"
178
- " fastagent bootstrap researcher DIR Create researcher example in 'researcher' subdirectory\n"
179
- " fastagent bootstrap data-analysis DIR Create data analysis examples in 'data-analysis' subdirectory\n\n"
222
+ " fastagent quickstart workflow DIR Create workflow examples in DIR\n"
223
+ " fastagent quickstart researcher DIR Create researcher example in 'researcher' subdirectory\n"
224
+ " fastagent quickstart data-analysis DIR Create data analysis examples in 'data-analysis' subdirectory\n"
225
+ " fastagent quickstart state-transfer DIR Create state transfer examples in 'state-transfer' subdirectory\n\n"
180
226
  "[bold]Options:[/bold]\n"
181
227
  " --force Overwrite existing files\n\n"
182
228
  "[bold]Examples:[/bold]\n"
183
- " fastagent bootstrap workflow . Create in current directory\n"
184
- " fastagent bootstrap researcher . Create in researcher subdirectory\n"
185
- " fastagent bootstrap data-analysis . --force Force overwrite files in data-analysis subdirectory"
229
+ " fastagent quickstart workflow . Create in current directory\n"
230
+ " fastagent quickstart researcher . Create in researcher subdirectory\n"
231
+ " fastagent quickstart data-analysis . --force Force overwrite files in data-analysis subdirectory\n"
232
+ " fastagent quickstart state-transfer . Create state transfer examples"
186
233
  )
187
234
  console.print(Panel(usage_text, title="Usage", border_style="blue"))
188
235
 
@@ -241,6 +288,24 @@ def data_analysis(
241
288
  _show_completion_message("data-analysis", created)
242
289
 
243
290
 
291
+ @app.command()
292
+ def state_transfer(
293
+ directory: Path = typer.Argument(
294
+ Path("."),
295
+ help="Directory where state transfer examples will be created (in 'state-transfer' subdirectory)",
296
+ ),
297
+ force: bool = typer.Option(False, "--force", "-f", help="Force overwrite existing files"),
298
+ ) -> None:
299
+ """Create state transfer example showing state passing between agents."""
300
+ target_dir = directory.resolve()
301
+ if not target_dir.exists():
302
+ target_dir.mkdir(parents=True)
303
+ console.print(f"Created directory: {target_dir}")
304
+
305
+ created = copy_example_files("state-transfer", target_dir, force)
306
+ _show_completion_message("state-transfer", created)
307
+
308
+
244
309
  def _show_completion_message(example_type: str, created: list[str]) -> None:
245
310
  """Show completion message and next steps."""
246
311
  if created:
@@ -275,6 +340,8 @@ def _show_completion_message(example_type: str, created: list[str]) -> None:
275
340
  console.print(
276
341
  "On Windows platforms, please edit the fastagent.config.yaml and adjust the volume mount point."
277
342
  )
343
+ elif example_type == "state-transfer":
344
+ console.print("Check https://fast-agent.ai for quick start walkthroughs")
278
345
  else:
279
346
  console.print("\n[yellow]No files were created.[/yellow]")
280
347
 
@@ -55,12 +55,18 @@ FASTAGENT_SECRETS_TEMPLATE = """
55
55
  # FastAgent Secrets Configuration
56
56
  # WARNING: Keep this file secure and never commit to version control
57
57
 
58
- # Alternatively set OPENAI_API_KEY and ANTHROPIC_API_KEY environment variables. Config file takes precedence.
58
+ # Alternatively set OPENAI_API_KEY, ANTHROPIC_API_KEY or other environment variables.
59
+ # Keys in the configuration file override environment variables.
59
60
 
60
61
  openai:
61
62
  api_key: <your-api-key-here>
62
63
  anthropic:
63
64
  api_key: <your-api-key-here>
65
+ deepseek:
66
+ api_key: <your-api-key-here>
67
+ openrouter:
68
+ api_key: <your-api-key-here>
69
+
64
70
 
65
71
  # Example of setting an MCP Server environment variable
66
72
  mcp:
@@ -116,15 +122,15 @@ import asyncio
116
122
  from mcp_agent.core.fastagent import FastAgent
117
123
 
118
124
  # Create the application
119
- fast = FastAgent("FastAgent Example")
125
+ fast = FastAgent("fast-agent example")
120
126
 
121
127
 
122
128
  # Define the agent
123
- @fast.agent(instruction="You are a helpful AI Agent", servers=["fetch"])
129
+ @fast.agent(instruction="You are a helpful AI Agent")
124
130
  async def main():
125
131
  # use the --model command line switch or agent arguments to change model
126
132
  async with fast.run() as agent:
127
- await agent()
133
+ await agent.interactive()
128
134
 
129
135
 
130
136
  if __name__ == "__main__":
@@ -4,7 +4,7 @@ import typer
4
4
  from rich.console import Console
5
5
  from rich.table import Table
6
6
 
7
- from mcp_agent.cli.commands import bootstrap, setup
7
+ from mcp_agent.cli.commands import quickstart, setup
8
8
  from mcp_agent.cli.terminal import Application
9
9
 
10
10
  app = typer.Typer(
@@ -14,7 +14,8 @@ app = typer.Typer(
14
14
 
15
15
  # Subcommands
16
16
  app.add_typer(setup.app, name="setup", help="Set up a new agent project")
17
- app.add_typer(bootstrap.app, name="bootstrap", help="Create example applications")
17
+ app.add_typer(quickstart.app, name="bootstrap", help="Create example applications")
18
+ app.add_typer(quickstart.app, name="quickstart", help="Create example applications")
18
19
 
19
20
  # Shared application context
20
21
  application = Application()
@@ -39,7 +40,7 @@ def show_welcome() -> None:
39
40
  table.add_column("Description")
40
41
 
41
42
  table.add_row("setup", "Set up a new agent project with configuration files")
42
- table.add_row("bootstrap", "Create example applications (workflow, researcher, etc.)")
43
+ table.add_row("quickstart", "Create example applications (workflow, researcher, etc.)")
43
44
  # table.add_row("config", "Manage agent configuration settings")
44
45
 
45
46
  console.print(table)
@@ -48,12 +49,12 @@ def show_welcome() -> None:
48
49
  console.print("1. Set up a new project:")
49
50
  console.print(" fastagent setup")
50
51
  console.print("\n2. Create Building Effective Agents workflow examples:")
51
- console.print(" fastagent bootstrap workflow")
52
+ console.print(" fastagent quickstart workflow")
52
53
  console.print("\n3. Explore other examples:")
53
- console.print(" fastagent bootstrap")
54
+ console.print(" fastagent quickstart")
54
55
 
55
56
  console.print("\nUse --help with any command for more information")
56
- console.print("Example: fastagent bootstrap --help")
57
+ console.print("Example: fastagent quickstart --help")
57
58
 
58
59
 
59
60
  @app.callback(invoke_without_command=True)
@@ -74,6 +75,7 @@ def main(
74
75
  # Handle version flag
75
76
  if version:
76
77
  from importlib.metadata import version as get_version
78
+
77
79
  try:
78
80
  app_version = get_version("fast-agent-mcp")
79
81
  except: # noqa: E722
@@ -70,6 +70,9 @@ class MCPServerSettings(BaseModel):
70
70
  """The arguments for the server command."""
71
71
 
72
72
  read_timeout_seconds: int | None = None
73
+ """The timeout in seconds for the session."""
74
+
75
+ read_transport_sse_timeout_seconds: int = 300
73
76
  """The timeout in seconds for the server connection."""
74
77
 
75
78
  url: str | None = None
@@ -40,8 +40,8 @@ class GenericAugmentedLLM(OpenAIAugmentedLLM):
40
40
  return api_key or "ollama"
41
41
 
42
42
  def _base_url(self) -> str:
43
- base_url = None
43
+ base_url = os.getenv("GENERIC_BASE_URL", DEFAULT_OLLAMA_BASE_URL)
44
44
  if self.context.config and self.context.config.generic:
45
45
  base_url = self.context.config.generic.base_url
46
46
 
47
- return base_url if base_url else DEFAULT_OLLAMA_BASE_URL
47
+ return base_url
@@ -4,7 +4,7 @@ from mcp_agent.core.exceptions import ProviderKeyError
4
4
  from mcp_agent.core.request_params import RequestParams
5
5
  from mcp_agent.llm.providers.augmented_llm_openai import OpenAIAugmentedLLM
6
6
 
7
- OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1"
7
+ DEFAULT_OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1"
8
8
  # No single default model for OpenRouter, users must specify full path
9
9
  DEFAULT_OPENROUTER_MODEL = None
10
10
 
@@ -63,7 +63,7 @@ class OpenRouterAugmentedLLM(OpenAIAugmentedLLM):
63
63
 
64
64
  def _base_url(self) -> str:
65
65
  """Retrieve the OpenRouter base URL from config or use the default."""
66
- base_url = OPENROUTER_BASE_URL # Default
66
+ base_url = os.getenv("OPENROUTER_BASE_URL", DEFAULT_OPENROUTER_BASE_URL) # Default
67
67
  config = self.context.config
68
68
 
69
69
  # Check config file for override
@@ -271,7 +271,11 @@ class MCPConnectionManager(ContextDependent):
271
271
  logger.debug(f"{server_name}: Creating stdio client with custom error handler")
272
272
  return stdio_client(server_params, errlog=error_handler)
273
273
  elif config.transport == "sse":
274
- return sse_client(config.url, config.headers)
274
+ return sse_client(
275
+ config.url,
276
+ config.headers,
277
+ sse_read_timeout=config.read_transport_sse_timeout_seconds,
278
+ )
275
279
  else:
276
280
  raise ValueError(f"Unsupported transport: {config.transport}")
277
281