Skip to main content
Glama

resolve-library-id

Converts package names to Context7-compatible library IDs for documentation retrieval, prioritizing matches by relevance, coverage, and trust scores.

Instructions

Resolves a package/product name to a Context7-compatible library ID and returns a list of matching libraries.

You MUST call this function before 'get-library-docs' to obtain a valid Context7-compatible library ID UNLESS the user explicitly provides a library ID in the format '/org/project' or '/org/project/version' in their query.

Selection Process:

  1. Analyze the query to understand what library/package the user is looking for

  2. Return the most relevant match based on:

  • Name similarity to the query (exact matches prioritized)

  • Description relevance to the query's intent

  • Documentation coverage (prioritize libraries with higher Code Snippet counts)

  • Trust score (consider libraries with scores of 7-10 more authoritative)

Response Format:

  • Return the selected library ID in a clearly marked section

  • Provide a brief explanation for why this library was chosen

  • If multiple good matches exist, acknowledge this but proceed with the most relevant one

  • If no good matches exist, clearly state this and suggest query refinements

For ambiguous queries, request clarification before proceeding with a best-guess match.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
libraryNameYesLibrary name to search for and retrieve a Context7-compatible library ID.

Implementation Reference

  • The main handler function implementing the 'resolve-library-id' tool. It searches for libraries using searchLibraries, handles errors, formats results, and returns structured content.
        async ({ libraryName }) => {
          const searchResponse: SearchResponse = await searchLibraries(libraryName);
    
          if (!searchResponse.results || searchResponse.results.length === 0) {
            return {
              content: [
                {
                  type: "text",
                  text: searchResponse.error
                    ? searchResponse.error
                    : "Failed to retrieve library documentation data from Context7",
                },
              ],
            };
          }
    
          const resultsText = formatSearchResults(searchResponse);
    
          return {
            content: [
              {
                type: "text",
                text: `Available Libraries (top matches):
    
    Each result includes:
    - Library ID: Context7-compatible identifier (format: /org/project)
    - Name: Library or package name
    - Description: Short summary
    - Code Snippets: Number of available code examples
    - Trust Score: Authority indicator
    - Versions: List of versions if available. Use one of those versions if and only if the user explicitly provides a version in their query.
    
    For best results, select libraries based on name match, trust score, snippet coverage, and relevance to your use case.
    
    ----------
    
    ${resultsText}`,
              },
            ],
          };
        }
  • Zod input schema defining the 'libraryName' parameter for the tool.
    {
      libraryName: z
        .string()
        .describe("Library name to search for and retrieve a Context7-compatible library ID."),
    },
  • src/index.ts:64-130 (registration)
    Registration of the 'resolve-library-id' tool using McpServer.tool() including description, schema, and handler.
        "resolve-library-id",
        `Resolves a package/product name to a Context7-compatible library ID and returns a list of matching libraries.
    
    You MUST call this function before 'get-library-docs' to obtain a valid Context7-compatible library ID UNLESS the user explicitly provides a library ID in the format '/org/project' or '/org/project/version' in their query.
    
    Selection Process:
    1. Analyze the query to understand what library/package the user is looking for
    2. Return the most relevant match based on:
    - Name similarity to the query (exact matches prioritized)
    - Description relevance to the query's intent
    - Documentation coverage (prioritize libraries with higher Code Snippet counts)
    - Trust score (consider libraries with scores of 7-10 more authoritative)
    
    Response Format:
    - Return the selected library ID in a clearly marked section
    - Provide a brief explanation for why this library was chosen
    - If multiple good matches exist, acknowledge this but proceed with the most relevant one
    - If no good matches exist, clearly state this and suggest query refinements
    
    For ambiguous queries, request clarification before proceeding with a best-guess match.`,
        {
          libraryName: z
            .string()
            .describe("Library name to search for and retrieve a Context7-compatible library ID."),
        },
        async ({ libraryName }) => {
          const searchResponse: SearchResponse = await searchLibraries(libraryName);
    
          if (!searchResponse.results || searchResponse.results.length === 0) {
            return {
              content: [
                {
                  type: "text",
                  text: searchResponse.error
                    ? searchResponse.error
                    : "Failed to retrieve library documentation data from Context7",
                },
              ],
            };
          }
    
          const resultsText = formatSearchResults(searchResponse);
    
          return {
            content: [
              {
                type: "text",
                text: `Available Libraries (top matches):
    
    Each result includes:
    - Library ID: Context7-compatible identifier (format: /org/project)
    - Name: Library or package name
    - Description: Short summary
    - Code Snippets: Number of available code examples
    - Trust Score: Authority indicator
    - Versions: List of versions if available. Use one of those versions if and only if the user explicitly provides a version in their query.
    
    For best results, select libraries based on name match, trust score, snippet coverage, and relevance to your use case.
    
    ----------
    
    ${resultsText}`,
              },
            ],
          };
        }
      );
  • Helper function searchLibraries that performs the API call to Context7 search endpoint, called by the tool handler.
    export async function searchLibraries(query: string): Promise<SearchResponse> {
      try {
        const url = new URL(`${CONTEXT7_API_BASE_URL}/v1/search`);
        url.searchParams.set("query", query);
        const response = await fetch(url);
        if (!response.ok) {
          const errorCode = response.status;
          if (errorCode === 429) {
            console.error(`Rate limited due to too many requests. Please try again later.`);
            return {
              results: [],
              error: `Rate limited due to too many requests. Please try again later.`,
            } as SearchResponse;
          }
          console.error(`Failed to search libraries. Please try again later. Error code: ${errorCode}`);
          return {
            results: [],
            error: `Failed to search libraries. Please try again later. Error code: ${errorCode}`,
          } as SearchResponse;
        }
        return await response.json();
      } catch (error) {
        console.error("Error searching libraries:", error);
        return { results: [], error: `Error searching libraries: ${error}` } as SearchResponse;
      }
    }
  • Helper function formatSearchResults that formats the search results into readable text, used in the tool handler.
    export function formatSearchResults(searchResponse: SearchResponse): string {
      if (!searchResponse.results || searchResponse.results.length === 0) {
        return "No documentation libraries found matching your query.";
      }
    
      const formattedResults = searchResponse.results.map(formatSearchResult);
      return formattedResults.join("\n----------\n");
    }

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other 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/2511319/context7'

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