fast-agent-mcp 0.3.3__tar.gz → 0.3.5__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.
Potentially problematic release.
This version of fast-agent-mcp might be problematic. Click here for more details.
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/.gitignore +1 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/PKG-INFO +40 -3
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/README.md +37 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/custom-agents/agent.py +2 -2
- {fast_agent_mcp-0.3.3/src/fast_agent/resources → fast_agent_mcp-0.3.5}/examples/data-analysis/analysis-campaign.py +1 -1
- {fast_agent_mcp-0.3.3/src/fast_agent/resources → fast_agent_mcp-0.3.5}/examples/data-analysis/analysis.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/fastapi/fastapi-advanced.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/fastapi/fastapi-simple.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/elicitations/forms_demo.py +1 -1
- {fast_agent_mcp-0.3.3/src/fast_agent/resources → fast_agent_mcp-0.3.5}/examples/mcp/elicitations/game_character.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/elicitations/tool_call.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/mcp-filtering/test_mcp_filtering.py +1 -1
- {fast_agent_mcp-0.3.3/src/fast_agent/resources → fast_agent_mcp-0.3.5}/examples/mcp/state-transfer/agent_one.py +1 -1
- {fast_agent_mcp-0.3.3/src/fast_agent/resources → fast_agent_mcp-0.3.5}/examples/mcp/state-transfer/agent_two.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/vision-examples/example1.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/vision-examples/example2.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/vision-examples/example3.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/otel/agent.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/otel/agent2.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/researcher/researcher-eval.py +1 -1
- {fast_agent_mcp-0.3.3/src/fast_agent/resources → fast_agent_mcp-0.3.5}/examples/researcher/researcher-imp.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/researcher/researcher.py +1 -1
- {fast_agent_mcp-0.3.3/src/fast_agent/resources → fast_agent_mcp-0.3.5/examples}/setup/agent.py +1 -1
- {fast_agent_mcp-0.3.3/src/fast_agent/resources → fast_agent_mcp-0.3.5/examples}/setup/fastagent.config.yaml +2 -2
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/agent.py +1 -1
- {fast_agent_mcp-0.3.3/src/fast_agent/resources → fast_agent_mcp-0.3.5}/examples/tensorzero/image_demo.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/simple_agent.py +1 -1
- {fast_agent_mcp-0.3.3/src/fast_agent/resources → fast_agent_mcp-0.3.5}/examples/workflows/chaining.py +1 -1
- {fast_agent_mcp-0.3.3/src/fast_agent/resources → fast_agent_mcp-0.3.5}/examples/workflows/evaluator.py +1 -1
- {fast_agent_mcp-0.3.3/src/fast_agent/resources → fast_agent_mcp-0.3.5}/examples/workflows/human_input.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/workflows/orchestrator.py +1 -1
- {fast_agent_mcp-0.3.3/src/fast_agent/resources → fast_agent_mcp-0.3.5}/examples/workflows/parallel.py +1 -1
- {fast_agent_mcp-0.3.3/src/fast_agent/resources → fast_agent_mcp-0.3.5}/examples/workflows/router.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/pyproject.toml +3 -2
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/__init__.py +6 -3
- fast_agent_mcp-0.3.5/src/fast_agent/agents/__init__.py +85 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/cli/__main__.py +8 -5
- fast_agent_mcp-0.3.5/src/fast_agent/cli/commands/auth.py +370 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/cli/commands/check_config.py +54 -3
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/cli/commands/go.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/cli/commands/quickstart.py +3 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/cli/commands/server_helpers.py +10 -2
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/cli/commands/setup.py +3 -2
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/cli/constants.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/cli/main.py +3 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/config.py +63 -8
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/__init__.py +38 -37
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/direct_factory.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/mcp_connection_manager.py +21 -3
- fast_agent_mcp-0.3.5/src/fast_agent/mcp/oauth_client.py +481 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/ui_agent.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5/src/fast_agent/resources}/examples/data-analysis/analysis-campaign.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5/src/fast_agent/resources}/examples/data-analysis/analysis.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/mcp/elicitations/forms_demo.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5/src/fast_agent/resources}/examples/mcp/elicitations/game_character.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/mcp/elicitations/tool_call.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5/src/fast_agent/resources}/examples/mcp/state-transfer/agent_one.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5/src/fast_agent/resources}/examples/mcp/state-transfer/agent_two.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/researcher/researcher-eval.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5/src/fast_agent/resources}/examples/researcher/researcher-imp.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/researcher/researcher.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/agent.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5/src/fast_agent/resources}/examples/tensorzero/image_demo.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/simple_agent.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5/src/fast_agent/resources}/examples/workflows/chaining.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5/src/fast_agent/resources}/examples/workflows/evaluator.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5/src/fast_agent/resources}/examples/workflows/human_input.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/workflows/orchestrator.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5/src/fast_agent/resources}/examples/workflows/parallel.py +1 -1
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5/src/fast_agent/resources}/examples/workflows/router.py +1 -1
- {fast_agent_mcp-0.3.3/examples → fast_agent_mcp-0.3.5/src/fast_agent/resources}/setup/agent.py +1 -1
- {fast_agent_mcp-0.3.3/examples → fast_agent_mcp-0.3.5/src/fast_agent/resources}/setup/fastagent.config.yaml +2 -2
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/ui/mcp_ui_utils.py +12 -1
- fast_agent_mcp-0.3.3/src/fast_agent/agents/__init__.py +0 -36
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/LICENSE +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/azure-openai/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/bedrock/fast-agent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/custom-agents/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/data-analysis/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/fastapi/pyproject.toml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/fastapi/readme.md +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/elicitations/elicitation_account_server.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/elicitations/elicitation_forms_server.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/elicitations/elicitation_game_server.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/elicitations/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/elicitations/fastagent.secrets.yaml.example +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/elicitations/game_character_handler.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/mcp-filtering/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/mcp-filtering/fastagent.secrets.yaml.example +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/mcp-filtering/mcp_server.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/state-transfer/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/state-transfer/fastagent.secrets.yaml.example +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/vision-examples/cat.png +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/mcp/vision-examples/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/new-api/display_check.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/new-api/simple_llm.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/new-api/simple_llm_advanced.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/new-api/simple_mcp.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/otel/docker-compose.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/otel/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/researcher/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/setup/.gitignore +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/setup/fastagent.secrets.yaml.example +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/setup/pyproject.toml.tmpl +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/.env.sample +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/Makefile +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/README.md +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/demo_images/clam.jpg +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/demo_images/crab.png +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/demo_images/shrimp.png +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/docker-compose.yml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/mcp_server/Dockerfile +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/mcp_server/entrypoint.sh +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/mcp_server/mcp_server.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/mcp_server/pyproject.toml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/tensorzero_config/system_schema.json +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/tensorzero_config/system_template.minijinja +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/tensorzero/tensorzero_config/tensorzero.toml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/workflows/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/workflows/graded_report.md +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/workflows/short_story.md +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/examples/workflows/short_story.txt +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/hatch_build.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/agents/agent_types.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/agents/llm_agent.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/agents/llm_decorator.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/agents/mcp_agent.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/agents/tool_agent.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/agents/workflow/chain_agent.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/agents/workflow/evaluator_optimizer.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/agents/workflow/iterative_planner.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/agents/workflow/orchestrator_models.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/agents/workflow/orchestrator_prompts.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/agents/workflow/parallel_agent.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/agents/workflow/router_agent.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/cli/__init__.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/cli/commands/url_parser.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/cli/terminal.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/constants.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/context.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/context_dependent.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/agent_app.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/core_app.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/direct_decorators.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/error_handling.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/exceptions.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/executor/__init__.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/executor/executor.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/executor/task_registry.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/executor/workflow_signal.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/fastagent.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/logging/__init__.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/logging/events.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/logging/json_serializer.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/logging/listeners.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/logging/logger.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/logging/transport.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/prompt.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/core/validation.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/event_progress.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/history/history_exporter.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/human_input/__init__.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/human_input/elicitation_handler.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/human_input/elicitation_state.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/human_input/form_fields.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/human_input/simple_form.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/human_input/types.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/interfaces.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/__init__.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/fastagent_llm.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/internal/passthrough.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/internal/playback.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/internal/silent.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/internal/slow.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/memory.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/model_database.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/model_factory.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/model_info.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/prompt_utils.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/anthropic/anthropic_utils.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/anthropic/llm_anthropic.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/anthropic/multipart_converter_anthropic.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/bedrock/bedrock_utils.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/bedrock/llm_bedrock.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/google/google_converter.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/google/llm_google_native.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/openai/llm_aliyun.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/openai/llm_azure.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/openai/llm_deepseek.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/openai/llm_generic.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/openai/llm_google_oai.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/openai/llm_groq.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/openai/llm_openai.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/openai/llm_openrouter.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/openai/llm_tensorzero_openai.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/openai/llm_xai.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/openai/multipart_converter_openai.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/openai/openai_multipart.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider/openai/openai_utils.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider_key_manager.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/provider_types.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/request_params.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/sampling_converter.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/llm/usage_tracking.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/__init__.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/common.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/elicitation_factory.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/elicitation_handlers.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/gen_client.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/helpers/__init__.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/helpers/content_helpers.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/helpers/server_config_helpers.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/hf_auth.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/interfaces.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/logger_textio.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/mcp_agent_client_session.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/mcp_aggregator.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/mcp_content.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/mime_utils.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/prompt.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/prompt_message_extended.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/prompt_render.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/prompt_serialization.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/prompts/__init__.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/prompts/__main__.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/prompts/prompt_constants.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/prompts/prompt_helpers.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/prompts/prompt_load.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/prompts/prompt_server.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/prompts/prompt_template.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/resource_utils.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/sampling.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/server/__init__.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/server/agent_server.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp/ui_mixin.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/mcp_server_registry.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/py.typed +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/data-analysis/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/data-analysis/mount-point/WA_Fn-UseC_-HR-Employee-Attrition.csv +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/mcp/elicitations/elicitation_account_server.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/mcp/elicitations/elicitation_forms_server.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/mcp/elicitations/elicitation_game_server.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/mcp/elicitations/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/mcp/elicitations/fastagent.secrets.yaml.example +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/mcp/elicitations/game_character_handler.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/mcp/state-transfer/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/mcp/state-transfer/fastagent.secrets.yaml.example +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/researcher/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/.env.sample +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/Makefile +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/README.md +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/demo_images/clam.jpg +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/demo_images/crab.png +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/demo_images/shrimp.png +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/docker-compose.yml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/mcp_server/.python-version +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/mcp_server/Dockerfile +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/mcp_server/entrypoint.sh +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/mcp_server/mcp_server.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/mcp_server/pyproject.toml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/tensorzero_config/system_schema.json +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/tensorzero_config/system_template.minijinja +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/tensorzero/tensorzero_config/tensorzero.toml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/workflows/fastagent.config.yaml +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/workflows/graded_report.md +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/workflows/short_story.md +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/examples/workflows/short_story.txt +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/setup/.gitignore +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/setup/fastagent.secrets.yaml.example +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/resources/setup/pyproject.toml.tmpl +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/tools/elicitation.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/types/__init__.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/types/llm_stop_reason.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/ui/__init__.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/ui/console.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/ui/console_display.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/ui/elicitation_form.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/ui/elicitation_style.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/ui/enhanced_prompt.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/ui/interactive_prompt.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/ui/mermaid_utils.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/ui/progress_display.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/ui/rich_progress.py +0 -0
- {fast_agent_mcp-0.3.3 → fast_agent_mcp-0.3.5}/src/fast_agent/ui/usage_display.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fast-agent-mcp
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.5
|
|
4
4
|
Summary: Define, Prompt and Test MCP enabled Agents and Workflows
|
|
5
5
|
Author-email: Shaun Smith <fastagent@llmindset.co.uk>
|
|
6
6
|
License: Apache License
|
|
@@ -208,7 +208,7 @@ License-File: LICENSE
|
|
|
208
208
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
209
209
|
Classifier: Operating System :: OS Independent
|
|
210
210
|
Classifier: Programming Language :: Python :: 3
|
|
211
|
-
Requires-Python: >=3.13.
|
|
211
|
+
Requires-Python: >=3.13.5
|
|
212
212
|
Requires-Dist: a2a-sdk>=0.3.0
|
|
213
213
|
Requires-Dist: aiohttp>=3.11.13
|
|
214
214
|
Requires-Dist: anthropic>=0.66.0
|
|
@@ -218,6 +218,7 @@ Requires-Dist: deprecated>=1.2.18
|
|
|
218
218
|
Requires-Dist: email-validator>=2.2.0
|
|
219
219
|
Requires-Dist: fastapi>=0.115.6
|
|
220
220
|
Requires-Dist: google-genai>=1.33.0
|
|
221
|
+
Requires-Dist: keyring>=24.3.1
|
|
221
222
|
Requires-Dist: mcp==1.14.0
|
|
222
223
|
Requires-Dist: openai>=1.106.1
|
|
223
224
|
Requires-Dist: opentelemetry-distro>=0.55b0
|
|
@@ -321,7 +322,7 @@ Here is the complete `sizer.py` Agent application, with boilerplate code:
|
|
|
321
322
|
|
|
322
323
|
```python
|
|
323
324
|
import asyncio
|
|
324
|
-
from fast_agent
|
|
325
|
+
from fast_agent import FastAgent
|
|
325
326
|
|
|
326
327
|
# Create the application
|
|
327
328
|
fast = FastAgent("Agent Example")
|
|
@@ -380,6 +381,42 @@ uv run workflow/chaining.py --agent post_writer --message "<url>"
|
|
|
380
381
|
|
|
381
382
|
Add the `--quiet` switch to disable progress and message display and return only the final response - useful for simple automations.
|
|
382
383
|
|
|
384
|
+
## MCP OAuth (v2.1)
|
|
385
|
+
|
|
386
|
+
For SSE and HTTP MCP servers, OAuth is enabled by default with minimal configuration. A local callback server is used to capture the authorization code, with a paste-URL fallback if the port is unavailable.
|
|
387
|
+
|
|
388
|
+
- Minimal per-server settings in `fastagent.config.yaml`:
|
|
389
|
+
|
|
390
|
+
```yaml
|
|
391
|
+
mcp:
|
|
392
|
+
servers:
|
|
393
|
+
myserver:
|
|
394
|
+
transport: http # or sse
|
|
395
|
+
url: http://localhost:8001/mcp # or /sse for SSE servers
|
|
396
|
+
auth:
|
|
397
|
+
oauth: true # default: true
|
|
398
|
+
redirect_port: 3030 # default: 3030
|
|
399
|
+
redirect_path: /callback # default: /callback
|
|
400
|
+
# scope: "user" # optional; if omitted, server defaults are used
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
- The OAuth client uses PKCE and in-memory token storage (no tokens written to disk).
|
|
404
|
+
- Token persistence: by default, tokens are stored securely in your OS keychain via `keyring`. If a keychain is unavailable (e.g., headless container), in-memory storage is used for the session.
|
|
405
|
+
- To force in-memory only per server, set:
|
|
406
|
+
|
|
407
|
+
```yaml
|
|
408
|
+
mcp:
|
|
409
|
+
servers:
|
|
410
|
+
myserver:
|
|
411
|
+
transport: http
|
|
412
|
+
url: http://localhost:8001/mcp
|
|
413
|
+
auth:
|
|
414
|
+
oauth: true
|
|
415
|
+
persist: memory
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
- To disable OAuth for a specific server , set `auth.oauth: false` for that server.
|
|
419
|
+
|
|
383
420
|
## Workflows
|
|
384
421
|
|
|
385
422
|
### Chain
|
|
@@ -83,7 +83,7 @@ Here is the complete `sizer.py` Agent application, with boilerplate code:
|
|
|
83
83
|
|
|
84
84
|
```python
|
|
85
85
|
import asyncio
|
|
86
|
-
from fast_agent
|
|
86
|
+
from fast_agent import FastAgent
|
|
87
87
|
|
|
88
88
|
# Create the application
|
|
89
89
|
fast = FastAgent("Agent Example")
|
|
@@ -142,6 +142,42 @@ uv run workflow/chaining.py --agent post_writer --message "<url>"
|
|
|
142
142
|
|
|
143
143
|
Add the `--quiet` switch to disable progress and message display and return only the final response - useful for simple automations.
|
|
144
144
|
|
|
145
|
+
## MCP OAuth (v2.1)
|
|
146
|
+
|
|
147
|
+
For SSE and HTTP MCP servers, OAuth is enabled by default with minimal configuration. A local callback server is used to capture the authorization code, with a paste-URL fallback if the port is unavailable.
|
|
148
|
+
|
|
149
|
+
- Minimal per-server settings in `fastagent.config.yaml`:
|
|
150
|
+
|
|
151
|
+
```yaml
|
|
152
|
+
mcp:
|
|
153
|
+
servers:
|
|
154
|
+
myserver:
|
|
155
|
+
transport: http # or sse
|
|
156
|
+
url: http://localhost:8001/mcp # or /sse for SSE servers
|
|
157
|
+
auth:
|
|
158
|
+
oauth: true # default: true
|
|
159
|
+
redirect_port: 3030 # default: 3030
|
|
160
|
+
redirect_path: /callback # default: /callback
|
|
161
|
+
# scope: "user" # optional; if omitted, server defaults are used
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
- The OAuth client uses PKCE and in-memory token storage (no tokens written to disk).
|
|
165
|
+
- Token persistence: by default, tokens are stored securely in your OS keychain via `keyring`. If a keychain is unavailable (e.g., headless container), in-memory storage is used for the session.
|
|
166
|
+
- To force in-memory only per server, set:
|
|
167
|
+
|
|
168
|
+
```yaml
|
|
169
|
+
mcp:
|
|
170
|
+
servers:
|
|
171
|
+
myserver:
|
|
172
|
+
transport: http
|
|
173
|
+
url: http://localhost:8001/mcp
|
|
174
|
+
auth:
|
|
175
|
+
oauth: true
|
|
176
|
+
persist: memory
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
- To disable OAuth for a specific server , set `auth.oauth: false` for that server.
|
|
180
|
+
|
|
145
181
|
## Workflows
|
|
146
182
|
|
|
147
183
|
### Chain
|
|
@@ -2,8 +2,8 @@ from contextlib import asynccontextmanager
|
|
|
2
2
|
|
|
3
3
|
from fastapi import Body, FastAPI, HTTPException
|
|
4
4
|
|
|
5
|
+
from fast_agent.agents import McpAgent
|
|
5
6
|
from fast_agent.agents.agent_types import AgentConfig
|
|
6
|
-
from fast_agent.agents.mcp_agent import McpAgent
|
|
7
7
|
from fast_agent.core import Core
|
|
8
8
|
from fast_agent.core.direct_factory import get_model_factory
|
|
9
9
|
from fast_agent.mcp import PromptMessageExtended
|
|
@@ -3,7 +3,7 @@ from contextlib import asynccontextmanager
|
|
|
3
3
|
from fastapi import FastAPI, HTTPException
|
|
4
4
|
from pydantic import BaseModel
|
|
5
5
|
|
|
6
|
-
from fast_agent
|
|
6
|
+
from fast_agent import FastAgent
|
|
7
7
|
|
|
8
8
|
# Create FastAgent without parsing CLI args (plays nice with uvicorn)
|
|
9
9
|
fast = FastAgent("fast-agent demo", parse_cli_args=False, quiet=True)
|
|
@@ -13,7 +13,7 @@ import asyncio
|
|
|
13
13
|
from rich.console import Console
|
|
14
14
|
from rich.panel import Panel
|
|
15
15
|
|
|
16
|
-
from fast_agent
|
|
16
|
+
from fast_agent import FastAgent
|
|
17
17
|
from fast_agent.mcp.helpers.content_helpers import get_resource_text
|
|
18
18
|
|
|
19
19
|
fast = FastAgent("Elicitation Forms Demo", quiet=True)
|
|
@@ -14,7 +14,7 @@ from game_character_handler import game_character_elicitation_handler
|
|
|
14
14
|
from rich.console import Console
|
|
15
15
|
from rich.panel import Panel
|
|
16
16
|
|
|
17
|
-
from fast_agent
|
|
17
|
+
from fast_agent import FastAgent
|
|
18
18
|
from fast_agent.mcp.helpers.content_helpers import get_resource_text
|
|
19
19
|
|
|
20
20
|
fast = FastAgent("Game Character Creator", quiet=True)
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
default_model: haiku
|
|
14
14
|
# mcp-ui support: disabled, enabled or auto. "auto" opens the web browser on the asset automatically
|
|
15
|
+
# mcp_ui_output_dir: ".fast-agent/ui" # Where to write MCP-UI HTML files (relative to CWD if not absolute)
|
|
15
16
|
# mcp_ui_mode: enabled
|
|
16
17
|
|
|
17
18
|
# Logging and Console Configuration:
|
|
@@ -40,5 +41,4 @@ mcp:
|
|
|
40
41
|
command: "npx"
|
|
41
42
|
args: ["-y", "@modelcontextprotocol/server-filesystem", "."]
|
|
42
43
|
huggingface:
|
|
43
|
-
|
|
44
|
-
url: "https://huggingface.co/mcp"
|
|
44
|
+
url: "https://huggingface.co/mcp?login"
|
|
@@ -6,7 +6,7 @@ from typing import List, Union
|
|
|
6
6
|
|
|
7
7
|
from mcp.types import ImageContent, TextContent
|
|
8
8
|
|
|
9
|
-
from fast_agent
|
|
9
|
+
from fast_agent import FastAgent
|
|
10
10
|
from fast_agent.core.prompt import Prompt
|
|
11
11
|
from fast_agent.llm.request_params import RequestParams
|
|
12
12
|
|
|
@@ -5,7 +5,7 @@ Parallel Workflow showing Fan Out and Fan In agents, using different models
|
|
|
5
5
|
import asyncio
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
|
|
8
|
-
from fast_agent
|
|
8
|
+
from fast_agent import FastAgent
|
|
9
9
|
from fast_agent.core.prompt import Prompt
|
|
10
10
|
|
|
11
11
|
# Create the application
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "fast-agent-mcp"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.5"
|
|
4
4
|
description = "Define, Prompt and Test MCP enabled Agents and Workflows"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { file = "LICENSE" }
|
|
@@ -12,7 +12,7 @@ classifiers = [
|
|
|
12
12
|
"License :: OSI Approved :: Apache Software License",
|
|
13
13
|
"Operating System :: OS Independent"
|
|
14
14
|
]
|
|
15
|
-
requires-python = ">=3.13.
|
|
15
|
+
requires-python = ">=3.13.5"
|
|
16
16
|
dependencies = [
|
|
17
17
|
"fastapi>=0.115.6",
|
|
18
18
|
"mcp==1.14.0",
|
|
@@ -39,6 +39,7 @@ dependencies = [
|
|
|
39
39
|
"a2a-sdk>=0.3.0",
|
|
40
40
|
"email-validator>=2.2.0",
|
|
41
41
|
"pyperclip>=1.9.0",
|
|
42
|
+
"keyring>=24.3.1",
|
|
42
43
|
]
|
|
43
44
|
|
|
44
45
|
# For Azure OpenAI with DefaultAzureCredential support, install with: pip install fast-agent-mcp[azure]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"""fast-agent - An MCP native agent application framework"""
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING
|
|
3
4
|
|
|
4
5
|
# Configuration and settings (safe - pure Pydantic models)
|
|
5
6
|
from fast_agent.config import (
|
|
@@ -73,10 +74,12 @@ def __getattr__(name: str):
|
|
|
73
74
|
|
|
74
75
|
return ToolAgent
|
|
75
76
|
elif name == "McpAgent":
|
|
77
|
+
# Import directly from submodule to avoid package re-import cycles
|
|
76
78
|
from fast_agent.agents.mcp_agent import McpAgent
|
|
77
79
|
|
|
78
80
|
return McpAgent
|
|
79
81
|
elif name == "FastAgent":
|
|
82
|
+
# Import from the canonical implementation to avoid recursive imports
|
|
80
83
|
from fast_agent.core.fastagent import FastAgent
|
|
81
84
|
|
|
82
85
|
return FastAgent
|
|
@@ -85,7 +88,8 @@ def __getattr__(name: str):
|
|
|
85
88
|
|
|
86
89
|
|
|
87
90
|
# Help static analyzers/IDEs resolve symbols and signatures without importing at runtime.
|
|
88
|
-
if
|
|
91
|
+
if TYPE_CHECKING: # pragma: no cover - typing aid only
|
|
92
|
+
# Provide a concrete import path for type checkers/IDEs
|
|
89
93
|
from fast_agent.core.fastagent import FastAgent as FastAgent # noqa: F401
|
|
90
94
|
|
|
91
95
|
|
|
@@ -124,7 +128,6 @@ __all__ = [
|
|
|
124
128
|
"LlmStopReason",
|
|
125
129
|
"RequestParams",
|
|
126
130
|
# Agents (lazy loaded)
|
|
127
|
-
"ToolAgentSynchronous",
|
|
128
131
|
"LlmAgent",
|
|
129
132
|
"LlmDecorator",
|
|
130
133
|
"ToolAgent",
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Fast Agent - Agent implementations and workflow patterns.
|
|
3
|
+
|
|
4
|
+
This module re-exports agent classes with lazy imports to avoid circular
|
|
5
|
+
dependencies during package initialization while preserving a clean API:
|
|
6
|
+
|
|
7
|
+
from fast_agent.agents import McpAgent, ToolAgent, LlmAgent
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from typing import TYPE_CHECKING
|
|
11
|
+
|
|
12
|
+
from fast_agent.agents.agent_types import AgentConfig
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def __getattr__(name: str):
|
|
16
|
+
"""Lazily resolve agent classes to avoid import cycles."""
|
|
17
|
+
if name == "LlmAgent":
|
|
18
|
+
from .llm_agent import LlmAgent
|
|
19
|
+
|
|
20
|
+
return LlmAgent
|
|
21
|
+
elif name == "LlmDecorator":
|
|
22
|
+
from .llm_decorator import LlmDecorator
|
|
23
|
+
|
|
24
|
+
return LlmDecorator
|
|
25
|
+
elif name == "ToolAgent":
|
|
26
|
+
from .tool_agent import ToolAgent
|
|
27
|
+
|
|
28
|
+
return ToolAgent
|
|
29
|
+
elif name == "McpAgent":
|
|
30
|
+
from .mcp_agent import McpAgent
|
|
31
|
+
|
|
32
|
+
return McpAgent
|
|
33
|
+
elif name == "ChainAgent":
|
|
34
|
+
from .workflow.chain_agent import ChainAgent
|
|
35
|
+
|
|
36
|
+
return ChainAgent
|
|
37
|
+
elif name == "EvaluatorOptimizerAgent":
|
|
38
|
+
from .workflow.evaluator_optimizer import EvaluatorOptimizerAgent
|
|
39
|
+
|
|
40
|
+
return EvaluatorOptimizerAgent
|
|
41
|
+
elif name == "IterativePlanner":
|
|
42
|
+
from .workflow.iterative_planner import IterativePlanner
|
|
43
|
+
|
|
44
|
+
return IterativePlanner
|
|
45
|
+
elif name == "ParallelAgent":
|
|
46
|
+
from .workflow.parallel_agent import ParallelAgent
|
|
47
|
+
|
|
48
|
+
return ParallelAgent
|
|
49
|
+
elif name == "RouterAgent":
|
|
50
|
+
from .workflow.router_agent import RouterAgent
|
|
51
|
+
|
|
52
|
+
return RouterAgent
|
|
53
|
+
else:
|
|
54
|
+
raise AttributeError(f"module '{__name__}' has no attribute '{name}'")
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
if TYPE_CHECKING: # pragma: no cover - type checking only
|
|
58
|
+
from .llm_agent import LlmAgent as LlmAgent # noqa: F401
|
|
59
|
+
from .llm_decorator import LlmDecorator as LlmDecorator # noqa: F401
|
|
60
|
+
from .mcp_agent import McpAgent as McpAgent # noqa: F401
|
|
61
|
+
from .tool_agent import ToolAgent as ToolAgent # noqa: F401
|
|
62
|
+
from .workflow.chain_agent import ChainAgent as ChainAgent # noqa: F401
|
|
63
|
+
from .workflow.evaluator_optimizer import (
|
|
64
|
+
EvaluatorOptimizerAgent as EvaluatorOptimizerAgent,
|
|
65
|
+
) # noqa: F401
|
|
66
|
+
from .workflow.iterative_planner import IterativePlanner as IterativePlanner # noqa: F401
|
|
67
|
+
from .workflow.parallel_agent import ParallelAgent as ParallelAgent # noqa: F401
|
|
68
|
+
from .workflow.router_agent import RouterAgent as RouterAgent # noqa: F401
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
__all__ = [
|
|
72
|
+
# Core agents
|
|
73
|
+
"LlmAgent",
|
|
74
|
+
"LlmDecorator",
|
|
75
|
+
"ToolAgent",
|
|
76
|
+
"McpAgent",
|
|
77
|
+
# Workflow agents
|
|
78
|
+
"ChainAgent",
|
|
79
|
+
"EvaluatorOptimizerAgent",
|
|
80
|
+
"IterativePlanner",
|
|
81
|
+
"ParallelAgent",
|
|
82
|
+
"RouterAgent",
|
|
83
|
+
# Types
|
|
84
|
+
"AgentConfig",
|
|
85
|
+
]
|
|
@@ -13,14 +13,17 @@ def main():
|
|
|
13
13
|
# Check if first arg is not already a subcommand
|
|
14
14
|
first_arg = sys.argv[1]
|
|
15
15
|
|
|
16
|
-
if
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
# Only auto-route if any known go-specific options are present
|
|
17
|
+
has_go_options = any(
|
|
18
|
+
(arg in GO_SPECIFIC_OPTIONS) or any(arg.startswith(opt + "=") for opt in GO_SPECIFIC_OPTIONS)
|
|
19
|
+
for arg in sys.argv[1:]
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
if first_arg not in KNOWN_SUBCOMMANDS and has_go_options:
|
|
20
23
|
# Find where to insert 'go' - before the first go-specific option
|
|
21
24
|
insert_pos = 1
|
|
22
25
|
for i, arg in enumerate(sys.argv[1:], 1):
|
|
23
|
-
if arg in GO_SPECIFIC_OPTIONS or any(
|
|
26
|
+
if (arg in GO_SPECIFIC_OPTIONS) or any(
|
|
24
27
|
arg.startswith(opt + "=") for opt in GO_SPECIFIC_OPTIONS
|
|
25
28
|
):
|
|
26
29
|
insert_pos = i
|