Skip to main content
Glama

searchNpmPackage

Find detailed information about npm packages directly from the NPM MCP Server. Input a package name to retrieve metadata and discover its usage in the npm ecosystem.

Input Schema

NameRequiredDescriptionDefault
packageNameYes

Input Schema (JSON Schema)

{ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "packageName": { "type": "string" } }, "required": [ "packageName" ], "type": "object" }

Implementation Reference

  • Handler function for the 'searchNpmPackage' MCP tool. Fetches package info from npm registry, processes it, logs details, and returns structured JSON content.
    async ({ packageName }) => { try { console.log(`\nBuscando informações para o pacote: ${packageName}`); const response = await fetch(`https://registry.npmjs.org/${packageName}`); const data = (await response.json()) as NpmPackage; if (response.ok) { const result = { name: data.name, version: data["dist-tags"].latest, description: data.description, author: typeof data.author === 'string' ? data.author : data.author?.name, homepage: data.homepage, repository: data.repository?.url, dependencies: data.versions[data["dist-tags"].latest].dependencies }; console.log('\nInformações do pacote:'); console.log('-------------------'); Object.entries(result).forEach(([key, value]) => { if (key === 'dependencies') { console.log('\nDependências:'); console.log(JSON.stringify(value, null, 2)); } else { console.log(`${key}: ${value}`); } }); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } else { const errorMsg = `Erro: Pacote '${packageName}' não encontrado`; console.log(`\n${errorMsg}`); return { content: [{ type: "text", text: errorMsg }] }; } } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : 'Erro desconhecido'; const errorMsg = `Erro ao buscar informações do pacote: ${errorMessage}`; console.log(`\n${errorMsg}`); return { content: [{ type: "text", text: errorMsg }] }; } }
  • src/index.ts:34-93 (registration)
    Registers the 'searchNpmPackage' tool on the MCP server with name, input schema, and handler function.
    server.tool( "searchNpmPackage", { packageName: z.string() }, async ({ packageName }) => { try { console.log(`\nBuscando informações para o pacote: ${packageName}`); const response = await fetch(`https://registry.npmjs.org/${packageName}`); const data = (await response.json()) as NpmPackage; if (response.ok) { const result = { name: data.name, version: data["dist-tags"].latest, description: data.description, author: typeof data.author === 'string' ? data.author : data.author?.name, homepage: data.homepage, repository: data.repository?.url, dependencies: data.versions[data["dist-tags"].latest].dependencies }; console.log('\nInformações do pacote:'); console.log('-------------------'); Object.entries(result).forEach(([key, value]) => { if (key === 'dependencies') { console.log('\nDependências:'); console.log(JSON.stringify(value, null, 2)); } else { console.log(`${key}: ${value}`); } }); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] }; } else { const errorMsg = `Erro: Pacote '${packageName}' não encontrado`; console.log(`\n${errorMsg}`); return { content: [{ type: "text", text: errorMsg }] }; } } catch (error: unknown) { const errorMessage = error instanceof Error ? error.message : 'Erro desconhecido'; const errorMsg = `Erro ao buscar informações do pacote: ${errorMessage}`; console.log(`\n${errorMsg}`); return { content: [{ type: "text", text: errorMsg }] }; } } );
  • Input schema for the tool using Zod: requires a 'packageName' string.
    { packageName: z.string() },
  • TypeScript interface defining the structure of NPM package data used in the handler.
    interface NpmPackage { name: string; description: string; "dist-tags": { latest: string }; versions: { [key: string]: { dependencies: Record<string, string> } }; author: { name: string } | string; homepage: string; repository: { url: string }; }

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/mateusribeirocampos/npm-mcp-server'

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