UNPKG

@cyanheads/git-mcp-server

Version:

An MCP (Model Context Protocol) server enabling LLMs and AI agents to interact with Git repositories. Provides tools for comprehensive Git operations including clone, commit, branch, diff, log, status, push, pull, merge, rebase, worktree, tag management,

67 lines 2.67 kB
/** * @fileoverview Handles registration and error handling for the git_clone tool. * @module src/mcp-server/tools/gitClone/registration */ import { ErrorHandler, logger, requestContextService, } from "../../../utils/index.js"; import { gitCloneLogic, GitCloneInputSchema, GitCloneOutputSchema, } from "./logic.js"; const TOOL_NAME = "git_clone"; const TOOL_DESCRIPTION = "Clones a Git repository from a given URL into a specified absolute directory path. Supports cloning specific branches and setting clone depth."; /** * Registers the git_clone tool with the MCP server instance. * @param server The MCP server instance. */ export const registerGitCloneTool = async (server) => { const operation = "registerGitCloneTool"; const context = requestContextService.createRequestContext({ operation }); server.registerTool(TOOL_NAME, { title: "Git Clone", description: TOOL_DESCRIPTION, inputSchema: GitCloneInputSchema.shape, outputSchema: GitCloneOutputSchema.shape, annotations: { readOnlyHint: false, destructiveHint: true, // Creates new files/directories idempotentHint: false, openWorldHint: true, // Interacts with remote repositories }, }, async (params, callContext) => { const handlerContext = requestContextService.createRequestContext({ toolName: TOOL_NAME, parentContext: callContext, }); try { const result = await gitCloneLogic(params, handlerContext); return { structuredContent: result, content: [ { type: "text", text: `Success: ${JSON.stringify(result, null, 2)}`, }, ], }; } catch (error) { logger.error(`Error in ${TOOL_NAME} handler`, { error, ...handlerContext, }); const mcpError = ErrorHandler.handleError(error, { operation: `tool:${TOOL_NAME}`, context: handlerContext, input: params, }); return { isError: true, content: [{ type: "text", text: `Error: ${mcpError.message}` }], structuredContent: { code: mcpError.code, message: mcpError.message, details: mcpError.details, }, }; } }); logger.info(`Tool '${TOOL_NAME}' registered successfully.`, context); }; //# sourceMappingURL=registration.js.map