Skip to main content

Production-ready feedback collection system for FastMCP servers

Project description

FastMCP Feedback

Production-ready feedback collection system for FastMCP servers.

Add structured feedback collection (bug reports, feature requests, general feedback) to any FastMCP server with a single line of code.

Features

  • One-Line Integration - Add feedback tools to any FastMCP server instantly
  • Modular Mixins - Selective tool registration for fine-grained control
  • Multi-Database Support - SQLite (dev), PostgreSQL, MySQL (production)
  • Privacy-Compliant Analytics - Optional usage insights without sensitive data
  • Type-Safe - Full Pydantic validation and type hints
  • Well-Tested - 97%+ test coverage

Installation

From PyPI (Recommended)

# Using uv (recommended)
uv add fastmcp-feedback

# Using pip
pip install fastmcp-feedback

# With PostgreSQL support
uv add "fastmcp-feedback[postgresql]"

From Git (Latest Development)

# Latest from main branch
uv add git+https://git.supported.systems/fastmcp-feedback/fastmcp-feedback.git

# Specific release tag
uv add git+https://git.supported.systems/fastmcp-feedback/fastmcp-feedback.git@2026.01.12

# Specific branch (for testing PRs)
uv add git+https://git.supported.systems/fastmcp-feedback/fastmcp-feedback.git@feature-branch

Local Development Install

For contributors or local modifications:

# Clone the repository
git clone git@git.supported.systems:fastmcp-feedback/fastmcp-feedback.git
cd fastmcp-feedback

# Create virtual environment and install in editable mode
uv venv
uv pip install -e ".[dev]"

# Run tests to verify
uv run pytest

Quick Start

Basic Integration (One Line)

from fastmcp import FastMCP
from fastmcp_feedback import add_feedback_tools

app = FastMCP("My Server")
add_feedback_tools(app)  # Adds 4 feedback tools instantly!

# That's it! Your server now has:
# - submit_feedback: Collect bug reports, feature requests, general feedback
# - list_feedback: Retrieve and filter feedback items
# - get_feedback_stats: Aggregate statistics
# - update_feedback_status: Workflow management (new → reviewing → resolved)

With Custom Database

# SQLite with custom path
add_feedback_tools(app, database_url="sqlite:///./data/feedback.db")

# PostgreSQL for production
add_feedback_tools(app, database_url="postgresql://user:pass@localhost/mydb")

With Analytics Enabled

add_feedback_tools(app, enable_insights=True)
# Enables privacy-compliant usage tracking

Advanced Usage

Mixin Architecture

For fine-grained control over which tools are exposed:

from fastmcp_feedback import (
    SubmissionMixin,
    RetrievalMixin,
    ManagementMixin,
    get_database_session,
)

db_session = get_database_session("sqlite:///feedback.db")

# Only expose submission (public-facing)
submission = SubmissionMixin(db_session)
submission.register_tools(app)

# Add retrieval with custom prefix
retrieval = RetrievalMixin(db_session)
retrieval.register_tools(app, prefix="analytics_")

# Admin-only management tools
management = ManagementMixin(db_session)
management.register_tools(admin_app, prefix="admin_")

Available Mixins

Mixin Tools Use Case
SubmissionMixin submit_feedback Public feedback collection
RetrievalMixin list_feedback, get_feedback_stats Dashboards, reporting
ManagementMixin update_feedback_status Admin workflow
InsightsMixin record_insight, get_insights_summary Analytics

Multi-Tenant Pattern

# Each tenant gets isolated database
def get_tenant_tools(tenant_id: str):
    session = get_database_session(f"sqlite:///data/{tenant_id}.db")
    submission = SubmissionMixin(session)
    submission.register_tools(app, prefix=f"tenant_{tenant_id}_")

Server Composition

from fastmcp_feedback import create_feedback_server

# Create dedicated feedback server
feedback_server = create_feedback_server("Feedback API")

# Compose into main application
main_app.import_server(feedback_server, prefix="feedback_")

API Reference

add_feedback_tools(app, database_url=None, enable_insights=False)

Add all feedback tools to a FastMCP server.

Parameters:

  • app: FastMCP server instance
  • database_url: Database connection string (default: sqlite:///feedback.db)
  • enable_insights: Enable privacy-compliant analytics (default: False)

Feedback Types

  • bug_report - Bug reports with severity levels
  • feature_request - Feature suggestions with priority
  • general - General feedback and comments

Status Workflow

newreviewingplannedin_progressresolved / wont_fix

Documentation

Full documentation: https://fastmcp-feedback.l.supported.systems

Examples

See the fastmcp-feedback-showcase repository for comprehensive examples demonstrating all capabilities:

uvx fastmcp-feedback-showcase  # Run full demo

Contributing

We welcome contributions! FastMCP Feedback is designed to be contributor-friendly.

Quick Contribution Setup

# Fork and clone
git clone git@git.supported.systems:YOUR_USERNAME/fastmcp-feedback.git
cd fastmcp-feedback

# Install with dev dependencies
uv venv
uv pip install -e ".[dev]"

# Create feature branch
git checkout -b feature/your-feature

# Make changes, run tests
uv run pytest
uv run ruff check .

# Submit PR

See CONTRIBUTING.md for detailed guidelines.

Versioning

This project uses calendar versioning (CalVer): YYYY.MM.DD

  • 2026.01.12 = Release on January 12, 2026
  • Multiple releases on same day: 2026.01.12.1, 2026.01.12.2

This makes it clear when each release was made and simplifies dependency management.

License

MIT License - see LICENSE for details.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastmcp_feedback-2026.1.12.1.tar.gz (81.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastmcp_feedback-2026.1.12.1-py3-none-any.whl (29.8 kB view details)

Uploaded Python 3

File details

Details for the file fastmcp_feedback-2026.1.12.1.tar.gz.

File metadata

  • Download URL: fastmcp_feedback-2026.1.12.1.tar.gz
  • Upload date:
  • Size: 81.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for fastmcp_feedback-2026.1.12.1.tar.gz
Algorithm Hash digest
SHA256 26f75419e7787c982204c62ce78de1f13eec8915f64acee84597389722ed902d
MD5 d289a9b251caab93af6358aac2c3ee97
BLAKE2b-256 7384cbd09919ea66ee263e7da6bf07f6389cee7a0afedacd55f9d1e210dea24b

See more details on using hashes here.

File details

Details for the file fastmcp_feedback-2026.1.12.1-py3-none-any.whl.

File metadata

File hashes

Hashes for fastmcp_feedback-2026.1.12.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6a3dec71f3d3eae4eb0102eb0a86aa7853fb0419fb506a5a13d17deaf842c53c
MD5 105a417f57d3788ec564af81f38c4a2c
BLAKE2b-256 dbee327a3f6c7ac5cde56c7c9449dbc6c0ab78b15c06a51ad5645ab880240120

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page