Skip to main content
Glama

search-repos

Find GitHub repositories by query, sort results by stars, forks, help-wanted-issues, or update date, and limit the number of returned repositories for efficient exploration.

Instructions

Search for GitHub repositories

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return
queryYesSearch query
sortNoSort order

Implementation Reference

  • The primary handler function for the 'search-repos' tool. It uses the Octokit client to search GitHub repositories based on the query, optional sort and limit, formats the results as JSON, and handles errors.
    const searchRepos = async (args: SearchReposArgs) => { const { query, sort = "stars", limit = 5 } = args; try { const response = await octokit.rest.search.repos({ q: query, sort, per_page: limit, }); return { content: [ { type: "text", text: JSON.stringify( response.data.items.map(repo => ({ name: repo.full_name, description: repo.description, stars: repo.stargazers_count, url: repo.html_url, language: repo.language, forks: repo.forks_count, })), null, 2 ), }, ], }; } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred'; return { content: [ { type: "text", text: `Error searching repositories: ${errorMessage}`, }, ], }; } };
  • The input schema definition for the 'search-repos' tool, defining parameters query (required), sort, and limit.
    "search-repos": { name: "search-repos", description: "Search for GitHub repositories", inputSchema: { type: "object", properties: { query: { type: "string", description: "Search query", }, sort: { type: "string", enum: ["stars", "forks", "help-wanted-issues", "updated"], description: "Sort order", }, limit: { type: "number", description: "Maximum number of results to return", } }, required: ["query"], }, },
  • src/tools.ts:322-327 (registration)
    Registration mapping that associates the tool name 'search-repos' with its handler function 'searchRepos' in the toolHandlers object, used by handlers.ts to dispatch calls.
    export const toolHandlers = { "search-repos": searchRepos, "get-repo-info": getRepoInfo, "list-issues": listIssues, "create-issue": createIssue, };
  • src/handlers.ts:19-32 (registration)
    MCP server request handlers for listing tools (using tools object) and calling tools (dispatching to toolHandlers[name]), effectively registering the 'search-repos' tool.
    server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: Object.values(tools) })); server.setRequestHandler(CallToolRequestSchema, async (request) => { type ToolHandlerKey = keyof typeof toolHandlers; const { name, arguments: params } = request.params ?? {}; const handler = toolHandlers[name as ToolHandlerKey]; if (!handler) throw new Error("tool not found"); type HandlerParams = Parameters<typeof handler>; return handler(params as any); }) }
  • TypeScript type definition for the arguments accepted by the searchRepos handler.
    type SearchReposArgs = { query: string; sort?: "stars" | "forks" | "help-wanted-issues" | "updated"; limit?: number; };

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/ualUsham/mcp-github'

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