Skip to main content
Glama

get_package_dependencies

Retrieve dependency information for npm packages to understand required packages and development dependencies for project planning and compatibility checks.

Instructions

Get dependencies and devDependencies for a package

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
packageNameYes
versionNo

Implementation Reference

  • src/index.ts:442-517 (registration)
    Registration of the 'get_package_dependencies' tool using server.registerTool, including input/output schemas and inline handler function.
    server.registerTool( "get_package_dependencies", { title: "Get Package Dependencies", description: "Get dependencies, devDependencies, and peerDependencies for a package", inputSchema: { packageName: z.string(), version: z.string().optional(), }, outputSchema: { name: z.string(), version: z.string(), dependencies: z.record(z.string(), z.string()), devDependencies: z.record(z.string(), z.string()), peerDependencies: z.record(z.string(), z.string()), }, }, async ({ packageName, version }) => { try { const rawData = await fetchPackageData(packageName, version); const parseResult = PackageDependenciesSchema.safeParse(rawData); if (!parseResult.success) { throw new Error( `Invalid package dependencies structure: ${parseResult.error.message}` ); } const data = parseResult.data; const formatDeps = (deps: Record<string, string> | undefined) => { if (!deps) return "None"; return Object.entries(deps) .map(([name, version]) => ` ${name}: ${version}`) .join("\n"); }; const output = { name: data.name, version: data.version, dependencies: data.dependencies || {}, devDependencies: data.devDependencies || {}, peerDependencies: data.peerDependencies || {}, }; return { content: [ { type: "text", text: `Package: ${data.name}\nVersion: ${ data.version }\n\nDependencies:\n${formatDeps( data.dependencies )}\n\nDev Dependencies:\n${formatDeps( data.devDependencies )}\n\nPeer Dependencies:\n${formatDeps(data.peerDependencies)}`, }, ], structuredContent: output, }; } catch (error) { return { content: [ { type: "text", text: `Error fetching package dependencies: ${ error instanceof Error ? error.message : "Unknown error" }`, }, ], isError: true, }; } } );
  • Handler function for 'get_package_dependencies': fetches package data from npm registry using fetchPackageData, parses with PackageDependenciesSchema, formats dependencies, and returns structured content with text summary.
    async ({ packageName, version }) => { try { const rawData = await fetchPackageData(packageName, version); const parseResult = PackageDependenciesSchema.safeParse(rawData); if (!parseResult.success) { throw new Error( `Invalid package dependencies structure: ${parseResult.error.message}` ); } const data = parseResult.data; const formatDeps = (deps: Record<string, string> | undefined) => { if (!deps) return "None"; return Object.entries(deps) .map(([name, version]) => ` ${name}: ${version}`) .join("\n"); }; const output = { name: data.name, version: data.version, dependencies: data.dependencies || {}, devDependencies: data.devDependencies || {}, peerDependencies: data.peerDependencies || {}, }; return { content: [ { type: "text", text: `Package: ${data.name}\nVersion: ${ data.version }\n\nDependencies:\n${formatDeps( data.dependencies )}\n\nDev Dependencies:\n${formatDeps( data.devDependencies )}\n\nPeer Dependencies:\n${formatDeps(data.peerDependencies)}`, }, ], structuredContent: output, }; } catch (error) { return { content: [ { type: "text", text: `Error fetching package dependencies: ${ error instanceof Error ? error.message : "Unknown error" }`, }, ], isError: true, }; } }
  • Zod schema used to validate and parse the raw npm package data for dependencies in the handler.
    const PackageDependenciesSchema = z.object({ name: z.string(), version: z.string(), dependencies: z.record(z.string(), z.string()).optional(), devDependencies: z.record(z.string(), z.string()).optional(), peerDependencies: z.record(z.string(), z.string()).optional(), });
  • Helper function to fetch package data (including dependencies) from the npm registry API for a given package name and optional version.
    async function fetchPackageData( packageName: string, version?: string ): Promise<any> { const versionPath = version || "latest"; const encodedPackageName = encodeURIComponent(packageName); const response = await fetch( `https://registry.npmjs.org/${encodedPackageName}/${versionPath}` ); if (!response.ok) { throw new Error( `Failed to fetch package ${packageName}: ${response.statusText}` ); } return await response.json(); }

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/JuanSebastianGB/npm-context-agent-mcp'

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