give_feedback_to_desktop_commander
Opens a feedback form in your browser to share opinions about Claude Desktop Commander MCP. Usage statistics are pre-filled; users manually complete questions on experience, recommendations, and AI tools used.
Instructions
Open feedback form in browser to provide feedback about Desktop Commander.
IMPORTANT: This tool simply opens the feedback form - no pre-filling available.
The user will fill out the form manually in their browser.
WORKFLOW:
1. When user agrees to give feedback, just call this tool immediately
2. No need to ask questions or collect information
3. Tool opens form with only usage statistics pre-filled automatically:
- tool_call_count: Number of commands they've made
- days_using: How many days they've used Desktop Commander
- platform: Their operating system (Mac/Windows/Linux)
- client_id: Analytics identifier
All survey questions will be answered directly in the form:
- Job title and technical comfort level
- Company URL for industry context
- Other AI tools they use
- Desktop Commander's biggest advantage
- How they typically use it
- Recommendation likelihood (0-10)
- User study participation interest
- Email and any additional feedback
EXAMPLE INTERACTION:
User: "sure, I'll give feedback"
Claude: "Perfect! Let me open the feedback form for you."
[calls tool immediately]
No parameters are needed - just call the tool to open the form.
This command can be referenced as "DC: ..." or "use Desktop Commander to ..." in your instructions.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/feedback.ts:19-97 (handler)Main handler function: Captures usage stats, builds pre-filled Tally.so feedback URL, opens in browser cross-platform, handles success/error cases with appropriate responses.export async function giveFeedbackToDesktopCommander(params: FeedbackParams = {}): Promise<ServerResult> { try { // Get usage stats for context const stats = await usageTracker.getStats(); // Capture feedback tool usage event await capture('feedback_tool_called', { total_calls: stats.totalToolCalls, successful_calls: stats.successfulCalls, failed_calls: stats.failedCalls, days_since_first_use: Math.floor((Date.now() - stats.firstUsed) / (1000 * 60 * 60 * 24)), total_sessions: stats.totalSessions, platform: os.platform(), }); // Build Tally.so URL with pre-filled parameters const tallyUrl = await buildTallyUrl(params, stats); // Open URL in default browser const success = await openUrlInBrowser(tallyUrl); if (success) { // Capture successful browser opening await capture('feedback_form_opened_successfully', { total_calls: stats.totalToolCalls, platform: os.platform() }); // Mark that user has given feedback (or at least opened the form) await usageTracker.markFeedbackGiven(); return { content: [{ type: "text", text: `🎉 **Feedback form opened in your browser!**\n\n` + `Thank you for taking the time to share your experience with Desktop Commander. ` + `Your feedback helps us build better features and improve the tool for everyone.\n\n` + `The form has been pre-filled with the information you provided. ` + `You can modify or add any additional details before submitting.\n\n` + `**Form URL**: ${tallyUrl.length > 100 ? tallyUrl.substring(0, 100) + '...' : tallyUrl}` }] }; } else { // Capture browser opening failure await capture('feedback_form_open_failed', { total_calls: stats.totalToolCalls, platform: os.platform(), error_type: 'browser_open_failed' }); return { content: [{ type: "text", text: `⚠️ **Couldn't open browser automatically**\n\n` + `Please copy and paste this URL into your browser to access the feedback form:\n\n` + `${tallyUrl}\n\n` + `The form has been pre-filled with your information. Thank you for your feedback!` }] }; } } catch (error) { // Capture error event await capture('feedback_tool_error', { error_message: error instanceof Error ? error.message : String(error), error_type: error instanceof Error ? error.constructor.name : 'unknown' }); return { content: [{ type: "text", text: `❌ **Error opening feedback form**: ${error instanceof Error ? error.message : String(error)}\n\n` + `You can still access our feedback form directly at: https://tally.so/r/mKqoKg\n\n` + `We appreciate your willingness to provide feedback!` }], isError: true }; } }
- src/server.ts:968-1004 (registration)Tool registration in listTools(): defines name, description, and inputSchema for the feedback tool.{ name: "give_feedback_to_desktop_commander", description: ` Open feedback form in browser to provide feedback about Desktop Commander. IMPORTANT: This tool simply opens the feedback form - no pre-filling available. The user will fill out the form manually in their browser. WORKFLOW: 1. When user agrees to give feedback, just call this tool immediately 2. No need to ask questions or collect information 3. Tool opens form with only usage statistics pre-filled automatically: - tool_call_count: Number of commands they've made - days_using: How many days they've used Desktop Commander - platform: Their operating system (Mac/Windows/Linux) - client_id: Analytics identifier All survey questions will be answered directly in the form: - Job title and technical comfort level - Company URL for industry context - Other AI tools they use - Desktop Commander's biggest advantage - How they typically use it - Recommendation likelihood (0-10) - User study participation interest - Email and any additional feedback EXAMPLE INTERACTION: User: "sure, I'll give feedback" Claude: "Perfect! Let me open the feedback form for you." [calls tool immediately] No parameters are needed - just call the tool to open the form. ${CMD_PREFIX_DESCRIPTION}`, inputSchema: zodToJsonSchema(GiveFeedbackArgsSchema), },
- src/tools/schemas.ts:140-147 (schema)Zod schema for tool inputs: empty object since no user parameters are required.export const GiveFeedbackArgsSchema = z.object({ // No parameters needed - form will be filled manually by user // Only auto-filled hidden fields remain: // - tool_call_count (auto) // - days_using (auto) // - platform (auto) // - client_id (auto) });
- src/server.ts:167-170 (registration)Conditional registration logic: excludes the tool when client name is 'desktop-commander'.if (toolName === 'give_feedback_to_desktop_commander' && currentClient?.name === 'desktop-commander') { return false; }
- src/server.ts:1191-1200 (registration)Dispatch handler in CallToolRequestSchema: calls the feedback handler function.case "give_feedback_to_desktop_commander": try { result = await giveFeedbackToDesktopCommander(args); } catch (error) { capture('server_request_error', { message: `Error in give_feedback_to_desktop_commander handler: ${error}` }); result = { content: [{ type: "text", text: `Error: Failed to open feedback form` }], isError: true, }; }