- 🤖 LLM usage: $3.3000 (22 commits)
- 👤 Human dev: ~$538 (5.4h @ $100/h, 30min dedup)
Generated on 2026-05-03 using openrouter/qwen/qwen3-coder-next
System autonomicznej refaktoryzacji kodu oparty na Model Context Protocol (MCP), integrujący:
- MCP Git Proxy - izolowany serwis git z osobnym volume i API do sync/commit/test/push
- MCP Skills Server - analiza kodu i metryki na cache repozytoriów
- LLM Agent (
git2mcp) - planowanie refaktoryzacji i commitowanie zmian przez proxy git - MCP Gateway - publiczny shim OpenAI-compatible (auth, multi-tenant, SSE) do integracji z OpenWebUI
- MCP WebUI - panel testowy QA / admin dla
mcp-skills - gh2mcp Agent - synchronizacja tokenu GitHub z
ghCLI do.env(autostart w Docker)
cp .env.example .env # ustaw OPENROUTER_API_KEY i WEBUI_API_KEY
make start # killuje porty hostowe i uruchamia cały stack# Metoda A — gh CLI (zalecana)
gh auth login # jednorazowe logowanie
make setup-github # pobiera token z gh i zapisuje do .env
# Metoda B — przez WebUI (po make start)
# http://localhost:8092/github → "Pobierz token z gh CLI"
# Metoda C — ręcznie
echo "GITHUB_PAT=ghp_xxx" >> .env
# Test integracji GitHub
export GITHUB_PAT=ghp_xxx
make ansible-github-test # weryfikuje token + create-repo + cleanupMasz gotowy skrypt automatyzujący najczęstszy przepływ:
# 1) tylko analiza i plan kolejnych etapów dla ostatnio aktualizowanego repo GitHub
bash scripts/refactor-last-repo.sh
# 2) analiza + execute (commit artefaktów przez gateway/git-proxy)
bash scripts/refactor-last-repo.sh --execute
# 3) analiza + execute + push + PR
bash scripts/refactor-last-repo.sh --execute --push --pr
# 4) praca na konkretnym repo
bash scripts/refactor-last-repo.sh --repo semcod/mcp --execute --task "Etap 2 refaktoryzacji gateway"Skrypt zapisuje odpowiedzi API i wynik JSON do katalogu:
output/refactor-last-repo-<timestamp>/.
make start uruchamia także gh2mcp-agent, który przy starcie może zsynchronizować token do .env
(GH2MCP_SYNC_ON_START=true).
# make stop # zatrzymuje wszystko
# make smoke # szybki test API gateway/webui
# make generate-demo-repos # tworzy 3 repo demo (auto: github/local fallback)
# make generate-demo-repos-github # wymusza tryb github (gh + fallback)
# make help # pełna lista targetów| Serwis | URL |
|---|---|
| OpenWebUI (chat) | http://localhost:3000 |
| MCP WebUI (admin) | http://localhost:8092 |
| MCP WebUI GitHub | http://localhost:8092/github |
| MCP Docs (playbooki) | http://localhost:8093 |
| Gateway (API) | http://localhost:9000 |
| Dashboard | http://localhost:8085 |
| Git Proxy (dev) | http://localhost:8081 |
Pełne scenariusze użycia: docs/USAGE.md.
Dialogi chat-playbook (copy/paste): docs/CHAT_PLAYBOOKS.md.
Architektura produktowa: docs/PRODUCT.md.
Plan refaktoryzacji: REFACTORING_PLAN.md.
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ LLM Agent │────▶│ MCP Skills │◀────│ MCP Git │
│ (git2mcp) │ │ Server │ │ Proxy │
└─────────────┘ └─────────────┘ └─────────────┘
│
▼
┌─────────────┐
│ LLM API │
│ (OpenRouter │
│ lite/model)│
└─────────────┘
mcp-git-proxyzarządza wieloma repozytoriami (team/repo-a,team/repo-b, ...), klonuje je i utrzymuje historię git.git2mcpeksportuje repo jako paczkę (tar.gz + base64) przez endpoint/packages/export.mcp-skillssynchronizuje paczkę do własnego cache (/skills-cache) narzędziemsync_repo_from_git_proxy.llm-agentanalizuje cache, tworzy plan i zapisuje zmiany jako commit przez API proxy (bez ręcznej edycji przez shell).- Commit można lokalnie przetestować (
/run-tests) i dopiero potem wypchnąć (/push).
Tryb transferu do mcp-skills:
- preferowany:
POST /packages/export-fragments(fragmentypath + content_b64, rekonstrukcja plików po stronie skills) - fallback:
POST /packages/export(tar.gz + base64)
mcp-skills nie współdzieli volume /git-repos z git proxy — otrzymuje repo wyłącznie przez MCP transfer.
- Docker & Docker Compose
- Python 3.11+ (dla lokalnego uruchomienia)
- (Opcjonalnie) GitHub PAT - dla operacji na repo
- (Opcjonalnie) OpenAI API Key - dla zaawansowanej analizy LLM
# Klonowanie i setup
./scripts/deploy.sh# Skopiuj przykładową konfigurację
cp .env.example .env
# Edytuj .env zgodnie z potrzebami
nano .env# Uruchom wszystkie serwisy
docker-compose up -d
# Uruchom agenta z analizą repozytorium
docker-compose run --rm llm-agent python agent_git2mcp.py \
--repo team/my-repo \
--repo-url https://github.com/team/my-repo.git.
├── docker-compose.yml # Konfiguracja Docker (dev)
├── docker-compose.prod.yml # Overlay produkcyjny
├── Makefile # Zarządzanie cyklem życia (start, stop, smoke)
├── .env.example # Przykładowa konfiguracja
├── README.md # Dokumentacja
├── CHANGELOG.md # Historia zmian
├── TODO.md # Zadania do zrobienia
├── REFACTORING_PLAN.md # Plan architektoniczny
│
├── mcp-git-proxy/ # MCP Git Proxy - operacje git przez HTTP API
│ ├── Dockerfile
│ ├── requirements.txt
│ └── server.py
│
├── git2mcp/ # Pakiet Python do operacji git przez MCP
│ ├── git2mcp/
│ │ ├── client.py # Async HTTP client
│ │ └── proxy.py # GitProxyManager (serwer)
│ ├── examples/ # Przykłady użycia (01-05)
│ ├── tests/ # Testy pytest
│ ├── pyproject.toml
│ └── README.md
│
├── gh2mcp/ # NOWOŚĆ: agent sync tokenu GitHub (gh -> .env)
│ ├── gh2mcp/
│ │ ├── sync.py
│ │ ├── server.py
│ │ └── cli.py
│ ├── Dockerfile
│ ├── pyproject.toml
│ └── README.md
│
├── mcp-skills/ # MCP Skills Server - analiza kodu
│ ├── Dockerfile
│ ├── requirements.txt
│ └── server.py # FastAPI HTTP API + MCP STDIO
│
├── mcp-gateway/ # NOWOŚĆ: OpenAI-compatible shim
│ ├── Dockerfile
│ ├── requirements.txt
│ ├── server.py # FastAPI + SSE + multi-tenant
│ └── tenants/ # Konfiguracja tenantów (YAML)
│ └── default.yaml
│
├── mcp-webui/ # NOWOŚĆ: Panel testowy QA/admin
│ ├── Dockerfile
│ ├── requirements.txt
│ ├── server.py # FastAPI + Jinja2 + HTMX
│ └── templates/ # HTML templates
│
├── llm-agent/ # Autonomiczny Agent
│ ├── Dockerfile
│ ├── requirements.txt
│ ├── agent.py
│ ├── agent_standalone.py
│ └── agent_git2mcp.py # Workflow przez git2mcp
│
├── dashboard/ # Wizualizacja wyników
│ ├── Dockerfile
│ ├── server.py
│ └── index.html
│
├── ansible/ # NOWOŚĆ: Ansible E2E tests
│ ├── inventory.ini
│ ├── e2e-docker-stack.yml
│ └── test-github-integration.yml
│
├── env2mcp/ # NOWOŚĆ: konfiguracja .env i GitHub auth helper
│ ├── env2mcp/
│ │ ├── cli.py
│ │ ├── config.py
│ │ └── github_cli.py
│ ├── pyproject.toml
│ └── README.md
│
├── mcp-docs/ # Serwis dokumentacji (Docker, port 8093)
│ ├── Dockerfile
│ ├── requirements.txt
│ └── server.py
│
├── docs/ # Dokumentacja produktowa
│ ├── PRODUCT.md # Architektura produktowa
│ ├── USAGE.md # Scenariusze użycia (10 przepływów)
│ ├── USE_CASES.md # Gotowe use-case + prompty
│ └── CHAT_PLAYBOOKS.md # Dialogi chat jako playbook operacyjny
│
├── scripts/
│ ├── deploy.sh
│ ├── test.sh
│ ├── generate_demo_repos.sh # Generowanie repo demo (GitHub/local)
│ └── refactor-last-repo.sh # Auto workflow: last repo → analyze → refactor
│
├── repos/ # Repo hosta (read-only mount)
└── output/ # Wyniki analizy (volume)
OpenAI-compatible HTTP API shim dla integracji z zewnętrznymi klientami:
- Endpointy:
/v1/models,/v1/chat/completions(z SSE streaming),/jobs/{job_id},/jobs/{job_id}/stream - Autoryzacja: Bearer token (per-tenant API keys)
- Multi-tenant: Konfiguracja przez
tenants/*.yaml - Audit logging: JSONL logi w wolumenie
audit-storage - Prompt parsing: Automatyczne parsowanie pól (Repo, Repo URL, Source, Branch, Execute, Push, Draft, PR, Test, Remote, Zadanie, GitHub Token)
- Komendy systemowe: sync/zapis tokenu, zarządzanie organizacjami, auto-resolve repo z szablonu
{{...}} - Repo template:
Repo: {{pokaż ostatnie repo z github}}→ auto-resolve przez gh2mcp - GitHub auth auto-recovery: automatyczne odświeżenie tokenu przy błędzie 401 + 3-opcji recovery message
- Async mode (Redis/RQ): długie operacje wykonywane w tle z job streaming via SSE (
async_mode: true)
FastAPI + HTMX + Tailwind dla QA i administratorów:
- Dashboard ze statusem gateway
- Lista repozytoriów + sync form
- Uruchamianie skilli przez gateway
- Podgląd diffów
- Playground dla free-form promptów
- Konfiguracja GitHub i zarządzanie repo na
/github - URL: http://localhost:8092
Oficjalny frontend (docker image) podłączony do MCP Gateway:
- Chat z modelami
mcp-skills/refactorimcp-skills/analyze - URL: http://localhost:3000
Serwer FastAPI z endpointami (poza MCP STDIO):
POST /sync- Synchronizacja repo z git-proxyPOST /analyze/structure- Analiza struktury koduPOST /analyze/metrics- Metryki repozytoriumPOST /analyze/patterns- Wykrywanie wzorcówPOST /refactor/recommend- Rekomendacje refaktoryzacjiGET /health- Healthcheck
Analiza struktury kodu dla podanych ścieżek (via HTTP API lub MCP).
Metryki całego repozytorium.
Wykrywanie wzorców i antywzorców.
Rekomendacje refaktoryzacji z priorytetyzacją.
Synchronizacja repozytorium z mcp-git-proxy do cache skills.
git2mcp dostarcza dwa komponenty:
GitProxyManager(serwer wmcp-git-proxy) — sync repo, export paczek, commit/test/pushGit2MCPClient(klient async) — używany przez agentów i gateway
Operacje na working tree bez commitowania:
worktree_read/write/diff- Bezpośrednia edycja plikówpatch_apply- Aplikowanie unified diffstage- Dodawanie do indeksustash_save/pop- Stash operacjebranch_draft- Tworzenie branchy draft/*checkpoint_create/restore- Snapshoty tarball dla rollbackreset- Git reset (hard/soft/mixed)
Zobacz git2mcp/examples/05_local_iterate.py dla workflow: checkpoint → patch → test → commit (lub rollback).
Najważniejsze endpointy mcp-git-proxy:
POST /repos/sync- klonowanie/pull repo do izolowanego volumePOST /packages/export-fragments- export repo jako fragmenty (path + content_b64)POST /packages/export- eksport pełnego repo do paczkiPOST /repos/{repo_id}/commit- commit zmian przesłanych jako payloadPOST /repos/{repo_id}/run-tests- test commitu przed pushemPOST /repos/{repo_id}/push- push po pozytywnych testach
# Przygotuj testowe repozytorium
mkdir -p repos/my-project
cp -r /path/to/code/* repos/my-project/
# Uruchom analizę
docker-compose run --rm llm-agent python agent_git2mcp.py \
--repo test/sample-project \
--source-path /host-repos/test/sample-project \
--branch main# W .env ustaw:
# LLM_PROVIDER=openai
# OPENAI_API_KEY=sk-...
docker-compose run --rm llm-agent python agent_git2mcp.py \
--repo team/my-repo \
--source-path /host-repos/my-project# Uruchom Ollama
docker-compose --profile ollama up -d ollama
# W .env ustaw:
# LLM_PROVIDER=ollama
# OLLAMA_HOST=http://ollama:11434
docker-compose run --rm llm-agent python agent_git2mcp.py \
--repo my-project \
--source-path /host-repos/my-project# LLM Provider: openrouter-lite, mock, openai, ollama
# LLM_PROVIDER=openrouter-lite
# OPENROUTER_API_KEY=...
# LLM_MODEL=openrouter/x-ai/grok-code-fast-1
docker-compose run --rm llm-agent python agent_git2mcp.py \
--repo my-project \
--source-path /host-repos/my-project \
--execute-
Prompt - Użytkownik wysyła prompt przez OpenWebUI (lub API) z polami:
Repo: team/project,Source: /path,Branch: mainExecute: true(opcjonalnie wykonaj commit)Push: true(opcjonalnie wypchnij)Zadanie: Przeanalizuj i zaproponuj refaktor...
-
Gateway Processing:
- Parsuje prompt i routing do
mcp-git-proxy(sync repo) - Wywołuje
mcp-skillsHTTP API (analyze, metrics, patterns) - Generuje plan refaktoryzacji (
.mcp/refactor-plan.json) - Tworzy summary (
.mcp/refactor-summary.md) - Jeśli
Execute=true: commit artefaktów + test + push (jeśliPush=true)
- Parsuje prompt i routing do
-
Wynik - JSON z analizą, planem i statusem wykonania.
- Sync Git -
mcp-git-proxypobiera/aktualizuje repo do własnego volume. - Cache Skills -
git2mcpeksportuje paczkę repo i odświeża cache w skills. - Analiza - agent liczy metryki i wykrywa wzorce.
- Planowanie - lite LLM generuje plan refaktoryzacji.
- Commit via MCP - zmiany idą jako payload do
/commit, bez ręcznej edycji plików przez shell. - Test lokalny -
/run-testsw izolowanym repo git proxy. - Push (opcjonalny) - tylko po przejściu testów.
# Start całego stacku (zabija porty, build, up, smoke-test)
make start
# Sprawdź status
make ps
# Logi w czasie rzeczywistym
make logs
# Smoke test API
make smoke
# Stop wszystkiego
make stop
# Produkcja (bez dev mountów)
make prod-up
# Więcej opcji
make helpDashboard webowy dostarcza interaktywny interfejs do przeglądania wyników analizy.
# Dashboard startuje automatycznie z deploy.sh
# Lub ręcznie:
docker-compose up -d dashboard- Dashboard UI: http://localhost:8085
- API Status: http://localhost:8085/api/status
- Lista analiz: http://localhost:8085/api/analyses
- Metryki w czasie rzeczywistym - liczba plików, linii, funkcji, klas
- Lista plików - ranking największych plików z metrykami
- Analiza importów - najczęściej używane biblioteki
- Rekomendacje - priorytetowe akcje refaktoryzacji
- Plan refaktoryzacji - podsumowanie z architekturą i ryzykami
- Szczegóły techniczne - pełny JSON z analizy
# Wygeneruj analizę
docker-compose run --rm llm-agent python agent_git2mcp.py \
--repo test/sample-project \
--source-path /host-repos/test/sample-project \
--execute
# Otwórz dashboard w przeglądarce
open http://localhost:8085
# lub
xdg-open http://localhost:8085# Uruchom wszystkie testy
./scripts/test.sh
# Uruchom tylko testy e2e API/proxy
python3 -m pytest -q git2mcp/tests/test_git2mcp.py
# E2E skrypt pokrywa też push-path (commit -> test -> push do lokalnego bare remote)
# i waliduje obecność artefaktu .mcp/refactor-plan.json po pushu
# E2E skrypt testuje też 3 repo z /home/tom/github/semcod
# (docs, code2schema, ats-benchmark) oraz transfer do mcp-skills bez shared volume,
# wyłącznie przez MCP fragmenty/path updates.
# Sprawdź strukturę
ls -la repos/ output/
# Sprawdź logi
docker-compose logs -f mcp-git-proxy mcp-skillscd mcp-skills
pip install -r requirements.txt
python server.pycd llm-agent
pip install -r requirements.txt
PYTHONPATH=.. python agent_git2mcp.py --repo test/sample-project --source-path ../repos/test/sample-project- docs/USAGE.md - Pełne scenariusze użycia (9 przepływów end-to-end)
- docs/USE_CASES.md - Gotowe use-case i prompty dla refactor/migration/integration
- docs/CHAT_PLAYBOOKS.md - Szczegółowe dialogi chat jako playbook operacyjny
- docs/PRODUCT.md - Architektura produktowa, multi-tenant, bezpieczeństwo
- env2mcp/README.md - Konfiguracja
.envi integracja GitHub (gh/PAT) - REFACTORING_PLAN.md - Plan refaktoryzacji i roadmap
- git2mcp/README.md - Dokumentacja pakietu git2mcp
- CHANGELOG.md - Historia zmian
- TODO.md - Zadania do zrobienia i product roadmap
Zobacz plik LICENSE.
Licensed under Apache-2.0.
