get_package_dependencies
Retrieve dependencies, devDependencies, and peerDependencies for any npm package to understand its required components and development setup.
Instructions
Get dependencies, devDependencies, and peerDependencies for a package
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | ||
| version | No |
Implementation Reference
- src/index.ts:460-516 (handler)The main handler function that fetches package data from npm registry, validates it using PackageDependenciesSchema, formats the dependencies (regular, dev, peer), and returns both text summary and structured output.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, }; } }
- src/index.ts:442-517 (registration)Registers the 'get_package_dependencies' tool with the MCP server, including title, description, input/output schemas using Zod, and the 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, }; } } );
- src/index.ts:60-66 (schema)Zod schema used to validate and parse the npm package data specifically for dependencies, devDependencies, and peerDependencies.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(), });
- src/index.ts:160-177 (helper)Helper function that fetches raw 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(); }