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