fast-agent-mcp 0.1.12__tar.gz → 0.2.0__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.
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/.gitignore +2 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/PKG-INFO +3 -4
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/data-analysis/analysis-campaign.py +2 -2
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/data-analysis/analysis.py +2 -2
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/researcher/researcher-eval.py +2 -2
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/researcher/researcher-imp.py +4 -5
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/researcher/researcher.py +2 -4
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/workflows/chaining.py +3 -11
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/workflows/evaluator.py +2 -3
- fast_agent_mcp-0.2.0/examples/workflows/graded_report.md +89 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/workflows/human_input.py +3 -2
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/workflows/orchestrator.py +5 -9
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/workflows/parallel.py +8 -28
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/workflows/router.py +2 -1
- fast_agent_mcp-0.2.0/examples/workflows/short_story.md +13 -0
- fast_agent_mcp-0.2.0/examples/workflows/short_story.txt +19 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/pyproject.toml +27 -16
- fast_agent_mcp-0.2.0/src/mcp_agent/__init__.py +75 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/agents/agent.py +96 -0
- fast_agent_mcp-0.1.12/src/mcp_agent/agents/agent.py → fast_agent_mcp-0.2.0/src/mcp_agent/agents/base_agent.py +223 -151
- fast_agent_mcp-0.2.0/src/mcp_agent/agents/workflow/__init__.py +1 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/agents/workflow/chain_agent.py +173 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/agents/workflow/evaluator_optimizer.py +362 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/agents/workflow/orchestrator_agent.py +591 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/workflows/orchestrator → fast_agent_mcp-0.2.0/src/mcp_agent/agents/workflow}/orchestrator_models.py +11 -21
- fast_agent_mcp-0.2.0/src/mcp_agent/agents/workflow/parallel_agent.py +182 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/agents/workflow/router_agent.py +307 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/app.py +15 -19
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/cli/commands/bootstrap.py +19 -38
- fast_agent_mcp-0.2.0/src/mcp_agent/cli/commands/config.py +11 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/cli/commands/setup.py +7 -14
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/cli/main.py +7 -10
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/cli/terminal.py +3 -3
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/config.py +25 -40
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/context.py +12 -21
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/context_dependent.py +3 -5
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/core/agent_types.py +10 -7
- fast_agent_mcp-0.2.0/src/mcp_agent/core/direct_agent_app.py +179 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/core/direct_decorators.py +443 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/core/direct_factory.py +476 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/core/enhanced_prompt.py +23 -55
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/core/exceptions.py +8 -8
- fast_agent_mcp-0.2.0/src/mcp_agent/core/fastagent.py +343 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/core/interactive_prompt.py +424 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/core/mcp_content.py +17 -17
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/core/prompt.py +6 -9
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/core/request_params.py +6 -3
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/core/validation.py +92 -18
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/executor/decorator_registry.py +9 -17
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/executor/executor.py +8 -17
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/executor/task_registry.py +2 -4
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/executor/temporal.py +19 -41
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/executor/workflow.py +3 -5
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/executor/workflow_signal.py +15 -21
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/human_input/handler.py +4 -7
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/human_input/types.py +2 -3
- fast_agent_mcp-0.2.0/src/mcp_agent/llm/__init__.py +2 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/llm/augmented_llm.py +450 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/llm/augmented_llm_passthrough.py +162 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/llm/augmented_llm_playback.py +83 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/llm/memory.py +103 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/workflows → fast_agent_mcp-0.2.0/src/mcp_agent}/llm/model_factory.py +22 -16
- {fast_agent_mcp-0.1.12/src/mcp_agent/workflows → fast_agent_mcp-0.2.0/src/mcp_agent}/llm/prompt_utils.py +1 -3
- fast_agent_mcp-0.2.0/src/mcp_agent/llm/providers/__init__.py +8 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/workflows/llm → fast_agent_mcp-0.2.0/src/mcp_agent/llm/providers}/anthropic_utils.py +8 -25
- {fast_agent_mcp-0.1.12/src/mcp_agent/workflows/llm → fast_agent_mcp-0.2.0/src/mcp_agent/llm/providers}/augmented_llm_anthropic.py +56 -194
- fast_agent_mcp-0.2.0/src/mcp_agent/llm/providers/augmented_llm_deepseek.py +53 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/workflows/llm → fast_agent_mcp-0.2.0/src/mcp_agent/llm/providers}/augmented_llm_openai.py +99 -190
- {fast_agent_mcp-0.1.12/src/mcp_agent/workflows → fast_agent_mcp-0.2.0/src/mcp_agent}/llm/providers/multipart_converter_anthropic.py +72 -71
- {fast_agent_mcp-0.1.12/src/mcp_agent/workflows → fast_agent_mcp-0.2.0/src/mcp_agent}/llm/providers/multipart_converter_openai.py +65 -71
- {fast_agent_mcp-0.1.12/src/mcp_agent/workflows → fast_agent_mcp-0.2.0/src/mcp_agent}/llm/providers/openai_multipart.py +16 -44
- {fast_agent_mcp-0.1.12/src/mcp_agent/workflows/llm → fast_agent_mcp-0.2.0/src/mcp_agent/llm/providers}/openai_utils.py +4 -4
- {fast_agent_mcp-0.1.12/src/mcp_agent/workflows → fast_agent_mcp-0.2.0/src/mcp_agent}/llm/providers/sampling_converter_anthropic.py +9 -11
- {fast_agent_mcp-0.1.12/src/mcp_agent/workflows → fast_agent_mcp-0.2.0/src/mcp_agent}/llm/providers/sampling_converter_openai.py +8 -12
- {fast_agent_mcp-0.1.12/src/mcp_agent/workflows → fast_agent_mcp-0.2.0/src/mcp_agent}/llm/sampling_converter.py +3 -31
- fast_agent_mcp-0.2.0/src/mcp_agent/llm/sampling_format_converter.py +37 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/logging/events.py +1 -5
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/logging/json_serializer.py +7 -6
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/logging/listeners.py +20 -23
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/logging/logger.py +17 -19
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/logging/rich_progress.py +10 -8
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/logging/tracing.py +4 -6
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/logging/transport.py +22 -22
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp/gen_client.py +1 -3
- fast_agent_mcp-0.2.0/src/mcp_agent/mcp/interfaces.py +193 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/mcp/logger_textio.py +97 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp/mcp_agent_client_session.py +7 -7
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp/mcp_agent_server.py +8 -8
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp/mcp_aggregator.py +102 -143
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp/mcp_connection_manager.py +20 -27
- fast_agent_mcp-0.2.0/src/mcp_agent/mcp/prompt_message_multipart.py +116 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/mcp/prompt_render.py +77 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp/prompt_serialization.py +30 -48
- fast_agent_mcp-0.2.0/src/mcp_agent/mcp/prompts/prompt_constants.py +18 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/mcp/prompts/prompt_helpers.py +327 -0
- fast_agent_mcp-0.2.0/src/mcp_agent/mcp/prompts/prompt_load.py +109 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp/prompts/prompt_server.py +155 -195
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp/prompts/prompt_template.py +35 -66
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp/resource_utils.py +7 -14
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp/sampling.py +17 -17
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp_server/agent_server.py +13 -17
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp_server_registry.py +13 -22
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources/examples/workflows → fast_agent_mcp-0.2.0/src/mcp_agent/resources/examples/in_dev}/agent_build.py +3 -2
- fast_agent_mcp-0.2.0/src/mcp_agent/resources/examples/in_dev/slides.py +110 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/resources/examples/internal/agent.py +6 -3
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/resources/examples/internal/fastagent.config.yaml +8 -2
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/resources/examples/internal/job.py +2 -1
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/resources/examples/internal/prompt_category.py +1 -1
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/resources/examples/internal/prompt_sizing.py +3 -5
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/resources/examples/internal/sizer.py +2 -1
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/resources/examples/internal/social.py +2 -1
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/resources/examples/prompting/agent.py +2 -1
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/resources/examples/prompting/image_server.py +4 -8
- fast_agent_mcp-0.2.0/src/mcp_agent/resources/examples/prompting/work_with_image.py +19 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/ui/console_display.py +16 -20
- fast_agent_mcp-0.1.12/src/mcp_agent/cli/commands/config.py +0 -11
- fast_agent_mcp-0.1.12/src/mcp_agent/core/agent_app.py +0 -646
- fast_agent_mcp-0.1.12/src/mcp_agent/core/agent_utils.py +0 -71
- fast_agent_mcp-0.1.12/src/mcp_agent/core/decorators.py +0 -455
- fast_agent_mcp-0.1.12/src/mcp_agent/core/factory.py +0 -463
- fast_agent_mcp-0.1.12/src/mcp_agent/core/fastagent.py +0 -569
- fast_agent_mcp-0.1.12/src/mcp_agent/core/proxies.py +0 -269
- fast_agent_mcp-0.1.12/src/mcp_agent/core/types.py +0 -24
- fast_agent_mcp-0.1.12/src/mcp_agent/mcp/__init__.py +0 -0
- fast_agent_mcp-0.1.12/src/mcp_agent/mcp/interfaces.py +0 -186
- fast_agent_mcp-0.1.12/src/mcp_agent/mcp/prompt_message_multipart.py +0 -64
- fast_agent_mcp-0.1.12/src/mcp_agent/mcp/prompts/__init__.py +0 -0
- fast_agent_mcp-0.1.12/src/mcp_agent/mcp/stdio.py +0 -111
- fast_agent_mcp-0.1.12/src/mcp_agent/resources/examples/mcp_researcher/researcher-eval.py +0 -53
- fast_agent_mcp-0.1.12/src/mcp_agent/resources/examples/workflows/sse.py +0 -23
- fast_agent_mcp-0.1.12/src/mcp_agent/telemetry/__init__.py +0 -0
- fast_agent_mcp-0.1.12/src/mcp_agent/telemetry/usage_tracking.py +0 -18
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/__init__.py +0 -0
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/embedding/__init__.py +0 -0
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/embedding/embedding_base.py +0 -61
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/embedding/embedding_cohere.py +0 -49
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/embedding/embedding_openai.py +0 -46
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/evaluator_optimizer/__init__.py +0 -0
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/evaluator_optimizer/evaluator_optimizer.py +0 -481
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/intent_classifier/__init__.py +0 -0
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/intent_classifier/intent_classifier_base.py +0 -120
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/intent_classifier/intent_classifier_embedding.py +0 -134
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/intent_classifier/intent_classifier_embedding_cohere.py +0 -45
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/intent_classifier/intent_classifier_embedding_openai.py +0 -45
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/intent_classifier/intent_classifier_llm.py +0 -161
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/intent_classifier/intent_classifier_llm_anthropic.py +0 -60
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/intent_classifier/intent_classifier_llm_openai.py +0 -60
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/llm/__init__.py +0 -0
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/llm/augmented_llm.py +0 -753
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/llm/augmented_llm_passthrough.py +0 -241
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/llm/augmented_llm_playback.py +0 -109
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/llm/providers/__init__.py +0 -8
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/llm/sampling_format_converter.py +0 -22
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/orchestrator/__init__.py +0 -0
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/orchestrator/orchestrator.py +0 -578
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/parallel/__init__.py +0 -0
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/parallel/fan_in.py +0 -350
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/parallel/fan_out.py +0 -187
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/parallel/parallel_llm.py +0 -166
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/router/__init__.py +0 -0
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/router/router_base.py +0 -368
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/router/router_embedding.py +0 -240
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/router/router_embedding_cohere.py +0 -59
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/router/router_embedding_openai.py +0 -59
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/router/router_llm.py +0 -320
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/swarm/__init__.py +0 -0
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/swarm/swarm.py +0 -320
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/swarm/swarm_anthropic.py +0 -42
- fast_agent_mcp-0.1.12/src/mcp_agent/workflows/swarm/swarm_openai.py +0 -41
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/LICENSE +0 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/README.md +0 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/data-analysis/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/researcher/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/workflows/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent → fast_agent_mcp-0.2.0/src/mcp_agent/agents}/__init__.py +0 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/workflows/orchestrator → fast_agent_mcp-0.2.0/src/mcp_agent/agents/workflow}/orchestrator_prompts.py +0 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/agents → fast_agent_mcp-0.2.0/src/mcp_agent/cli}/__init__.py +0 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/cli/__main__.py +0 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/console.py +0 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/cli → fast_agent_mcp-0.2.0/src/mcp_agent/core}/__init__.py +0 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/core/error_handling.py +0 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/event_progress.py +0 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/core → fast_agent_mcp-0.2.0/src/mcp_agent/executor}/__init__.py +0 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/eval → fast_agent_mcp-0.2.0/src/mcp_agent/human_input}/__init__.py +0 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/executor → fast_agent_mcp-0.2.0/src/mcp_agent/logging}/__init__.py +0 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/human_input → fast_agent_mcp-0.2.0/src/mcp_agent/mcp}/__init__.py +0 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp/mcp_activity.py +0 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp/mime_utils.py +0 -0
- {fast_agent_mcp-0.1.12/src/mcp_agent/logging → fast_agent_mcp-0.2.0/src/mcp_agent/mcp/prompts}/__init__.py +0 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp/prompts/__main__.py +0 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/mcp_server/__init__.py +0 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/progress_display.py +0 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/resources/examples/prompting/__init__.py +0 -0
- {fast_agent_mcp-0.1.12 → fast_agent_mcp-0.2.0}/src/mcp_agent/resources/examples/prompting/fastagent.config.yaml +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: fast-agent-mcp
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.2.0
|
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
|
@@ -212,7 +212,7 @@ Requires-Python: >=3.10
|
|
212
212
|
Requires-Dist: aiohttp>=3.11.13
|
213
213
|
Requires-Dist: anthropic>=0.49.0
|
214
214
|
Requires-Dist: fastapi>=0.115.6
|
215
|
-
Requires-Dist: mcp
|
215
|
+
Requires-Dist: mcp==1.6.0
|
216
216
|
Requires-Dist: numpy>=2.2.1
|
217
217
|
Requires-Dist: openai>=1.63.2
|
218
218
|
Requires-Dist: opentelemetry-distro>=0.50b0
|
@@ -224,13 +224,12 @@ Requires-Dist: pyyaml>=6.0.2
|
|
224
224
|
Requires-Dist: rich>=13.9.4
|
225
225
|
Requires-Dist: scikit-learn>=1.6.0
|
226
226
|
Requires-Dist: typer>=0.15.1
|
227
|
-
Provides-Extra: cohere
|
228
|
-
Requires-Dist: cohere>=5.13.4; extra == 'cohere'
|
229
227
|
Provides-Extra: dev
|
230
228
|
Requires-Dist: anthropic>=0.42.0; extra == 'dev'
|
231
229
|
Requires-Dist: pre-commit>=4.0.1; extra == 'dev'
|
232
230
|
Requires-Dist: pydantic>=2.10.4; extra == 'dev'
|
233
231
|
Requires-Dist: pytest-asyncio>=0.21.1; extra == 'dev'
|
232
|
+
Requires-Dist: pytest-cov; extra == 'dev'
|
234
233
|
Requires-Dist: pytest>=7.4.0; extra == 'dev'
|
235
234
|
Requires-Dist: pyyaml>=6.0.2; extra == 'dev'
|
236
235
|
Requires-Dist: ruff>=0.8.4; extra == 'dev'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
3
|
from mcp_agent.core.fastagent import FastAgent
|
4
|
-
from mcp_agent.
|
4
|
+
from mcp_agent.llm.augmented_llm import RequestParams
|
5
5
|
|
6
6
|
# Create the application
|
7
7
|
fast = FastAgent("Data Analysis & Campaign Generator")
|
@@ -172,7 +172,7 @@ Extract key insights that would be compelling for a social media campaign.
|
|
172
172
|
request_params=RequestParams(maxTokens=8192),
|
173
173
|
plan_type="full",
|
174
174
|
)
|
175
|
-
async def main():
|
175
|
+
async def main() -> None:
|
176
176
|
# Use the app's context manager
|
177
177
|
print(
|
178
178
|
"WARNING: This workflow will likely run for >10 minutes and consume a lot of tokens. Press Enter to accept the default prompt and proceed"
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
3
|
from mcp_agent.core.fastagent import FastAgent
|
4
|
-
from mcp_agent.
|
4
|
+
from mcp_agent.llm.augmented_llm import RequestParams
|
5
5
|
|
6
6
|
# Create the application
|
7
7
|
fast = FastAgent("Data Analysis (Roots)")
|
@@ -23,7 +23,7 @@ Visualisations should be saved as .png files in the current working directory.
|
|
23
23
|
servers=["interpreter"],
|
24
24
|
request_params=RequestParams(maxTokens=8192),
|
25
25
|
)
|
26
|
-
async def main():
|
26
|
+
async def main() -> None:
|
27
27
|
# Use the app's context manager
|
28
28
|
async with fast.run() as agent:
|
29
29
|
await agent(
|
@@ -41,12 +41,12 @@ Summarize your evaluation as a structured response with:
|
|
41
41
|
min_rating="EXCELLENT",
|
42
42
|
name="Researcher_Evaluator",
|
43
43
|
)
|
44
|
-
async def main():
|
44
|
+
async def main() -> None:
|
45
45
|
async with agents.run() as agent:
|
46
46
|
await agent.prompt("Researcher_Evaluator")
|
47
47
|
|
48
48
|
print("Ask follow up quesions to the Researcher?")
|
49
|
-
await agent.prompt("Researcher",
|
49
|
+
await agent.prompt("Researcher", default_prompt="STOP")
|
50
50
|
|
51
51
|
|
52
52
|
if __name__ == "__main__":
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import asyncio
|
2
|
+
|
2
3
|
from mcp_agent.core.fastagent import FastAgent
|
3
4
|
|
4
5
|
agents = FastAgent(name="Enhanced Researcher")
|
@@ -162,7 +163,7 @@ The researcher should be able to understand exactly why they received their rati
|
|
162
163
|
min_rating="EXCELLENT",
|
163
164
|
name="EnhancedResearcher",
|
164
165
|
)
|
165
|
-
async def main():
|
166
|
+
async def main() -> None:
|
166
167
|
async with agents.run() as agent:
|
167
168
|
# Start with a warm-up to set expectations and explain the research approach
|
168
169
|
await agent.Researcher.send(
|
@@ -180,10 +181,8 @@ async def main():
|
|
180
181
|
# Start the main research workflow
|
181
182
|
await agent.prompt("EnhancedResearcher")
|
182
183
|
|
183
|
-
print(
|
184
|
-
|
185
|
-
)
|
186
|
-
await agent.prompt("Researcher", default="STOP")
|
184
|
+
print("\nWould you like to ask follow-up questions to the Researcher? (Type 'STOP' to end)")
|
185
|
+
await agent.prompt("Researcher", default_prompt="STOP")
|
187
186
|
|
188
187
|
|
189
188
|
if __name__ == "__main__":
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import asyncio
|
2
2
|
|
3
3
|
from mcp_agent.core.fastagent import FastAgent
|
4
|
+
|
4
5
|
# from rich import print
|
5
6
|
|
6
7
|
agents = FastAgent(name="Researcher Agent")
|
@@ -16,7 +17,7 @@ The interpreter has numpy, pandas, matplotlib and seaborn already installed
|
|
16
17
|
""",
|
17
18
|
servers=["brave", "interpreter", "filesystem", "fetch"],
|
18
19
|
)
|
19
|
-
async def main():
|
20
|
+
async def main() -> None:
|
20
21
|
research_prompt = """
|
21
22
|
Produce an investment report for the company Eutelsat. The final report should be saved in the filesystem in markdown format, and
|
22
23
|
contain at least the following:
|
@@ -30,9 +31,6 @@ Todays date is 15 February 2025. Include the main data sources consulted in pres
|
|
30
31
|
async with agents.run() as agent:
|
31
32
|
await agent.prompt()
|
32
33
|
|
33
|
-
# await agent.prompt(default="STOP")
|
34
|
-
# await agent.prompt(default=research_prompt)
|
35
|
-
|
36
34
|
|
37
35
|
if __name__ == "__main__":
|
38
36
|
asyncio.run(main())
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import asyncio
|
2
|
+
|
2
3
|
from mcp_agent.core.fastagent import FastAgent
|
3
4
|
|
4
5
|
# Create the application
|
@@ -21,19 +22,10 @@ fast = FastAgent("Agent Chaining")
|
|
21
22
|
name="post_writer",
|
22
23
|
sequence=["url_fetcher", "social_media"],
|
23
24
|
)
|
24
|
-
async def main():
|
25
|
+
async def main() -> None:
|
25
26
|
async with fast.run() as agent:
|
26
27
|
# using chain workflow
|
27
|
-
await agent.post_writer.
|
28
|
-
|
29
|
-
# calling directly
|
30
|
-
# await agent.url_fetcher("http://llmindset.co.uk/resources/mcp-hfspace/")
|
31
|
-
# await agent.social_media(
|
32
|
-
# await agent.url_fetcher("http://llmindset.co.uk/resources/mcp-hfspace/")
|
33
|
-
# )
|
34
|
-
|
35
|
-
# agents can also be accessed like dictionaries:
|
36
|
-
# awwait agent["post_writer"].prompt()
|
28
|
+
await agent.post_writer.send("https://llmindset.co.uk")
|
37
29
|
|
38
30
|
|
39
31
|
# alternative syntax for above is result = agent["post_writer"].send(message)
|
@@ -3,6 +3,7 @@ This demonstrates creating an optimizer and evaluator to iteratively improve con
|
|
3
3
|
"""
|
4
4
|
|
5
5
|
import asyncio
|
6
|
+
|
6
7
|
from mcp_agent.core.fastagent import FastAgent
|
7
8
|
|
8
9
|
# Create the application
|
@@ -49,7 +50,7 @@ fast = FastAgent("Evaluator-Optimizer")
|
|
49
50
|
min_rating="EXCELLENT", # Strive for excellence
|
50
51
|
max_refinements=3, # Maximum iterations
|
51
52
|
)
|
52
|
-
async def main():
|
53
|
+
async def main() -> None:
|
53
54
|
async with fast.run() as agent:
|
54
55
|
job_posting = (
|
55
56
|
"Software Engineer at LastMile AI. Responsibilities include developing AI systems, "
|
@@ -71,8 +72,6 @@ async def main():
|
|
71
72
|
f"Company information: {company_information}",
|
72
73
|
)
|
73
74
|
|
74
|
-
await agent()
|
75
|
-
|
76
75
|
|
77
76
|
if __name__ == "__main__":
|
78
77
|
asyncio.run(main())
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# Graded Report: "The Kittens Castle Adventure"
|
2
|
+
|
3
|
+
## Proofreading Feedback
|
4
|
+
|
5
|
+
### Spelling Errors
|
6
|
+
1. "Adventuer" → "Adventure"
|
7
|
+
2. "lil" → "little"
|
8
|
+
3. "name" → "named"
|
9
|
+
4. "threw" → "through"
|
10
|
+
5. "mystirus" → "mysterious"
|
11
|
+
6. "forrest" → "forest"
|
12
|
+
7. "was" → "were"
|
13
|
+
8. "an" → "and"
|
14
|
+
9. "Suddenlee" → "Suddenly"
|
15
|
+
10. "sawd" → "saw"
|
16
|
+
11. "somthing" → "something"
|
17
|
+
12. "chese" → "cheese"
|
18
|
+
13. "windos" → "windows"
|
19
|
+
14. "turrits" → "turrets"
|
20
|
+
15. "tuch" → "touch"
|
21
|
+
16. "clowds" → "clouds"
|
22
|
+
17. "doars" → "doors"
|
23
|
+
18. "enuff" → "enough"
|
24
|
+
19. "elefant" → "elephant"
|
25
|
+
20. "sed" → "said"
|
26
|
+
21. "tale" → "tail"
|
27
|
+
22. "poofy" → "puffy"
|
28
|
+
23. "fowned" → "found"
|
29
|
+
24. "meowed" → added missing period
|
30
|
+
25. "smallist" → "smallest"
|
31
|
+
26. "rond" → "round"
|
32
|
+
27. "climed" → "climbed"
|
33
|
+
28. "slip-slidin" → "slip-sliding"
|
34
|
+
29. "smoth" → "smooth"
|
35
|
+
30. "surfase" → "surface"
|
36
|
+
31. "ful" → "full"
|
37
|
+
32. "dangling" → added missing period
|
38
|
+
33. "JINGEL" → "jingle"
|
39
|
+
34. "paradyse" → "paradise"
|
40
|
+
35. "figur" → "figure"
|
41
|
+
36. "gaurd" → "guard"
|
42
|
+
37. "sumthing" → "something"
|
43
|
+
38. "mor" → "more"
|
44
|
+
39. "hudeld" → "huddled"
|
45
|
+
40. "togethar" → "together"
|
46
|
+
41. "there" → "their"
|
47
|
+
42. "happan" → "happen"
|
48
|
+
43. "amazeing" → "amazing"
|
49
|
+
|
50
|
+
### Grammar and Syntax Errors
|
51
|
+
1. Inconsistent verb tenses throughout the story
|
52
|
+
2. Improper use of articles (a/an)
|
53
|
+
3. Missing punctuation
|
54
|
+
4. Lack of subject-verb agreement
|
55
|
+
5. Incorrect capitalization
|
56
|
+
|
57
|
+
### Style and Formatting Recommendations
|
58
|
+
1. Use standard capitalization for proper nouns
|
59
|
+
2. Maintain consistent verb tense (past tense recommended)
|
60
|
+
3. Use proper punctuation
|
61
|
+
4. Avoid excessive use of exclamation points
|
62
|
+
5. Use standard spelling for all words
|
63
|
+
|
64
|
+
## Factuality and Logical Consistency
|
65
|
+
- The story is a fictional narrative about three kittens, so traditional factual constraints do not strictly apply
|
66
|
+
- The narrative maintains internal logical consistency
|
67
|
+
- The cliffhanger ending leaves room for imagination
|
68
|
+
|
69
|
+
## Style Adherence
|
70
|
+
### APA Formatting Guidelines
|
71
|
+
- Title should be centered and in title case
|
72
|
+
- Use 12-point Times New Roman font (not applicable in markdown)
|
73
|
+
- Double-spacing recommended (not applicable in markdown)
|
74
|
+
- 1-inch margins (not applicable in markdown)
|
75
|
+
|
76
|
+
### Recommendations for Improvement
|
77
|
+
1. Proofread and correct all spelling errors
|
78
|
+
2. Maintain consistent grammar and syntax
|
79
|
+
3. Use standard English spelling
|
80
|
+
4. Add more descriptive language
|
81
|
+
5. Develop a more structured narrative arc
|
82
|
+
|
83
|
+
## Overall Assessment
|
84
|
+
**Writing Quality**: Needs Significant Improvement
|
85
|
+
**Creativity**: Excellent
|
86
|
+
**Potential**: High
|
87
|
+
|
88
|
+
### Suggested Revision
|
89
|
+
Revise the text to correct spelling, grammar, and syntax while preserving the original creative narrative and imaginative elements.
|
@@ -3,6 +3,7 @@ Agent which demonstrates Human Input tool
|
|
3
3
|
"""
|
4
4
|
|
5
5
|
import asyncio
|
6
|
+
|
6
7
|
from mcp_agent.core.fastagent import FastAgent
|
7
8
|
|
8
9
|
# Create the application
|
@@ -14,11 +15,11 @@ fast = FastAgent("Human Input")
|
|
14
15
|
instruction="An AI agent that assists with basic tasks. Request Human Input when needed.",
|
15
16
|
human_input=True,
|
16
17
|
)
|
17
|
-
async def main():
|
18
|
+
async def main() -> None:
|
18
19
|
async with fast.run() as agent:
|
19
20
|
# this usually causes the LLM to request the Human Input Tool
|
20
21
|
await agent("print the next number in the sequence")
|
21
|
-
await agent.prompt(
|
22
|
+
await agent.prompt(default_prompt="STOP")
|
22
23
|
|
23
24
|
|
24
25
|
if __name__ == "__main__":
|
@@ -3,6 +3,7 @@ This demonstrates creating multiple agents and an orchestrator to coordinate the
|
|
3
3
|
"""
|
4
4
|
|
5
5
|
import asyncio
|
6
|
+
|
6
7
|
from mcp_agent.core.fastagent import FastAgent
|
7
8
|
|
8
9
|
# Create the application
|
@@ -45,28 +46,23 @@ fast = FastAgent("Orchestrator-Workers")
|
|
45
46
|
@fast.orchestrator(
|
46
47
|
name="orchestrate",
|
47
48
|
agents=["finder", "writer", "proofreader"],
|
48
|
-
plan_type="
|
49
|
+
plan_type="full",
|
49
50
|
)
|
50
|
-
async def main():
|
51
|
+
async def main() -> None:
|
51
52
|
async with fast.run() as agent:
|
52
|
-
await agent()
|
53
53
|
await agent.author(
|
54
54
|
"write a 250 word short story about kittens discovering a castle, and save it to short_story.md"
|
55
55
|
)
|
56
56
|
|
57
57
|
# The orchestrator can be used just like any other agent
|
58
|
-
task =
|
59
|
-
"""Load the student's short story from short_story.md,
|
58
|
+
task = """Load the student's short story from short_story.md,
|
60
59
|
and generate a report with feedback across proofreading,
|
61
60
|
factuality/logical consistency and style adherence. Use the style rules from
|
62
61
|
https://apastyle.apa.org/learn/quick-guide-on-formatting and
|
63
62
|
https://apastyle.apa.org/learn/quick-guide-on-references.
|
64
|
-
Write the graded report to graded_report.md in the same directory as short_story.md"""
|
65
|
-
)
|
63
|
+
Write the graded report to graded_report.md in the same directory as short_story.md"""
|
66
64
|
|
67
|
-
# Send the task
|
68
65
|
await agent.orchestrate(task)
|
69
|
-
await agent()
|
70
66
|
|
71
67
|
|
72
68
|
if __name__ == "__main__":
|
@@ -3,33 +3,15 @@ Parallel Workflow showing Fan Out and Fan In agents, using different models
|
|
3
3
|
"""
|
4
4
|
|
5
5
|
import asyncio
|
6
|
+
from pathlib import Path
|
7
|
+
|
6
8
|
from mcp_agent.core.fastagent import FastAgent
|
9
|
+
from mcp_agent.core.prompt import Prompt
|
7
10
|
|
8
11
|
# Create the application
|
9
12
|
fast = FastAgent(
|
10
13
|
"Parallel Workflow",
|
11
14
|
)
|
12
|
-
SHORT_STORY = """
|
13
|
-
The Battle of Glimmerwood
|
14
|
-
|
15
|
-
In the heart of Glimmerwood, a mystical forest knowed for its radiant trees, a small village thrived.
|
16
|
-
The villagers, who were live peacefully, shared their home with the forest's magical creatures,
|
17
|
-
especially the Glimmerfoxes whose fur shimmer like moonlight.
|
18
|
-
|
19
|
-
One fateful evening, the peace was shaterred when the infamous Dark Marauders attack.
|
20
|
-
Lead by the cunning Captain Thorn, the bandits aim to steal the precious Glimmerstones which was believed to grant immortality.
|
21
|
-
|
22
|
-
Amidst the choas, a young girl named Elara stood her ground, she rallied the villagers and devised a clever plan.
|
23
|
-
Using the forests natural defenses they lured the marauders into a trap.
|
24
|
-
As the bandits aproached the village square, a herd of Glimmerfoxes emerged, blinding them with their dazzling light,
|
25
|
-
the villagers seized the opportunity to captured the invaders.
|
26
|
-
|
27
|
-
Elara's bravery was celebrated and she was hailed as the "Guardian of Glimmerwood".
|
28
|
-
The Glimmerstones were secured in a hidden grove protected by an ancient spell.
|
29
|
-
|
30
|
-
However, not all was as it seemed. The Glimmerstones true power was never confirm,
|
31
|
-
and whispers of a hidden agenda linger among the villagers.
|
32
|
-
"""
|
33
15
|
|
34
16
|
|
35
17
|
@fast.agent(
|
@@ -65,14 +47,12 @@ and whispers of a hidden agenda linger among the villagers.
|
|
65
47
|
fan_in="grader",
|
66
48
|
name="parallel",
|
67
49
|
)
|
68
|
-
async def main():
|
69
|
-
# Use the app's context manager
|
50
|
+
async def main() -> None:
|
70
51
|
async with fast.run() as agent:
|
71
|
-
await agent.parallel(
|
72
|
-
|
73
|
-
|
74
|
-
await agent.style_enforcer.prompt(default_prompt="STOP")
|
52
|
+
await agent.parallel.send(
|
53
|
+
Prompt.user("Student short story submission", Path("short_story.txt"))
|
54
|
+
)
|
75
55
|
|
76
56
|
|
77
57
|
if __name__ == "__main__":
|
78
|
-
asyncio.run(main())
|
58
|
+
asyncio.run(main()) # type: ignore
|
{fast_agent_mcp-0.1.12/src/mcp_agent/resources → fast_agent_mcp-0.2.0}/examples/workflows/router.py
RENAMED
@@ -6,6 +6,7 @@ Demonstrates router's ability to either:
|
|
6
6
|
"""
|
7
7
|
|
8
8
|
import asyncio
|
9
|
+
|
9
10
|
from mcp_agent.core.fastagent import FastAgent
|
10
11
|
|
11
12
|
# Create the application
|
@@ -43,7 +44,7 @@ SAMPLE_REQUESTS = [
|
|
43
44
|
model="sonnet",
|
44
45
|
agents=["code_expert", "general_assistant", "fetcher"],
|
45
46
|
)
|
46
|
-
async def main():
|
47
|
+
async def main() -> None:
|
47
48
|
async with fast.run() as agent:
|
48
49
|
for request in SAMPLE_REQUESTS:
|
49
50
|
await agent.route(request)
|
@@ -0,0 +1,13 @@
|
|
1
|
+
The Kittens Castle Adventuer
|
2
|
+
|
3
|
+
One sunny day, three lil kittens name Whiskers, Socks, and Mittens was walkin threw a mystirus forrest. They hadnt never seen such a big forrest before! The trees was tall an spooky, an the ground was coverd in moss an stikks.
|
4
|
+
|
5
|
+
Suddenlee, thru the trees, they sawd somthing HUUUUGE! It was a castell, but not just eny castell. This castell was made of sparkling chese an glittery windos. The turrits was so high they tuch the clowds, an the doars was big enuff for a elefant to walk threw!
|
6
|
+
|
7
|
+
"Lookk!" sed Whiskers, his tale all poofy wit exsitement. "We fowned a castell!" Socks meowed loudly an jumped up an down. Mittens, who was the smallist kitten, just stared wit her big rond eyes.
|
8
|
+
|
9
|
+
They climed up the cheesy walls, slip-slidin on the smoth surfase. Inside, they discoverd rooms ful of soft pillows an dangling strings an shiny things that went JINGEL when they tuch them. It was like a kitten paradyse!
|
10
|
+
|
11
|
+
But then, a big shadowy figur apeared... was it the castell gaurd? Or sumthing mor mystirus? The kittens hudeld togethar, there lil hearts beating fast. What wud happan next in there amazeing adventuer?
|
12
|
+
|
13
|
+
THE END??
|
@@ -0,0 +1,19 @@
|
|
1
|
+
The Battle of Glimmerwood
|
2
|
+
|
3
|
+
In the heart of Glimmerwood, a mystical forest knowed for its radiant trees, a small village thrived.
|
4
|
+
The villagers, who were live peacefully, shared their home with the forest's magical creatures,
|
5
|
+
especially the Glimmerfoxes whose fur shimmer like moonlight.
|
6
|
+
|
7
|
+
One fateful evening, the peace was shaterred when the infamous Dark Marauders attack.
|
8
|
+
Lead by the cunning Captain Thorn, the bandits aim to steal the precious Glimmerstones which was believed to grant immortality.
|
9
|
+
|
10
|
+
Amidst the choas, a young girl named Elara stood her ground, she rallied the villagers and devised a clever plan.
|
11
|
+
Using the forests natural defenses they lured the marauders into a trap.
|
12
|
+
As the bandits aproached the village square, a herd of Glimmerfoxes emerged, blinding them with their dazzling light,
|
13
|
+
the villagers seized the opportunity to captured the invaders.
|
14
|
+
|
15
|
+
Elara's bravery was celebrated and she was hailed as the "Guardian of Glimmerwood".
|
16
|
+
The Glimmerstones were secured in a hidden grove protected by an ancient spell.
|
17
|
+
|
18
|
+
However, not all was as it seemed. The Glimmerstones true power was never confirm,
|
19
|
+
and whispers of a hidden agenda linger among the villagers.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "fast-agent-mcp"
|
3
|
-
version = "0.
|
3
|
+
version = "0.2.0"
|
4
4
|
description = "Define, Prompt and Test MCP enabled Agents and Workflows"
|
5
5
|
readme = "README.md"
|
6
6
|
license = { file = "LICENSE" }
|
@@ -16,7 +16,7 @@ classifiers = [
|
|
16
16
|
requires-python = ">=3.10"
|
17
17
|
dependencies = [
|
18
18
|
"fastapi>=0.115.6",
|
19
|
-
"mcp
|
19
|
+
"mcp==1.6.0",
|
20
20
|
"opentelemetry-distro>=0.50b0",
|
21
21
|
"opentelemetry-exporter-otlp-proto-http>=1.29.0",
|
22
22
|
"pydantic-settings>=2.7.0",
|
@@ -39,9 +39,6 @@ temporal = [
|
|
39
39
|
openai = [
|
40
40
|
"openai>=1.58.1",
|
41
41
|
]
|
42
|
-
cohere = [
|
43
|
-
"cohere>=5.13.4",
|
44
|
-
]
|
45
42
|
dev = [
|
46
43
|
"anthropic>=0.42.0",
|
47
44
|
"pre-commit>=4.0.1",
|
@@ -51,6 +48,7 @@ dev = [
|
|
51
48
|
"tomli>=2.2.1",
|
52
49
|
"pytest>=7.4.0",
|
53
50
|
"pytest-asyncio>=0.21.1",
|
51
|
+
"pytest-cov",
|
54
52
|
]
|
55
53
|
|
56
54
|
[build-system]
|
@@ -66,10 +64,14 @@ include = [
|
|
66
64
|
"src/mcp_agent/**/*.yaml",
|
67
65
|
"src/mcp_agent/**/*.yml",
|
68
66
|
"src/mcp_agent/**/*.csv",
|
69
|
-
"
|
70
|
-
"
|
71
|
-
"
|
72
|
-
"
|
67
|
+
"examples/**/*.py",
|
68
|
+
"examples/**/*.yaml",
|
69
|
+
"examples/**/*.yml",
|
70
|
+
"examples/**/*.txt",
|
71
|
+
"examples/**/*.csv",
|
72
|
+
"examples/**/*.md",
|
73
|
+
"examples/**/*.css",
|
74
|
+
"examples/**/mount-point/*.csv",
|
73
75
|
]
|
74
76
|
|
75
77
|
[tool.pytest.ini_options]
|
@@ -103,12 +105,21 @@ silsila = "mcp_agent.cli.__main__:app"
|
|
103
105
|
prompt-server = "mcp_agent.mcp.prompts.__main__:main"
|
104
106
|
|
105
107
|
[tool.setuptools.package-data]
|
106
|
-
mcp_agent = [
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
108
|
+
mcp_agent = []
|
109
|
+
|
110
|
+
[tool.ruff]
|
111
|
+
line-length = 100
|
112
|
+
target-version = "py310"
|
113
|
+
|
114
|
+
[tool.ruff.lint]
|
115
|
+
select = [
|
116
|
+
"E", # pycodestyle errors
|
117
|
+
"F", # pyflakes
|
118
|
+
"I", # isort
|
119
|
+
"TCH" # type checking
|
113
120
|
]
|
121
|
+
ignore=["E501"]
|
114
122
|
|
123
|
+
# More lenient settings for existing code
|
124
|
+
[tool.ruff.lint.per-file-ignores]
|
125
|
+
"tests/*" = ["ANN"] # Don't require type annotations in tests
|
@@ -0,0 +1,75 @@
|
|
1
|
+
"""fast-agent - (fast-agent-mcp) An MCP native agent application framework"""
|
2
|
+
|
3
|
+
# Import important MCP types
|
4
|
+
from mcp.types import (
|
5
|
+
CallToolResult,
|
6
|
+
EmbeddedResource,
|
7
|
+
GetPromptResult,
|
8
|
+
ImageContent,
|
9
|
+
Prompt,
|
10
|
+
PromptMessage,
|
11
|
+
ReadResourceResult,
|
12
|
+
Role,
|
13
|
+
TextContent,
|
14
|
+
Tool,
|
15
|
+
)
|
16
|
+
|
17
|
+
# Core agent components
|
18
|
+
from mcp_agent.agents.agent import Agent, AgentConfig
|
19
|
+
from mcp_agent.core.direct_agent_app import DirectAgentApp
|
20
|
+
|
21
|
+
# Workflow decorators
|
22
|
+
from mcp_agent.core.direct_decorators import (
|
23
|
+
agent,
|
24
|
+
chain,
|
25
|
+
evaluator_optimizer,
|
26
|
+
orchestrator,
|
27
|
+
parallel,
|
28
|
+
router,
|
29
|
+
)
|
30
|
+
|
31
|
+
# FastAgent components
|
32
|
+
from mcp_agent.core.fastagent import FastAgent
|
33
|
+
|
34
|
+
# Request configuration
|
35
|
+
from mcp_agent.core.request_params import RequestParams
|
36
|
+
|
37
|
+
# Core protocol interfaces
|
38
|
+
from mcp_agent.mcp.interfaces import AgentProtocol, AugmentedLLMProtocol
|
39
|
+
from mcp_agent.mcp.mcp_aggregator import MCPAggregator, MCPCompoundServer
|
40
|
+
from mcp_agent.mcp.prompt_message_multipart import PromptMessageMultipart
|
41
|
+
|
42
|
+
__all__ = [
|
43
|
+
# MCP types
|
44
|
+
"Prompt",
|
45
|
+
"Tool",
|
46
|
+
"CallToolResult",
|
47
|
+
"TextContent",
|
48
|
+
"ImageContent",
|
49
|
+
"PromptMessage",
|
50
|
+
"GetPromptResult",
|
51
|
+
"ReadResourceResult",
|
52
|
+
"EmbeddedResource",
|
53
|
+
"Role",
|
54
|
+
# Core protocols
|
55
|
+
"AgentProtocol",
|
56
|
+
"AugmentedLLMProtocol",
|
57
|
+
# Core agent components
|
58
|
+
"Agent",
|
59
|
+
"AgentConfig",
|
60
|
+
"MCPAggregator",
|
61
|
+
"MCPCompoundServer",
|
62
|
+
"PromptMessageMultipart",
|
63
|
+
# FastAgent components
|
64
|
+
"FastAgent",
|
65
|
+
"DirectAgentApp",
|
66
|
+
# Workflow decorators
|
67
|
+
"agent",
|
68
|
+
"orchestrator",
|
69
|
+
"router",
|
70
|
+
"chain",
|
71
|
+
"parallel",
|
72
|
+
"evaluator_optimizer",
|
73
|
+
# Request configuration
|
74
|
+
"RequestParams",
|
75
|
+
]
|