Skip to main content
Glama
cdugo
by cdugo

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
NameRequiredDescriptionDefault
languagesYesList of programming languages or repository types to check (e.g., javascript, python, java)
packageNameYesName of the package to fetch documentation for

Implementation Reference

  • 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, }, ], }; } );
  • 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(

Other Tools

Related Tools

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/cdugo/package-documentation-mcp'

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