git_diff
Compare changes in Git repositories to identify modifications between commits, branches, or the working directory. Use this tool to review code differences, track file changes, and understand project evolution.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . | |
| cached | No |
Implementation Reference
- src/tools/dev-tools.ts:121-136 (handler)Handler function that executes the git diff command, supporting optional path and cached flag, wrapped in error handling.async ({ path: gitPath, cached }) => { return wrapToolExecution(async () => { const cachedFlag = cached ? "--cached" : ""; const { stdout } = await execAsync(`git diff ${cachedFlag}`, { cwd: gitPath }); return { content: [{ type: "text" as const, text: stdout || "No differences" }] }; }, { errorCode: ERROR_CODES.GIT_OPERATION, context: "Failed to get git diff" }); }
- src/tools/dev-tools.ts:117-120 (schema)Zod input schema defining optional 'path' (defaults to current directory) and 'cached' boolean parameters.{ path: z.string().optional().default("."), cached: z.boolean().optional().default(false) },
- src/tools/dev-tools.ts:115-138 (registration)The registerGitDiff function that performs the MCP server.tool registration for 'git_diff', including inline schema and handler.function registerGitDiff(server: McpServer): void { server.tool("git_diff", { path: z.string().optional().default("."), cached: z.boolean().optional().default(false) }, async ({ path: gitPath, cached }) => { return wrapToolExecution(async () => { const cachedFlag = cached ? "--cached" : ""; const { stdout } = await execAsync(`git diff ${cachedFlag}`, { cwd: gitPath }); return { content: [{ type: "text" as const, text: stdout || "No differences" }] }; }, { errorCode: ERROR_CODES.GIT_OPERATION, context: "Failed to get git diff" }); } ); }
- src/tools/dev-tools.ts:25-25 (registration)Invocation of registerGitDiff within the broader registerDevTools function.registerGitDiff(server);
- src/index.ts:67-67 (registration)Top-level registration of dev tools (including git_diff) in the main server initialization.registerDevTools(server);