fetch-multilingual-docs
Retrieve comprehensive package documentation for multiple programming languages (e.g., JavaScript, Python, Java) without API keys, enabling efficient access for LLMs and developers.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| languages | Yes | List of programming languages or repository types to check (e.g., javascript, python, java) | |
| packageName | Yes | Name of the package to fetch documentation for |
Implementation Reference
- src/index.ts:287-390 (handler)The complete implementation of the 'fetch-multilingual-docs' tool, including schema, registration, and handler logic. It fetches documentation for the given package across multiple languages, handles errors per language, selects the best result, and formats a summary with content from the successful fetch.server.tool( "fetch-multilingual-docs", { packageName: z .string() .describe("Name of the package to fetch documentation for"), languages: z .array(z.string()) .describe( "List of programming languages or repository types to check (e.g., javascript, python, java)" ), }, async ({ packageName, languages }) => { console.error( `Fetching documentation for package: ${packageName} across languages: ${languages.join( ", " )}` ); const results: Record<string, any> = {}; let hasSuccessfulFetch = false; for (const language of languages) { try { console.error(`Trying ${language} repository...`); const packageUrl = getPackageUrl(packageName, language); const documentationContent = await scraperService.fetchLibraryDocumentation(packageUrl); results[language] = { url: packageUrl, success: true, content: documentationContent, }; hasSuccessfulFetch = true; } catch (error) { console.error(`Error fetching ${language} documentation:`, error); results[language] = { success: false, error: error instanceof Error ? error.message : String(error), }; } } if (!hasSuccessfulFetch) { return { content: [ { type: "text", text: `Failed to fetch documentation for ${packageName} in any of the requested languages: ${languages.join( ", " )}.`, }, ], isError: true, }; } // Format the successful results const bestLanguage = Object.keys(results).find((lang) => results[lang].success) || languages[0]; const bestContent = results[bestLanguage].content; // Include a summary of all language results const summaryLines = [ `## Documentation Search Results for '${packageName}'`, ]; summaryLines.push(""); for (const language of languages) { const result = results[language]; if (result.success) { summaryLines.push( `✅ **${language}**: Successfully fetched documentation from ${result.url}` ); } else { summaryLines.push(`❌ **${language}**: Failed - ${result.error}`); } } summaryLines.push(""); summaryLines.push(`---`); summaryLines.push(""); summaryLines.push( `# Documentation Content (from ${bestLanguage} repository)` ); summaryLines.push(""); const summary = summaryLines.join("\n"); const completeContent = summary + bestContent; return { content: [ { type: "text", text: completeContent, }, ], }; } );
- src/index.ts:289-298 (schema)Input schema for the 'fetch-multilingual-docs' tool using Zod validation.{ packageName: z .string() .describe("Name of the package to fetch documentation for"), languages: z .array(z.string()) .describe( "List of programming languages or repository types to check (e.g., javascript, python, java)" ), },
- src/index.ts:287-287 (registration)Registration of the 'fetch-multilingual-docs' tool on the MCP server.server.tool(