git-daily-review
Enables AI agents to run automated daily code reviews, retrieve Markdown reports, and curate a project knowledge base across any Git repository.
README
π Git Daily Review
Automated daily AI code review for any Git repository β usable as a CLI, a scheduled routine, or an MCP server for AI agents.
Git Daily Review analyzes your daily commits across multiple repositories, checks them against your project's conventions and quality gates, and produces a structured Markdown report. It ships with an MCP (Model Context Protocol) server, so agents like Claude Code and Claude Desktop can run reviews, read reports, and curate the project knowledge base conversationally.
License: AGPL-3.0-only Β· Python 3.10+ core Β· TypeScript MCP server
Highlights
- Any repo, any language β the AI adapts to your stack (TypeScript, Python, Java, Go, Rust, C#, β¦)
- Multi-repo β monitor as many repositories as you need in a single run
- MCP server β expose reviews, reports, and knowledge-base curation as agent tools
- Multi-provider AI β Anthropic Claude, OpenAI, Google Gemini, or any local model via Ollama (fully offline)
- Self-improving knowledge base β 7-layer project context that learns from each review, with a code-enforced auto-merge policy and human approval for high-impact changes
- RAG-ready β optional integration with an external RAG service for semantic context
- Cross-platform scheduling β macOS (launchd), Linux (cron), Windows (Task Scheduler); secrets stay in
.env, never in the scheduler files - Setup wizard β web-based configuration, no manual YAML editing required
Quick start (CLI)
git clone https://github.com/YOUR_USER/git-daily-review.git
cd git-daily-review
# 1. Configure (opens the wizard in your browser)
python3 setup.py
# 2. Secrets (cloud providers only β Ollama needs none)
cp .env.example .env # then add e.g. ANTHROPIC_API_KEY=...
chmod 600 .env
# 3. First review
python3 scripts/daily_review.py
# 4. Schedule daily runs
python3 scripts/scheduler.py --install
CLI reference:
python3 scripts/daily_review.py # review today
python3 scripts/daily_review.py --date 2026-05-12 # specific date
python3 scripts/daily_review.py --days 5 # last N days
python3 scripts/daily_review.py --collect-only # git data only, no AI
python3 scripts/daily_review.py --history # report history index
python3 scripts/kb_manager.py --review # interactive KB curation
python3 scripts/kb_manager.py --approve <ID> # non-interactive approve
python3 scripts/kb_manager.py --reject <ID> # non-interactive reject
python3 scripts/kb_manager.py --stats
MCP server (use it as an agent)
The mcp/ directory contains a TypeScript MCP server that wraps the review engine.
cd mcp
npm install
npm run build
Register it with Claude Code:
claude mcp add git-daily-review -- node /absolute/path/to/git-daily-review/mcp/dist/index.js
Or add it to Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"git-daily-review": {
"command": "node",
"args": ["/absolute/path/to/git-daily-review/mcp/dist/index.js"]
}
}
}
Exposed tools:
| Tool | What it does |
|---|---|
run_daily_review |
Run the review for today, a date, or the last N days |
get_report |
Read the full Markdown report for a date |
list_reports |
List available reports + history index |
list_kb_suggestions |
List KB suggestions (filter by status) |
decide_kb_suggestion |
Approve/reject a pending suggestion by ID |
kb_stats |
Knowledge-base statistics |
Then just ask your agent things like βrun today's review and summarize the critical issuesβ or βshow me pending KB suggestions and approve the ones about naming conventionsβ.
Environment overrides: GDR_ROOT (project root, default: repo root), GDR_PYTHON (Python executable, default: python3).
AI providers
| Provider | Models | API key env var | Notes |
|---|---|---|---|
| Anthropic | Claude Haiku, Sonnet, Opus | ANTHROPIC_API_KEY |
|
| OpenAI | GPT-4o-mini, GPT-4o, o1-mini | OPENAI_API_KEY |
|
| Google Gemini | Gemini 2.0 Flash, 1.5 Flash/Pro | GEMINI_API_KEY |
|
| Ollama (local) | any pulled model | (none) | fully offline; set num_ctx in config (default 32768) to avoid prompt truncation |
Secrets live in a .env file at the project root (see .env.example), loaded automatically at startup. They are never written into launchd plists, crontabs, or batch files.
Knowledge base (7 layers)
config/knowledge-base.yaml gives the reviewer structured project context:
L0 Identity Β· L1 Architecture Β· L2 Conventions Β· L3 Quality Gates
L4 Domain Β· L5 Integrations Β· L6 Release
After each run the system extracts new knowledge surfaced by the review and stores it as suggestions in config/kb_suggestions/. The auto-merge policy is enforced by code (not by the model): only new conventions and info/warning gates with confidence β₯ 0.85 can auto-merge, capped at 2 per run. Critical gates, domain rules, and integrations always require human approval β interactively (kb_manager.py --review), via CLI flags, or through the MCP decide_kb_suggestion tool.
Disable learning entirely with kb_learning: false in the ai: section of config.yaml.
Project structure
git-daily-review/
βββ setup.py β setup wizard entry point
βββ requirements.txt
βββ .env.example β secrets template (never commit .env)
βββ config/
β βββ config.example.yaml
β βββ knowledge-base.example.yaml
βββ scripts/ β Python core
β βββ daily_review.py β orchestrator (loads .env at startup)
β βββ git_collector.py β fetch, commits, diffs
β βββ ai_reviewer.py β review pipeline
β βββ ai_provider.py β Anthropic/OpenAI/Ollama/Gemini abstraction
β βββ kb_updater.py β KB learning + code-enforced auto-merge policy
β βββ kb_manager.py β KB curation CLI (interactive + --approve/--reject)
β βββ rag_client.py β optional RAG client
β βββ report_generator.py β Markdown reports + history index
β βββ scheduler.py β launchd / cron / schtasks (no secrets on disk)
β βββ wizard_app.py β wizard HTTP backend
βββ mcp/ β MCP server (TypeScript)
β βββ src/index.ts
βββ templates/wizard.html
βββ reports/ β generated daily reports (git-ignored)
Roadmap
- [ ] Slack/email notifications for the daily report
- [ ]
--cimode: non-zero exit on critical findings (PR gating) - [ ] Full TypeScript port of the core
- [ ] Remote repository support (review without a local clone)
Contributions welcome β open an issue or a PR.
License
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only). If you run a modified version as a network service, you must offer its source to the users of that service. See LICENSE.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.