FastAgent
A Python-first CLI and framework for building, running, and evaluating MCP-enabled agent workflows.
- Source repo
- evalstate/fast-agent
- Stars
- ★ 4k
- Last updated
- today
- License
- Apache-2.0
- Primary language
- Python
- FA score
- 60/100 · Some gaps
At a glance
- How it runs
- Works with
- Universal · cross-platformCodex · OpenAI API · Claude API
- Cost
- Free software; you pay for model usage
- Setup effort
- Low · running in minutes
- You'll need
- Typical use
- A Python developer who needs to chain MCP-enabled agents that summarize a URL and turn the result into a social-media post.
- Not a fit if
- Users who want zero setup and no uv install or model keys
- Users who need a graphical interface rather than a terminal
- Source review
- 60/100 · Some gaps
What does this agent do, and when should you use it?
FastAgent is a CLI-first Python framework and interactive tool for coding, development tooling, evaluations, and workflow applications. Developers define agents and workflows with the FastAgent class and decorators such as @fast.agent, @fast.chain, and @fast.parallel, then execute them inside fast.run(). It connects to stdio, SSE, and Streamable HTTP MCP servers, and an application can also run in MCP server mode. The project includes an optional prompt_toolkit terminal interface, Rich-based streaming terminal output, Shell Mode, and commands for skills and MCP connections. Its documented model support includes Anthropic, OpenAI, Google, Azure, Ollama, Deepseek, and additional providers through TensorZero; FastAgent applications can also be used with ACP clients.
Users can run fast-agent go for an interactive session, use /skills to manage skills, use /connect to attach MCP servers, and issue shell commands with !, including commands such as ! cd web && npm run build. In Python, an application creates FastAgent, registers agents with @fast.agent using instruction, servers, model, human_input, and function tools, then calls them with agent(...), .send(), .prompt(), or .interactive() inside async with fast.run(). It supplies chain sequencing, parallel fan-out/fan-in, evaluator_optimizer refinement loops, router selection, orchestrator planning, maker K-voting, and child agents exposed as tools. A program can be exposed in MCP server mode with uv run agent.py --transport http --port 8001; HTTP and SSE MCP connections can use OAuth with PKCE, a local callback, and keyring-backed secret storage.
- A Python developer who needs to chain MCP-enabled agents that summarize a URL and turn the result into a social-media post.
- A developer using an OpenAI Codex plan or Hugging Face Inference Providers who wants to start a coding session through --pack codex or --pack hf-dev.
- A team that needs to fan out translation, research, or multi-model tasks and combine results through a fan-in agent.
- An engineer who wants to expose a custom agent.py application over HTTP as an MCP server for another MCP client.
- An integrator connecting to authenticated remote HTTP or SSE MCP servers that require OAuth and PKCE.
- An application developer who needs evaluator_optimizer refinement or MAKER repeated sampling and voting for selected outputs.
How do you install or deploy this agent?
Install uv first, then run:
uv pip install fast-agent-mcp
fast-agent goAlternatively, install it as a uv tool:
uv tool install -U fast-agent-mcp
fast-agent --model opus -x --smartThe supplied material does not document the exact environment variables or configuration needed for individual model-provider credentials. Those provider-specific credentials must be configured before using the selected provider. No Python version requirement is stated.
How do you use this agent?
For a quick interactive session, run:
uvx fast-agent-mcp@latest -xInside the session, use /skills, /connect @modelcontextprotocol/server-everything, or /connect https://huggingface.co/mcp. To start a project, run fast-agent scaffold and then uv run agent.py. To expose it as an MCP server, run:
uv run agent.py --transport http --port 8001The minimal Python pattern is to create FastAgent, define an agent with @fast.agent, then call await agent("message") inside async with fast.run() as agent.
What are this agent's strengths and limitations?
- It documents both MCP client connectivity and MCP server mode, including stdio, SSE, and Streamable HTTP transports.
- It offers concrete, composable workflow primitives: chains, parallel runs, routing, orchestration, evaluator-optimizer loops, MAKER, and child agents as tools.
- It has documented paths for Anthropic, OpenAI, Google, Azure, Ollama, Deepseek, local/generic models, and more providers through TensorZero.
- Its interactive CLI combines skill management, MCP connection commands, Shell Mode, completions, and in-terminal menus for development work.
- Its remote MCP OAuth flow documents PKCE, callback handling, an in-memory fallback, and keyring token storage.
- It requires Python and uv, while the supplied material does not state a Python version, provider credential setup, or complete production deployment requirements.
- Model access, remote MCP services, and OAuth flows commonly require network connectivity, and model-provider capabilities are not identical.
- MCP tool-result content is constrained by provider APIs: OpenAI supports text only, Anthropic supports text and images, and Google additionally supports PDFs and video.
- When keyring is unavailable, OAuth token storage falls back to memory for the session, which may not suit headless deployments requiring persistent authentication.
- The README notes extra Windows configuration for Filesystem and Docker MCP servers, but the supplied material does not provide those changes.
How does this agent compare with similar options?
The project states that it builds on Sarmad Qadri's mcp-agent project. It also says its Agents As Tools workflow is inspired by the similarly named OpenAI Agents SDK feature; the supplied material does not provide a feature-by-feature comparison or migration guide.
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| FastAgent This agent | 60 · Some gaps | CLIFree + model costs | ★ 4k | today | Python | Codex · OpenAI API · Claude API |
| Pachca API Agent Toolkit | 69 · Some gaps | — | ★ 11 | 1d ago | TypeScript | ChatGPT · Codex · Claude Code · Claude.ai |
| Microsoft Learn MCP Server | 68 · Some gaps | MCP serverFree | ★ 2k | 9d ago | TypeScript | ChatGPT · Codex · Claude Code · Claude.ai |
| MobileBuildMCP | 54 · Major gaps | CLIFree | ★ 6.6k | 17d ago | TypeScript | Codex · Claude Code |
How does FollowAgents rate this agent?
Why each dimension lost points
The README describes MCP, shell, HTTP/ACP/A2A exposure, OAuth, and keyring persistence; OAuth can be disabled per server or set to memory, giving some visibility into data handling. The CLI and application also support shell use, server connections, and tool execution, but the supplied material does not show their permission boundaries, per-action confirmation, or comprehensive side-effect controls, so least privilege, confirmation, and external-effects controls are only partial. No dependency vulnerability audit is provided; the patch CLI has error handling but no rollback mechanism is evidenced. Attribution consists of a few README references and a patch license note; publisher identity is unknown.
The README examples, getting-started guide, and CLI subcommands broadly align; the CLI distinguishes interactive model selection from automation configuration. However, static material cannot independently verify product claims such as end-to-end testing. pyproject pins many core dependency versions, offering some reproducibility evidence, but does not explain dependency availability or compatibility policy. The CLI provides specific messages for duplicate shell use, uvloop fallback, patch arguments, and read errors.
The README covers coding, development, evaluation, workflows, interactive use, automation, and multiple protocols and models, with examples for agents, workflows, and tools. The framework lets users specify agent servers, child agents, and parallel limits, but the actual permission boundaries for shell and server connections are not sufficiently shown in the supplied code. The SKILL.md samples describe specific triggers, but they are a small sample from example card packs and cannot establish overall product skill coverage. Python version bounds, uv installation, a Windows configuration note, and a headless OAuth fallback show some environmental fit.
The README, getting-started guide, source layout notes, and CLI commands provide clear information architecture. Installation, configuration, commands, and varied examples are available, though the README points to an external site for current documentation and this review includes only selected files. Package and CLI names and the version are visible, and OAuth documentation is version-labeled; no changelog is included in the supplied material. The Apache-2.0 LICENSE is complete. Root AGENTS.md contains contributor and architecture guidance and should not be treated as user-facing Agent instructions. The pyproject author field and repository workflows provide limited maintenance clues, but do not establish maintainer responsibilities or update commitments.
The framework offers agent orchestration, MCP tools, model adapters, skills, shell access, protocol adapters, and evaluation workflows. Examples show callable outputs and CLI automation options, supporting practical value. Complex model, server, and plugin combinations also carry configuration and dependency costs; the supplied material gives no usage, cost-control, or value comparison, so cost-benefit is only partly assessable.
The pyproject, README, getting-started guide, CLI source, and CI configuration corroborate installation, commands, version, and some mechanisms. Some features and test coverage are asserted in the README, but the supplied excerpts do not substantiate every implementation or test result; CI shows intended checks, not that this revision passed them. Documentation does little to distinguish verified behavior from product claims and inference, limiting the fact/inference-separation score.
- The framework can connect to external MCP servers and enable shell, tool, and server exposure capabilities; review the full configuration and permissions to understand reachable resources and side effects before deployment.
- The README’s testing, compatibility, and feature-coverage claims could not all be independently verified from the supplied static material.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
Release notes excerpt
Major Changes - Kimi K3.1 Support - Herdr App support (with new {{herdrApp}} system prompt template - Programmatic Tool Calling enabled for GLM-5.3-Flash, Kimi 3.1 and OpenAI GPT-6 Models (uses pydantic monty -- enable/disable for any model through the model string or --ptc or --no-ptc CLI options). What's Changed * docs: fix iterative_planner decorator docstring arguments by @mmporong in https://github.com/evalstate/fast-agent/pull/1048 * fix: report maxTokens and stopSequence in MCP sampling results by @jaeminbird in https://github.com/evalstate/fast-agent/pull/1052 …View on GitHub ↗ -
Release notes excerpt
Changes fast-agent 0.10.49 ⚠️ Behaviour changes • Z.ai defaults to GLM‑5.3. A bare zai model and the zaiglm alias now select zai.glm-5.3 (previously glm-5.2). Use zaiglm52 or zai.glm-5.2 to stay on GLM‑5.2. A zai.default_model setting still takes precedence. • The glm alias moves to GLM‑5.3 on Hugging Face (hf.zai-org/GLM-5.3:zai-org). glm52 keeps its GLM‑5.2 route. • GLM‑5.3 reasoning is always on. It supports low, high and max only, and defaults to max. On GLM‑5.2, reasoning=off or none turned reasoning off. On GLM‑5.3 those settings log a warning and max is used. …View on GitHub ↗ -
Release notes excerpt
What's Changed * ATIF: export v1.8 with audio content parts by @evalstate in https://github.com/evalstate/fast-agent/pull/1010 * fix: finalize A2A shutdown when transport close fails by @liangzhechen655 in https://github.com/evalstate/fast-agent/pull/1003 * fix: preserve named properties and literals in tool schemas by @liangzhechen655 in https://github.com/evalstate/fast-agent/pull/1004 * fix: drain tasks before closing run_sync worker loops by @liangzhechen655 in https://github.com/evalstate/fast-agent/pull/1002 …View on GitHub ↗
FAQ
Is FastAgent locked to one model provider?
Can it connect to authenticated remote MCP services?
Can another tool call a FastAgent application?
What are the safety boundaries of Shell Mode?
Thanks — we use this to improve the page.