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 instancedatabase_url: Database connection string (default:sqlite:///feedback.db)enable_insights: Enable privacy-compliant analytics (default:False)
Feedback Types
bug_report- Bug reports with severity levelsfeature_request- Feature suggestions with prioritygeneral- General feedback and comments
Status Workflow
new → reviewing → planned → in_progress → resolved / 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
- Documentation: https://fastmcp-feedback.l.supported.systems
- Repository: https://git.supported.systems/fastmcp-feedback/fastmcp-feedback
- Issues: https://git.supported.systems/fastmcp-feedback/fastmcp-feedback/issues
- Showcase: https://git.supported.systems/fastmcp-feedback/fastmcp-example
- FastMCP: https://gofastmcp.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26f75419e7787c982204c62ce78de1f13eec8915f64acee84597389722ed902d
|
|
| MD5 |
d289a9b251caab93af6358aac2c3ee97
|
|
| BLAKE2b-256 |
7384cbd09919ea66ee263e7da6bf07f6389cee7a0afedacd55f9d1e210dea24b
|
File details
Details for the file fastmcp_feedback-2026.1.12.1-py3-none-any.whl.
File metadata
- Download URL: fastmcp_feedback-2026.1.12.1-py3-none-any.whl
- Upload date:
- Size: 29.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a3dec71f3d3eae4eb0102eb0a86aa7853fb0419fb506a5a13d17deaf842c53c
|
|
| MD5 |
105a417f57d3788ec564af81f38c4a2c
|
|
| BLAKE2b-256 |
dbee327a3f6c7ac5cde56c7c9449dbc6c0ab78b15c06a51ad5645ab880240120
|