Skip to main content
Glama

search_fabric_docs

Search Fabric modding documentation to find guides and API information for Minecraft mod development. Use specific queries to locate tutorials, feature explanations, and technical references.

Instructions

Search Fabric modding documentation for guides and API information. Use this when you need to find documentation about Fabric modding features, APIs, or tutorials.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query (e.g., 'how to register items', 'mixin tutorial', 'networking'). Be specific for best results. Especially useful for finding guides and API references.
categoryNoDocumentation category to search within (default: all)all

Implementation Reference

  • Main handler function for executing the search_fabric_docs tool. Performs validation, constructs search options, executes search via SearchService, formats results with metadata, and handles errors.
    export async function handleSearchDocs(params: SearchDocsParams): Promise<CallToolResult> { const { query, category, loader, minecraftVersion, includeCode = true, limit = 10 } = params; // Validate required parameters if (!query || typeof query !== 'string' || query.trim().length === 0) { return { content: [ { type: 'text', text: 'Error: Query parameter is required and cannot be empty.', }, ], isError: true, }; } const trimmedQuery = query.trim(); // Validate limit const effectiveLimit = Math.min(Math.max(1, limit), 20); try { const searchService = getSearchService(); // Build search options const searchOptions: SearchOptions = { query: trimmedQuery, limit: effectiveLimit, includeCode, }; // Add optional filters if (category && category !== 'all') { searchOptions.category = category; } if (loader) { searchOptions.loader = loader; } if (minecraftVersion) { // Handle 'latest' version if (minecraftVersion.toLowerCase() === 'latest') { const stats = searchService.getStats(); const versions = stats.versions.sort((a, b) => { const partsA = a.split('.').map(Number); const partsB = b.split('.').map(Number); for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) { const numA = partsA[i] || 0; const numB = partsB[i] || 0; if (numA !== numB) return numB - numA; } return 0; }); if (versions[0]) { searchOptions.minecraftVersion = versions[0]; } } else { searchOptions.minecraftVersion = minecraftVersion; } } // Perform search const results = await searchService.search(searchOptions); // Format results for AI const formattedOutput = searchService.formatForAI(results, trimmedQuery); // Add metadata for AI to use const metadata = buildMetadata(results, searchOptions, searchService); return { content: [ { type: 'text', text: formattedOutput + '\n\n' + metadata, }, ], }; } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); console.error(`[searchDocs] Error: ${errorMessage}`); return { content: [ { type: 'text', text: `Error searching documentation: ${errorMessage}\n\nPlease ensure the documentation database has been indexed. Run 'npm run index' to build the database.`, }, ], isError: true, }; } }
  • MCP tool schema definition including name, description, and inputSchema for search_fabric_docs.
    name: 'search_fabric_docs', description: 'Search Fabric modding documentation for guides and API information. Use this when you need to find documentation about Fabric modding features, APIs, or tutorials.', inputSchema: { type: 'object', properties: { query: { type: 'string', description: "Search query (e.g., 'how to register items', 'mixin tutorial', 'networking'). Be specific for best results. Especially useful for finding guides and API references.", }, category: { type: 'string', enum: [ 'getting-started', 'items', 'blocks', 'entities', 'rendering', 'networking', 'data-generation', 'all', ], description: 'Documentation category to search within (default: all)', default: 'all', }, }, required: ['query'], },
  • src/index.ts:199-208 (registration)
    Registration of the tool handler in the CallToolRequestHandler switch statement, mapping 'search_fabric_docs' to handleSearchDocs function call.
    case 'search_fabric_docs': { return handleSearchDocs({ query: (args?.query as string) || '', category: args?.category as string | undefined, loader: args?.loader as string | undefined, minecraftVersion: args?.minecraft_version as string | undefined, includeCode: args?.include_code as boolean | undefined, limit: args?.limit as number | undefined, }); }
  • TypeScript interface defining input parameters for the search_fabric_docs handler.
    export interface SearchDocsParams { query: string; category?: string; loader?: string; minecraftVersion?: string; includeCode?: boolean; limit?: number; }
  • Helper function to build metadata for search results, including stats, filters, and suggestions.
    function buildMetadata( results: SearchResult[], options: SearchOptions, service: SearchService ): string { const stats = service.getStats(); let metadata = '---\n**Search Metadata:**\n'; metadata += `- Query: "${options.query}"\n`; metadata += `- Results found: ${results.length}\n`; if (options.category) { metadata += `- Category filter: ${options.category}\n`; } if (options.loader) { metadata += `- Loader filter: ${options.loader}\n`; } if (options.minecraftVersion) { metadata += `- Minecraft version filter: ${options.minecraftVersion}\n`; } metadata += `\n**Database Stats:**\n`; metadata += `- Total documents indexed: ${stats.totalDocuments}\n`; metadata += `- Total sections: ${stats.totalSections}\n`; metadata += `- Available loaders: ${stats.loaders.join(', ')}\n`; metadata += `- Available versions: ${stats.versions.slice(0, 5).join(', ')}${stats.versions.length > 5 ? '...' : ''}\n`; // Add suggestions based on results if (results.length === 0) { metadata += '\n**Suggestions:**\n'; metadata += '- Try broader search terms\n'; metadata += '- Remove category/loader filters\n'; metadata += '- Use synonyms (e.g., "register" instead of "create")\n'; } else if (results.length < 3) { metadata += '\n**Note:** Few results found. Consider:\n'; metadata += '- Using `get_example` for specific code examples\n'; metadata += '- Trying related terms or concepts\n'; } return metadata; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OGMatrix/mcmodding-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server