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

Tool Definition Quality

Score is being calculated. Check back soon.

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