Skip to content

FastMCP Feedback

Records every tool call your FastMCP server handles, and lets people and models report problems with the calls behind them attached.
tests in the suite
804
line and branch coverage
95%
FastMCP versions tested
2.12 to 4.x

Measured on release 2026.10.01.2, 1 October 2026, with the PostgreSQL tests enabled.

FastMCP Feedback is a Python package for FastMCP servers. A middleware records each tool call with its timing, outcome and caller, and a set of feedback tools lets anyone using the server file a report that arrives with the calls behind it.

Terminal window
uv add "fastmcp-feedback[instrumentation]"

The base package (uv add fastmcp-feedback) covers the middleware with stderr output and the feedback tools; the instrumentation extra adds database storage. All extras are listed under Installation and extras.

from fastmcp import FastMCP
from fastmcp_feedback.instrumentation import instrument
app = FastMCP("My Server")
instrument(app) # one JSON line per tool call on stderr

Recording happens off the call path, through a bounded queue: it never slows a tool down and never turns a working call into a failing one.

Every call, with its outcome

Tool, duration, outcome, caller and payload sizes, to stderr, a callback or SQLite and PostgreSQL tables. Secrets are redacted before anything is stored.

Errors returned as data

Results like {"status": "failed"} count as soft errors, so error rates include tools that never raise.

Reports with evidence

submit_feedback attaches the reporter’s recent calls, so “the render tool hung” comes with the render calls.

Search by meaning

Embed reports, errors and event text with pgvector, and ask whether anyone has seen this before.

The rest of the site is organized by what you need: how-to guides for specific tasks such as storing records in Postgres or recording background jobs, reference pages for every parameter and table, and explanations of the architecture and of how reports are matched to calls.