list_technologies
Discover valid technology identifiers for stack recommendations by listing available tech IDs across categories like frontend, backend, and databases.
Instructions
Lists all available technology IDs for use with other tools. Essential for discovering valid technology identifiers.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by category |
Implementation Reference
- src/tools/list-techs.ts:54-95 (handler)Core handler function that executes the list_technologies tool logic, listing technologies optionally filtered by category.export function executeListTechs(input: ListTechsInput): string { const { category } = input; if (category) { // Filter by specific category const techs = getTechnologiesByCategory(category); const formatted = formatCategory( category, techs.map((t) => ({ id: t.id, name: t.name })) ); return `Available technologies in "${category}" (${techs.length} total): ${formatted} Data version: ${DATA_VERSION}`; } // List all technologies grouped by category const grouped = getTechnologiesGroupedByCategory(); const sections: string[] = []; let total = 0; for (const cat of CATEGORIES) { const techs = grouped[cat]; if (techs.length > 0) { sections.push( formatCategory( cat, techs.map((t) => ({ id: t.id, name: t.name })) ) ); total += techs.length; } } return `Available technologies (${total} total): ${sections.join('\n\n')} Data version: ${DATA_VERSION}`; }
- src/tools/list-techs.ts:13-18 (schema)Zod input schema for validating the list_technologies tool parameters.export const ListTechsInputSchema = z.object({ category: z .enum(CATEGORIES) .optional() .describe('Filter by category. Omit to list all technologies.') });
- src/server.ts:46-68 (registration)MCP server registration of the list_technologies tool, including wrapper handler that parses input and calls executeListTechs.server.registerTool( listTechsToolDefinition.name, { title: 'List Technologies', description: listTechsToolDefinition.description, inputSchema: { category: z.enum(CATEGORIES).optional().describe('Filter by category') }, annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false } }, async (args) => { debug('list_technologies called', args); const input = ListTechsInputSchema.parse(args); const text = executeListTechs(input); return { content: [{ type: 'text', text }] }; } );
- src/tools/list-techs.ts:44-49 (helper)Helper function to format technologies for a single category into markdown list.function formatCategory(category: Category, techs: Array<{ id: string; name: string }>): string { if (techs.length === 0) return ''; const lines = techs.map((t) => `- ${t.id} (${t.name})`); return `## ${category}\n${lines.join('\n')}`; }
- src/tools/list-techs.ts:25-39 (schema)Tool definition object used for MCP registration, including the input schema in MCP format.export const listTechsToolDefinition = { name: 'list_technologies', description: 'Lists all available technology IDs for use with other tools. Essential for discovering valid technology identifiers.', inputSchema: { type: 'object' as const, properties: { category: { type: 'string', enum: CATEGORIES, description: 'Filter by category (optional)' } } } };