Fast Agent
CAUTIONgrade F · trust 49/100Code, Build and Evaluate agents - excellent Model and Skills/MCP/ACP/A2A Support
a2aacpagentagent frameworkagent skillsclimcpmcp clientOverview
From the repository's own README, as read at the audited commit.
<p align="center"><a href="https://pypi.org/project/fast-agent-mcp/"><img src="https://img.shields.io/pypi/v/fast-agent-mcp?color=%2334D058&label=pypi" /></a><a href="#"><img src="https://github.com/evalstate/fast-agent/actions/workflows/main-checks.yml/badge.svg" /></a><a href="https://github.com/evalstate/fast-agent/issues"><img src="https://img.shields.io/github/issues-raw/evalstate/fast-agent" /></a><a href="https://discord.gg/xg5cJ7ndN6"><img src="https://img.shields.io/discord/1358470293990936787" alt="discord" /></a><img alt="Pepy Total Downloads" src="https://img.shields.io/pepy/dt/fast-agent-mcp?label=pypi%20%7C%20downloads"/><a href="https://github.com/evalstate/fast-agent-mcp/blob/main/LICENSE"><img src="https://img.shields.io/pypi/l/fast-agent-mcp" /></a></p>## Start Here> [!TIP]> Please see https://fast-agent.ai for latest documentation.**`fast-agent`** is a flexible way to interact with LLMs, excellent for use as a Coding Agent, Development Toolkit, Evaluation or Workflow platform.To start an interactive session with shell support, install [uv](https://astral.sh/uv) and run```bashuvx fast-agent-mcp@latest -x```To start coding with Hugging Face inference providers or use your OpenAI Codex plan:```bash# Code with Hugging Face Inference Providersuvx fast-agent-mcp@latest --pack hf-dev# Code with Codex (agents optimized for OpenAI)uvx fast-agent-mcp@latest --pack codex```Enter a shell with `!`, or run shell commands e.g. `! cd web && npm run build`.Manage skills with the `/skills` command, and connect to MCP Servers with `/connect`. The default **`fast-agent`** registry contains skills to let you set up LSP, Agent and Tool Hooks, Compaction strategies, Automation and more.```bash# /connect supports stdio or streamable http (with OAuth)# Start a STDIO server/connect @modelcontextprotocol/server-everything# Connect to a Streamable HTTP Server/connect https://huggingface.co/mcp```It's recommended to install **`fast-agent`** to set up the shell aliases and oth
Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add fast-agent-mcp --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env CODEX_API_KEY=${CODEX_API_KEY} --env CODEX_AUTH_JSON_PATH=${CODEX_AUTH_JSON_PATH} --env DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY} -- uvx fast-agent-mcp{
"mcpServers": {
"fast-agent-mcp": {
"command": "uvx",
"args": [
"fast-agent-mcp"
],
"env": {
"ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
"CODEX_API_KEY": "${CODEX_API_KEY}",
"CODEX_AUTH_JSON_PATH": "${CODEX_AUTH_JSON_PATH}",
"DEEPSEEK_API_KEY": "${DEEPSEEK_API_KEY}"
}
}
}
}Exposed tools (85) 75 read · 10 write · 0 destructive
| Tool | Risk | Description |
|---|---|---|
a3_structured_report | read | items = [f |
a3_trigger_tool_update | write | global _EXTRA_TOOL_ADDED |
a3_unstructured_echo | read | return f |
add_dynamic_app | write | if |
add_dynamic_tool | write | if |
agent__child | read | base |
alpha | read | first alphabetically |
base_tool | read | base |
calculate_divide | read | if b == 0: |
calculate_product | read | return f |
calculate_sum | read | return f |
capitalize_string | read | return text.upper() |
check_weather | read | Check the weather in a given city. |
client_capabilities | read | Expose the capabilities the modern client supplied for this call. |
coding_camel_case | read | return text.title().replace( |
coding_kebab_case | read | return text.lower().replace( |
coding_snake_case | read | return text.lower().replace( |
const_mode | read | Demonstrates a tool schema that includes a const constraint. |
create_profile | write | return f |
echo | read | Echo back the input |
echo_value | read | Echo a value. |
execute | write | Run shell command |
feedback | read | Request rating and feedback fields. |
fetch_magic_string | read | Returns the daily passphrase when the assistant must call a tool. |
fetch_secret | read | Ask the client model to call ``get_secret`` and return its final answer. |
get_image | read | try: |
get_pdf | read | try: |
get_secret | read | Returns a secret code. You must call this tool to get the secret. |
get_status | read | return |
get_video_link | read | Return a ResourceLink to a video. |
getlink | read | return ResourceLink( |
guess | read | if guess < secret_number: |
implementation | read | assert ctx.session.client_params is not None, |
initial_app | read | return |
list_tools_call_count | read | return server.list_tools_calls |
lookup | read | Lookup data. |
lookup_probe_payload | read | Return the probe payload for validation. |
lowercase_string | read | return text.lower() |
math_add | write | return f |
math_multiply | read | return f |
math_subtract | read | return f |
my-tool | read | demo |
open_workspace | read | return |
ping | read | return |
preferences | read | Request enum-based preferences. |
progress_task | read | |
progress_task_no_message | read | |
progress_task_with_helper | read | |
random_case_string | read | return |
random_number | write | import random |
random_string | read | return |
read_resource_call_count | read | return server.read_resource_calls |
read_text_file | read | Read a text file |
render_invalid_widget | read | return |
render_missing_widget | read | return |
render_valid_widget | read | return |
request_console_access | read | Request navigation consent without claiming external authorization completed. |
reverse_string | read | return text[::-1] |
sample | read | Tool that echoes back the input parameter |
sample_many | read | Tool that echoes back the input parameter |
sample_parallel | read | Tool that makes multiple concurrent sampling requests to test parallel processing |
sample_with_image | read | result = await ctx.session.create_message( # ty: ignore[deprecated] |
search | read | Search things |
shirt-colour | read | return |
shirt_colour | read | return |
show_roots | read | return roots.model_dump_json() |
simple_rating | read | Request a simple boolean rating. |
start_t4_small_sandbox | write | Simulate starting a t4-small sandbox without infrastructure or charges. |
string_lower | read | return text.lower() |
string_upper | read | return text.upper() |
test_sampling_with_tools | read | Sample with a tool declaration through the modern resolver API. |
test_sampling_without_tools | read | Sample without tools through the modern resolver API. |
test_tool_result_handling | read | Complete a second sampling turn when the model requests a tool. |
text_count | read | return f |
text_reverse | read | return text[::-1] |
text_uppercase | read | return text.upper() |
update_dynamic_app | write | global resource_version |
url_required_malformed_tool | read | Return URL elicitation required error with malformed data payload. |
url_required_valid_tool | read | Return URL elicitation required error with well-formed data. |
user_profile | read | Request a complex user profile form. |
utility_ping | read | return |
utility_status | read | return |
weather | read | call this to check the weather in a city |
write_text_file | write | Write a text file |
zeta | read | last alphabetically |
Details
- Source
- evalstate/fast-agent
- PyPI
fast-agent-mcp- Transports
- sse · stdio · streamable-http
- Credentials it reads
ANTHROPIC_API_KEYCODEX_API_KEYCODEX_AUTH_JSON_PATHDEEPSEEK_API_KEYDEMO_TOKENFAST_AGENT_HF_TOKEN_SOURCEFAST_AGENT_OAUTH_CLIENT_METADATA_URLFAST_AGENT_OAUTH_RESOURCE_URLFAST_AGENT_OAUTH_SCOPESFAST_AGENT_PRIVACY_FILTER_MAX_WINDOW_TOKENSFAST_AGENT_PRIVACY_FILTER_WINDOW_OVERLAP_TOKENSFAST_AGENT_RESEARCH_HF_TOKEN- License
- Apache-2.0
- Stars
- 3,918 · pushed 0d ago
Trust audit
Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (6 observation(s))
- Shell
- declared (3 observation(s))
- Dependencies
- pinned
- Secrets in source
- found
Findings (25)
module = importlib.import_module(module_path)
module = importlib.import_module(module_name.strip())
def _extract_oauth_callback_params(callback_url: str) -> AuthorizationCodeResult:
params = parse_qs(urlparse(callback_url).query)
callback_url = (
result = _extract_oauth_callback_params(callback_url)
"id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImFlNjc5NWRjLTRiYWUtNDE4YS04NjVkLTA4YTY0MzllZWRhNiIsInR5cCI6IkpXVCJ9.eyJhbXIiOlsib3RwIiwidXJuOm9wZW5haTphbXI6b3RwX2VtYWlsIl0sImF1ZCI6WyJhcHBfRU1vYW1FRVo3M2YwQ2
api_key="programmatic-api-key", # specify the API KEY programmatically, it will override which provided in config file or env var
api_key="programmatic-api-key", # specify the API KEY programmatically, it will override which provided in config file or env var
api_key="programmatic-api-key",
api_key="programmatic-api-key",
api_key="programmatic-api-key",
.gitmodules
.pre-commit-config.yaml
.prettierignore
.env.sample
url_hash = hashlib.md5(url.encode()).hexdigest()[:8]
"../../docs/assets/brand/fast-agent-lockup-light.svg"
"../../docs/assets/brand/fast-agent-lockup-light.svg"
"../../docs/assets/brand/fast-agent-lockup-light.svg"
'data-fa-asciinema-cast="../../assets/a2a/a2a-client-input-required.cast"',
'data-fa-asciinema-cast="../../assets/a2a/a2a-server-card.cast"',
callback_url = (
# Run the dev server (http://127.0.0.1:8000)
url="http://127.0.0.1:41242",
Gates applied: no_behavioural_pass.
Audited 2026-09-14 · audit v0.4.0 · source sha 5a70690438f9 · full audit: observations/trust-audit/mcp-server/evalstate__fast-agent.json · Report an issue or request a re-scan
Audit history
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-09-14 | 5a70690438f9 | CAUTION | F | 49 | first audit |
Alternatives
Other servers in the same categories, safer ones first.
Questions
What is the Fast Agent MCP server?
Code, Build and Evaluate agents - excellent Model and Skills/MCP/ACP/A2A Support
What tools does Fast Agent expose?
85 in total: 75 read-only, 10 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is Fast Agent safe to connect to an agent?
With care. The audit graded it F (49/100) and found 25 things worth knowing before you trust this server, listed below with the exact line each was found on.
What credentials does Fast Agent need?
It reads ANTHROPIC_API_KEY, CODEX_API_KEY, CODEX_AUTH_JSON_PATH, DEEPSEEK_API_KEY, DEMO_TOKEN, FAST_AGENT_HF_TOKEN_SOURCE, FAST_AGENT_OAUTH_CLIENT_METADATA_URL, FAST_AGENT_OAUTH_RESOURCE_URL, FAST_AGENT_OAUTH_SCOPES, FAST_AGENT_PRIVACY_FILTER_MAX_WINDOW_TOKENS, FAST_AGENT_PRIVACY_FILTER_WINDOW_OVERLAP_TOKENS and FAST_AGENT_RESEARCH_HF_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Fast Agent run?
It speaks sse, stdio and streamable-http, so it runs as a local process your client starts. It is published on PyPI as fast-agent-mcp.
How current is this page?
The grade is for one exact copy of the source (5a70690438f9), read on 2026-09-14. The repository is watched and re-audited when it changes.
Provenance: OBSERVED · read 2026-09-14 · job trust-audit-2026-09-14