Skip to main content
Glama
mateusribeirocampos

NPM MCP Server

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

TableJSON Schema
NameRequiredDescriptionDefault
packageNameYes

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 };
    }
Install Server

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