Skip to main content
Glama

getRepoDirectories

Fetch specific directory structures from any GitHub repository by providing the repo URL and directory path.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYesThe directory path to fetch
repoUrlYesThe URL of the Github repo

Implementation Reference

  • index.ts:74-120 (registration)
    Registration of the 'getRepoDirectories' tool using server.tool(), including schema and handler.
    server.tool( "getRepoDirectories", { repoUrl: z.string().url().describe("The URL of the Github repo"), path: z.string().describe("The directory path to fetch"), }, async ({ repoUrl, path }, 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: `Contents for ${path} in ${owner}/${repo}:\n\n${itemsDisplay}`, }, ], }; } catch (error) { console.error("Error fetching directory:", error); return { content: [ { type: "text", text: `Error fetching directory: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } } );
  • index.ts:80-119 (handler)
    The handler function that fetches the contents of a directory in a GitHub repository using the Octokit API, formats the response as JSON, and returns it as text content.
    async ({ repoUrl, path }, 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: `Contents for ${path} in ${owner}/${repo}:\n\n${itemsDisplay}`, }, ], }; } catch (error) { console.error("Error fetching directory:", error); return { content: [ { type: "text", text: `Error fetching directory: ${error instanceof Error ? error.message : String(error)}`, }, ], isError: true, }; } }
  • Zod schema for input parameters: repoUrl (string URL) and path (string).
    { repoUrl: z.string().url().describe("The URL of the Github repo"), path: z.string().describe("The directory path to fetch"), },
  • 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