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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return | |
| query | Yes | Search query | |
| sort | No | Sort order |
Implementation Reference
- src/tools.ts:141-181 (handler)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}`, }, ], }; } };
- src/tools.ts:10-32 (schema)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); }) }
- src/tools.ts:114-118 (helper)TypeScript type definition for the arguments accepted by the searchRepos handler.type SearchReposArgs = { query: string; sort?: "stars" | "forks" | "help-wanted-issues" | "updated"; limit?: number; };