Skip to main content
Glama

GitMCP

DefaultRepoHandler.ts3.28 kB
import { fetchDocumentation, searchRepositoryDocumentation, searchRepositoryCode, fetchUrlContent, generateFetchToolName, generateFetchToolDescription, generateSearchToolName, generateSearchToolDescription, generateCodeSearchToolName, generateCodeSearchToolDescription, } from "../commonTools.js"; import { z } from "zod"; import type { RepoData } from "../../../shared/repoData.js"; import type { RepoHandler, Tool } from "./RepoHandler.js"; class DefaultRepoHandler implements RepoHandler { name = "default"; getTools(repoData: RepoData, env: any, ctx: any): Array<Tool> { // Generate a dynamic description based on the URL const fetchToolName = generateFetchToolName(repoData); const fetchToolDescription = generateFetchToolDescription(repoData); const searchToolName = generateSearchToolName(repoData); const searchToolDescription = generateSearchToolDescription(repoData); const codeSearchToolName = generateCodeSearchToolName(repoData); const codeSearchToolDescription = generateCodeSearchToolDescription(repoData); return [ { name: fetchToolName, description: fetchToolDescription, paramsSchema: z.union([z.object({}), z.null()]), cb: async () => { return fetchDocumentation({ repoData, env, ctx }); }, }, { name: searchToolName, description: searchToolDescription, paramsSchema: { query: z .string() .describe("The search query to find relevant documentation"), }, cb: async ({ query }) => { return searchRepositoryDocumentation({ repoData, query, env, ctx, }); }, }, { name: codeSearchToolName, description: codeSearchToolDescription, paramsSchema: { query: z .string() .describe("The search query to find relevant code files"), page: z .number() .optional() .describe( "Page number to retrieve (starting from 1). Each page contains 30 results.", ), }, cb: async ({ query, page }) => { return searchRepositoryCode({ repoData, query, page, env, ctx, }); }, }, ]; } async fetchDocumentation({ repoData, env, ctx, }: { repoData: RepoData; env: Env; ctx: any; }): Promise<{ fileUsed: string; content: { type: "text"; text: string }[]; }> { return await fetchDocumentation({ repoData, env, ctx }); } async searchRepositoryDocumentation({ repoData, query, env, ctx, }: { repoData: RepoData; query: string; env: Env; ctx: any; }): Promise<{ searchQuery: string; content: { type: "text"; text: string }[]; }> { return await searchRepositoryDocumentation({ repoData, query, env, ctx, }); } } let defaultRepoHandler: DefaultRepoHandler; export function getDefaultRepoHandler(): DefaultRepoHandler { if (!defaultRepoHandler) { defaultRepoHandler = new DefaultRepoHandler(); } return defaultRepoHandler; }

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/idosal/git-mcp'

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