query_feature_suggestions
Retrieve feature suggestions from a Supabase database to help AI tools access and display user feature request data for analysis and implementation planning.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of records to return |
Implementation Reference
- mcp-server.ts:66-108 (handler)The async handler function for the query_feature_suggestions tool. It queries the feature_suggestions table from Supabase with an optional limit, handles errors, logs activities, and returns the data as formatted JSON text.async ({ limit = 100 }) => { const table_name = "feature_suggestions"; try { logger.log(`Querying feature_suggestions table with limit: ${limit}`); const { data, error } = await supabase .from(table_name) .select('*') .limit(limit); if (error) { logger.error(`Error querying feature_suggestions table:`, error); return { content: [{ type: "text", text: `Error querying feature_suggestions table: ${error.message}` }] }; } // Log the raw data for debugging logger.log(`Raw data from feature_suggestions: ${JSON.stringify(data)}`); // Ensure data is properly formatted const formattedData = Array.isArray(data) ? data : []; logger.log(`Successfully retrieved ${formattedData.length} records from feature_suggestions`); return { content: [{ type: "text", text: JSON.stringify(formattedData, null, 2) }] }; } catch (error) { logger.error(`Error in query_feature_suggestions tool for feature_suggestions table:`, error); return { content: [{ type: "text", text: `Error: ${error instanceof Error ? error.message : String(error)}` }] }; } }
- mcp-server.ts:63-65 (schema)Input schema defining the optional 'limit' parameter (number) for the number of records to retrieve.{ limit: z.number().optional().describe("Maximum number of records to return") },
- mcp-server.ts:61-109 (registration)Registration of the query_feature_suggestions tool using server.tool(), including name, input schema, and handler function.server.tool( "query_feature_suggestions", { limit: z.number().optional().describe("Maximum number of records to return") }, async ({ limit = 100 }) => { const table_name = "feature_suggestions"; try { logger.log(`Querying feature_suggestions table with limit: ${limit}`); const { data, error } = await supabase .from(table_name) .select('*') .limit(limit); if (error) { logger.error(`Error querying feature_suggestions table:`, error); return { content: [{ type: "text", text: `Error querying feature_suggestions table: ${error.message}` }] }; } // Log the raw data for debugging logger.log(`Raw data from feature_suggestions: ${JSON.stringify(data)}`); // Ensure data is properly formatted const formattedData = Array.isArray(data) ? data : []; logger.log(`Successfully retrieved ${formattedData.length} records from feature_suggestions`); return { content: [{ type: "text", text: JSON.stringify(formattedData, null, 2) }] }; } catch (error) { logger.error(`Error in query_feature_suggestions tool for feature_suggestions table:`, error); return { content: [{ type: "text", text: `Error: ${error instanceof Error ? error.message : String(error)}` }] }; } } );