search_repositories
Utilize this tool to search GitHub repositories based on advanced query syntax. Specify pagination and result limits to efficiently retrieve repository data.
Instructions
Search for GitHub repositories
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination (default: 1) | |
| perPage | No | Number of results per page (default: 30, max: 100) | |
| query | Yes | Search query (see GitHub search syntax) |
Implementation Reference
- src/operations/repository.ts:49-62 (handler)The core handler function implementing the GitHub repositories search using the Search API.export async function searchRepositories( github_pat: string, query: string, page: number = 1, perPage: number = 30 ) { const url = new URL("https://api.github.com/search/repositories"); url.searchParams.append("q", query); url.searchParams.append("page", page.toString()); url.searchParams.append("per_page", perPage.toString()); const response = await githubRequest(github_pat, url.toString()); return GitHubSearchResponseSchema.parse(response); }
- src/operations/repository.ts:17-25 (schema)Zod input schemas for the search_repositories tool: public schema (SearchRepositoriesSchema) used in registration and internal extended schema (_SearchRepositoriesSchema) used for parsing.export const SearchRepositoriesSchema = z.object({ query: z.string().describe("Search query (see GitHub search syntax)"), page: z.number().optional().describe("Page number for pagination (default: 1)"), perPage: z.number().optional().describe("Number of results per page (default: 30, max: 100)"), }); export const _SearchRepositoriesSchema = SearchRepositoriesSchema.extend({ github_pat: z.string().describe("GitHub Personal Access Token"), });
- src/index.ts:83-87 (registration)Tool registration in the MCP server's listTools handler, defining name, description, and input schema.{ name: "search_repositories", description: "Search for GitHub repositories", inputSchema: zodToJsonSchema(repository.SearchRepositoriesSchema), },
- src/index.ts:353-364 (handler)Tool dispatcher in the CallToolRequest handler that validates arguments and calls the searchRepositories implementation.case "search_repositories": { const args = repository._SearchRepositoriesSchema.parse(params.arguments); const results = await repository.searchRepositories( args.github_pat, args.query, args.page, args.perPage ); return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }], }; }