git_diff
Compare Git repository changes to identify modifications between commits, branches, or working directory states for code review and version control.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . | |
| cached | No |
Implementation Reference
- src/tools/dev-tools.ts:121-136 (handler)Executes the git diff command with optional --cached flag in the specified path and returns the diff output as text content.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 (defaults to false) parameters.{ path: z.string().optional().default("."), cached: z.boolean().optional().default(false) },
- src/tools/dev-tools.ts:115-138 (registration)Registers the 'git_diff' tool on the MCP server, including 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/index.ts:67-67 (registration)Calls registerDevTools which registers git_diff among other dev tools.registerDevTools(server);
- src/tools/dev-tools.ts:25-25 (registration)Called within registerDevTools to register the git_diff tool.registerGitDiff(server);