Sample audit report
firecrawl/firecrawl-mcp-server
This independent public-code sample is based on commit 980a76f31f93e865fe6c6636eb938995e1d3444b. It is not a commissioned review or private vulnerability disclosure, and no Firecrawl API calls, customer data, credentials, or live endpoint tests were used.
Executive Summary
The server has a mature MCP shape: hosted cloud mode is separated from local/stdin use, OAuth access-token introspection exists for hosted MCP, Zod schemas are used heavily, MCP safety annotations are present, and cloud safe mode disables interactive browser actions.
The main risks are boundary clarity and regression proof. Remote transport behavior is spread across several docs and env vars, local file parsing can read arbitrary paths when enabled, monitor/update/delete paths need focused tests, and CI currently builds but does not exercise the advertised Jest test command.
Findings
Med Remote transport exposure policy is scattered across code and docs
Evidence: src/index.ts, README.md, and VERSIONING.md.
Impact: Operators have to reconstruct bind address, auth source, host mode, and safe-mode behavior from several places. That is a common source of unsafe MCP remote deployments.
Recommended fix: Add a single transport exposure matrix and a startup summary log line covering mode, host, port, credential source category, and safe-mode state.
Med Local file parse needs an explicit trust boundary
Evidence: firecrawl_parse resolves a supplied path, reads it, and uploads it to the configured self-hosted parse endpoint.
Impact: The tool is read-only for filesystem mutation, but a local MCP client can still ask it to read and upload local files. That should be treated as a sensitive local capability.
Recommended fix: Document trusted-client requirements and add an optional parse root allowlist such as FIRECRAWL_PARSE_ROOT.
Med CI builds, but does not prove auth/tool regressions stay fixed
Evidence: CI runs install and build. The package test script references Jest, but Jest is not present in dev dependencies and no first-party test files were found.
Impact: Build coverage does not prove OAuth failure paths, safe-mode action filtering, monitor annotations, feedback behavior, or parse boundaries.
Recommended fix: Fix the test runner dependency and run focused tests in CI.
Low Feedback write surfaces deserve retry/error regression tests
Evidence: firecrawl_search_feedback and firecrawl_feedback submit additive account-associated feedback records.
Impact: The annotations are reasonable, but agents can retry or loop if terminal errors are ambiguous.
Recommended fix: Test 400/409 handling, daily cap handling, already-submitted handling, and missing credential behavior.