list_technologies
Discover valid technology identifiers to use with other tools. Filter by category to find frontend, backend, database, and other technology IDs for stack recommendations.
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)The executeListTechs function implements the core logic of the list_technologies tool, handling input parsing, filtering by category if provided, formatting output with technology IDs and names grouped by category, and including data version.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/server.ts:46-63 (registration)Registers the list_technologies tool on the MCP server, providing title, description, input schema validation, and the async handler that parses args and calls executeListTechs.server.registerTool( listTechsToolDefinition.name, { title: 'List Technologies', description: listTechsToolDefinition.description, inputSchema: { category: z.enum(CATEGORIES).optional().describe('Filter by category') } }, 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:13-18 (schema)Zod input schema for validating the list_technologies tool inputs, used in the server handler to parse arguments.export const ListTechsInputSchema = z.object({ category: z .enum(CATEGORIES) .optional() .describe('Filter by category. Omit to list all technologies.') });
- src/tools/list-techs.ts:25-39 (schema)Tool definition object including name, description, and JSON schema for input, used for MCP tool registration.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)' } } } };
- 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')}`; }