Skip to main content
Glama

git_status

Check Git repository status to view staged, unstaged, and untracked files for version control management.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathNo.

Implementation Reference

  • Registers the git_status MCP tool, including Zod input schema for 'path' parameter and the inline async handler that runs git status, parses output using helpers, and returns JSON result.
    function registerGitStatus(server: McpServer): void { server.tool("git_status", { path: z.string().optional().default(".") }, async ({ path: gitPath }) => { return wrapToolExecution(async () => { const { stdout } = await execAsync(`git status --porcelain`, { cwd: gitPath }); const branch = await getCurrentBranch(gitPath); const result = parseGitStatus(stdout, branch); return { content: [{ type: "text" as const, text: JSON.stringify(result, null, 2) }] }; }, { errorCode: ERROR_CODES.GIT_OPERATION, context: "Failed to get git status" }); } ); }
  • Core handler logic for git_status tool: executes git status command, retrieves current branch, parses into structured result, wraps in error handler, returns as MCP content.
    server.tool("git_status", { path: z.string().optional().default(".") }, async ({ path: gitPath }) => { return wrapToolExecution(async () => { const { stdout } = await execAsync(`git status --porcelain`, { cwd: gitPath }); const branch = await getCurrentBranch(gitPath); const result = parseGitStatus(stdout, branch); return { content: [{ type: "text" as const, text: JSON.stringify(result, null, 2) }] }; }, { errorCode: ERROR_CODES.GIT_OPERATION, context: "Failed to get git status" }); } );
  • TypeScript interfaces defining the structure of Git status entries and the overall result returned by the git_status tool.
    export interface GitStatusEntry { status: string; file: string; } export interface GitCommit { hash: string; author: string; date: string; message: string; } export interface GitStatusResult { branch: string; changes: GitStatusEntry[] | string; }
  • Helper function that parses the raw 'git status --porcelain' stdout into GitStatusResult format with branch and changes array or 'No changes' string.
    function parseGitStatus(stdout: string, branch: string): GitStatusResult { const lines = stdout.trim().split('\n').filter(line => line); const changes = lines.map(line => ({ status: line.substring(0, 2).trim(), file: line.substring(3) })); return { branch, changes: changes.length > 0 ? changes : "No changes" }; }
  • Helper function to retrieve the current Git branch name using 'git rev-parse --abbrev-ref HEAD'.
    async function getCurrentBranch(cwd: string): Promise<string> { const { stdout } = await execAsync(`git rev-parse --abbrev-ref HEAD`, { cwd }); return stdout.trim(); }

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/ishuru/open-mcp'

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