getRepoAllDirectories
Browse and retrieve a complete list of directories within a GitHub repository by providing its URL. Simplify repository exploration for AI assistants with this tool.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| repoUrl | Yes | The URL of the Github repo |
Implementation Reference
- index.ts:32-71 (handler)Handler function that parses the repo URL, fetches the root directory contents from GitHub using Octokit, formats the items as JSON, and returns them as text content or an error.async ({ repoUrl }, extra) => { try { const { owner, repo } = parseGitHubUrl(repoUrl); const { data } = await octokit.rest.repos.getContent({ owner, repo, path: "", }); // Format the response const items = Array.isArray(data) ? data.map(item => ({ name: item.name, type: item.type, path: item.path, })) : []; const itemsDisplay = JSON.stringify(items, null, 2); return { content: [ { type: "text", text: `Repository root contents for ${owner}/${repo}:\n\n${itemsDisplay}`, }, ], }; } catch (error) { console.error("Error fetching repo:", error); return { content: [ { type: "text", text: `Error fetching repo: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } }
- index.ts:27-72 (registration)Registration of the 'getRepoAllDirectories' tool using server.tool(), including name, input schema, and inline handler.server.tool( "getRepoAllDirectories", { repoUrl: z.string().url().describe("The URL of the Github repo"), }, async ({ repoUrl }, extra) => { try { const { owner, repo } = parseGitHubUrl(repoUrl); const { data } = await octokit.rest.repos.getContent({ owner, repo, path: "", }); // Format the response const items = Array.isArray(data) ? data.map(item => ({ name: item.name, type: item.type, path: item.path, })) : []; const itemsDisplay = JSON.stringify(items, null, 2); return { content: [ { type: "text", text: `Repository root contents for ${owner}/${repo}:\n\n${itemsDisplay}`, }, ], }; } catch (error) { console.error("Error fetching repo:", error); return { content: [ { type: "text", text: `Error fetching repo: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } } );
- index.ts:29-31 (schema)Input schema using Zod: repoUrl as a required URL string.{ repoUrl: z.string().url().describe("The URL of the Github repo"), },
- index.ts:12-20 (helper)Helper function to parse GitHub repository URL into owner and repo name.function parseGitHubUrl(url: string) { const regex = /github\.com\/([^\/]+)\/([^\/]+)/; const match = url.match(regex); if (!match) { throw new Error("Invalid GitHub repository URL"); } const [, owner, repo] = match; return { owner, repo: repo.replace(".git", "") }; }