Skip to main content
Glama
README.md
# git-standup-mcp

MCP server that generates standup reports from your git history and posts them to Slack. Ask Claude what you did yesterday, or set up a cron job to post automatically every morning.

## Install

```bash
# Add to Claude Code
claude mcp add git-standup -- uv run --directory /path/to/git-standup-mcp git-standup-mcp
```

Or add to your MCP config manually:

```json
{
  "mcpServers": {
    "git-standup": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/git-standup-mcp", "git-standup-mcp"],
      "env": {
        "GIT_STANDUP_REPOS": "/path/to/repo1,/path/to/repo2",
        "SLACK_STANDUP_WEBHOOK": "https://hooks.slack.com/services/..."
      }
    }
  }
}
```

## Usage

Once connected, ask Claude:

- "What did I do yesterday?"
- "Give me a standup for the last 3 days"
- "Post my standup to Slack"
- "What repos do you have access to?"

## Slack Integration

Set up an [Incoming Webhook](https://api.slack.com/messaging/webhooks) for your standup channel, then set `SLACK_STANDUP_WEBHOOK`.

### Automatic daily posts (cron)

```bash
# Post yesterday's standup at 9am on weekdays
0 9 * * 1-5 cd /path/to/git-standup-mcp && \
  GIT_STANDUP_REPOS="~/projects,~/work" \
  SLACK_STANDUP_WEBHOOK="https://hooks.slack.com/..." \
  uv run python -m git_standup_mcp.cron
```

```bash
# Dry run — see the report without posting
uv run python -m git_standup_mcp.cron --dry-run

# Monday morning — cover the weekend
uv run python -m git_standup_mcp.cron --days 3

# Filter by author
uv run python -m git_standup_mcp.cron --author "Anisha"
```

## Tools

### `git_standup`

Get a standup report of recent git activity across your repos.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `days` | int | 1 | Number of days to look back |
| `author` | string | null | Filter by author name (partial match) |
| `repos` | string | null | Comma-separated repo paths (overrides env) |

### `git_repos`

List all git repos the server can see.

### `post_to_slack`

Post a message to Slack via webhook.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `message` | string | required | Message text (supports Slack markdown) |
| `channel_name` | string | null | Channel override (uses webhook default if not set) |

## Configuration

| Env var | Description |
|---------|-------------|
| `GIT_STANDUP_REPOS` | Comma-separated directories to scan for repos (default: ~/Documents) |
| `SLACK_STANDUP_WEBHOOK` | Slack Incoming Webhook URL for posting |

Repos are auto-discovered up to 2 levels deep.

TDQS

B3.4/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: git_repos lists available repositories, while git_standup generates activity reports. There is no overlap in functionality, making tool selection unambiguous for an agent.

Naming Consistency5/5

Both tools follow a consistent snake_case naming pattern with the 'git_' prefix, maintaining perfect naming consistency throughout the set. This predictability aids agent understanding and usage.

Tool Count2/5

With only two tools, the server feels under-scoped for its apparent domain of git activity reporting. While the tools cover core functionality, the lack of additional operations (e.g., configuration management, filtering options as separate tools) makes the surface thin and potentially limiting.

Completeness3/5

The server covers the basic workflow of listing repos and generating standup reports, but there are notable gaps. Missing operations include managing git-standup configurations, handling repo exclusions, or providing detailed commit analytics, which could hinder more complex agent tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues