Skip to main content
Glama

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
NameRequiredDescriptionDefault
repoUrlYesThe 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, }; } } );
  • Input schema using Zod: repoUrl as a required URL string.
    { repoUrl: z.string().url().describe("The URL of the Github repo"), },
  • 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", "") }; }

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Ryan0204/github-repo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server