search-code
Search code across GitHub repositories using natural language queries to find specific functions, files, or code patterns within your organization's codebase.
Instructions
Search for code across GitHub repositories
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | ||
| page | No | ||
| per_page | No | ||
| q | Yes |
Implementation Reference
- src/tools/search.ts:13-44 (handler)The main handler function that performs GitHub code search using Octokit API, validates input with SearchCodeSchema, processes and returns search results.export async function searchCode(args: unknown): Promise<any> { const { q, order, page, per_page } = SearchCodeSchema.parse(args); const github = getGitHubApi(); return tryCatchAsync(async () => { const { data } = await github.getOctokit().search.code({ q, order, page, per_page, }); return { total_count: data.total_count, incomplete_results: data.incomplete_results, items: data.items.map((item) => ({ name: item.name, path: item.path, sha: item.sha, url: item.html_url, repository: item.repository ? { name: item.repository.name, full_name: item.repository.full_name, owner: { login: item.repository.owner.login, }, } : null, score: item.score, })), }; }, 'Failed to search code'); }
- src/server.ts:1025-1050 (schema)Input schema definition for the 'search-code' tool advertised to MCP clients via ListToolsRequestSchema.name: 'search-code', description: 'Search for code across GitHub repositories', inputSchema: { type: 'object', properties: { q: { type: 'string', }, order: { type: 'string', enum: ['asc', 'desc'], }, page: { type: 'number', minimum: 1, }, per_page: { type: 'number', minimum: 1, maximum: 100, }, }, required: ['q'], additionalProperties: false, }, },
- src/server.ts:1255-1257 (registration)Switch case in MCP server's CallToolRequestSchema handler that dispatches to the searchCode implementation.case 'search-code': result = await searchCode(parsedArgs); break;
- src/utils/validation.ts:183-188 (schema)Zod schema used for runtime input validation inside the searchCode handler function.export const SearchCodeSchema = z.object({ q: z.string().min(1, 'Search query is required'), order: z.enum(['asc', 'desc']).optional(), page: z.number().min(1).optional(), per_page: z.number().min(1).max(100).optional(), });