search_repository
Search GitHub repositories on Google CodeWiki to find and access documentation using repository names or owner/repo queries.
Instructions
Search for a GitHub repository on Google CodeWiki
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for repository name or owner/repo format |
Implementation Reference
- src/server.ts:41-54 (schema)Input schema definition for the 'search_repository' tool.{ name: 'search_repository', description: 'Search for a GitHub repository on Google CodeWiki', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query for repository name or owner/repo format', }, }, required: ['query'], }, },
- src/server.ts:135-149 (handler)MCP server handler for 'search_repository' tool: validates input, delegates to CodeWikiClient.searchRepository, formats and returns results.case 'search_repository': { const query = (args as any)?.query; if (!query) { throw new Error('Query is required'); } const results = await codeWikiClient.searchRepository(query); return { content: [ { type: 'text', text: JSON.stringify(results, null, 2), }, ], }; }
- src/codewiki-client.ts:51-82 (helper)Core logic for searching repositories: parses owner/repo queries, falls back to filtering featured repositories from CodeWiki.async searchRepository(query: string): Promise<{ repositories: RepositoryInfo[]; query: string }> { // Since CodeWiki doesn't have a public search API, we'll simulate search // by checking if the query matches known repositories or parsing search results const repositories: RepositoryInfo[] = []; // Try to parse the query as owner/repo format if (query.includes('/')) { const [owner, repo] = query.split('/'); if (owner && repo) { const repoInfo = await this.getRepositoryInfo(owner.trim(), repo.trim()); if (repoInfo) { repositories.push(repoInfo); } } } // If no exact match, try to search the CodeWiki homepage for featured repos if (repositories.length === 0) { const featuredRepos = await this.getFeaturedRepositories(); const filtered = featuredRepos.filter(repo => repo.repo.toLowerCase().includes(query.toLowerCase()) || repo.owner.toLowerCase().includes(query.toLowerCase()) || (repo.description && repo.description.toLowerCase().includes(query.toLowerCase())) ); repositories.push(...filtered); } return { repositories, query, }; }