export_feedback
Export anonymized 3D printing feedback to contribute to community knowledge. Removes file paths and generalizes printer names for secure sharing via GitHub PR or other channels.
Instructions
Exporte tes retours d'impression de manière anonymisée pour contribuer à la base de connaissances communautaire. Supprime les chemins de fichiers et généralise le nom d'imprimante. Le JSON résultant peut être partagé via GitHub PR ou autre canal.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/feedback.ts:232-298 (handler)Main handler for export_feedback tool. Registers the tool with MCP server, loads user feedback, anonymizes it using exportForCommunity(), and returns a JSON export ready for community contribution via GitHub PR.
export function registerExportFeedback(server: McpServer) { server.registerTool( "export_feedback", { title: "Exporter le feedback pour la communauté", description: "Exporte tes retours d'impression de manière anonymisée pour contribuer " + "à la base de connaissances communautaire. Supprime les chemins de fichiers " + "et généralise le nom d'imprimante. Le JSON résultant peut être partagé " + "via GitHub PR ou autre canal.", inputSchema: {}, }, async () => { try { const feedbacks = await loadFeedback(); if (feedbacks.length === 0) { return { content: [{ type: "text" as const, text: "Aucun feedback à exporter. Imprime d'abord et note tes résultats !", }], }; } const anonymized = exportForCommunity(feedbacks); const exportData = { exportDate: new Date().toISOString().split("T")[0], printCount: anonymized.length, data: anonymized, }; const json = JSON.stringify(exportData, null, 2); const lines = [ "## Export communautaire prêt", `**Prints exportés** : ${anonymized.length}`, "", "Données anonymisées (pas de chemins, pas de noms exacts) :", "", "```json", json, "```", "", "Pour contribuer :", "1. Copie le JSON ci-dessus", "2. Ouvre une PR sur le repo PrusaMCP", "3. Ajoute tes données dans `community-contributions/`", "", "_Merci de contribuer à l'amélioration des recommandations pour tout le monde !_", ]; return { content: [{ type: "text" as const, text: lines.join("\n") }], }; } catch (error) { return { isError: true, content: [{ type: "text" as const, text: `Erreur : ${error instanceof Error ? error.message : String(error)}`, }], }; } }, ); } - src/index.ts:21-21 (registration)Import statement for registerExportFeedback function from feedback.ts module.
import { registerSubmitFeedback, registerFeedbackStats, registerExportFeedback } from "./tools/feedback.js"; - src/index.ts:55-55 (registration)Registration call that activates the export_feedback tool on the MCP server instance.
registerExportFeedback(server); - src/community-store.ts:122-126 (helper)Helper function exportForCommunity that maps and anonymizes an array of PrintFeedback objects to AnonymizedFeedback format for community sharing.
export function exportForCommunity( feedbacks: PrintFeedback[], ): AnonymizedFeedback[] { return feedbacks.map(anonymizeFeedback); } - src/community-store.ts:99-117 (helper)Helper function anonymizeFeedback that strips sensitive information (file paths, exact printer names, timestamps) and generalizes printer type using generalizePrinter() function.
export function anonymizeFeedback(feedback: PrintFeedback): AnonymizedFeedback { return { material: feedback.material.toUpperCase(), printerType: generalizePrinter(feedback.printer), nozzle: feedback.nozzle, goal: feedback.goal, layerHeight: feedback.layerHeight, infillPercent: feedback.infillPercent, printSpeed: feedback.printSpeed, nozzleTemp: feedback.nozzleTemp, bedTemp: feedback.bedTemp, supportUsed: feedback.supportUsed, qualityScore: feedback.qualityScore, adhesionScore: feedback.adhesionScore, strengthScore: feedback.strengthScore, overallScore: feedback.overallScore, issues: feedback.issues, }; }