Install any skill in seconds. Free to start, no credit card required.
Get Started Free →GitHub MCP Server ile GitHub API erisimi. Repo, issue, PR, code search, release yonetimi.
.claude/skills/github-mcp/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 66% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 257% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 571% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 242% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 335% | 0% |
| Ozellik | GitHub MCP | gh CLI | |---------|-----------|--------| | Kurulum | MCP server config | brew install gh | | Auth | PAT token (MCP env) | gh auth login (interactive) | | Kullanim | Tool call (agent icinden) | Bash komutu | | Rate limit | REST API limit (5000/h) | Ayni | | Avantaj | Agent workflow icinde seamless | Terminal scripting | | Dezavantaj | MCP server calisir olmali | Agent context'ten cikmak lazim |
GitHub MCP kullan:
- Agent workflow icinde GitHub islemleri gerektiginde
- Birden fazla API call zincirlenecekse
- Structured data response lazimsa
gh CLI kullan:
- Tek seferlik terminal islemleri
- PR olusturma/merge (interaktif)
- Git hook'lari icinde
- Script/otomasyon icindeGitHub Settings > Developer Settings > Personal Access Tokens > Fine-grained
Gerekli permission'lar:
- Repository: Read/Write
- Issues: Read/Write
- Pull Requests: Read/Write
- Actions: Read/Write (workflow tetikleme)
- Webhooks: Read/Write (webhook yonetimi)
- Organization: Read (org API)json{ "mcpServers": { "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "<PAT_TOKEN>" } } } }
json{ "mcpServers": { "github": { "command": "docker", "args": ["run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/modelcontextprotocol/server-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "<PAT_TOKEN>" } } } }
mcp_github.create_repository({
name: "my-project",
description: "Proje aciklamasi",
private: true,
auto_init: true // README ile baslat
})mcp_github.get_repository({
owner: "username",
repo: "repo-name"
})
// Response: stars, forks, open_issues, default_branch, languagemcp_github.fork_repository({
owner: "original-owner",
repo: "original-repo"
})// Branch olustur
mcp_github.create_branch({
owner: "username",
repo: "repo-name",
branch: "feature/new-feature",
from_branch: "main"
})
// Branch listele
mcp_github.list_branches({
owner: "username",
repo: "repo-name"
})mcp_github.create_issue({
owner: "username",
repo: "repo-name",
title: "Bug: Login form broken",
body: "## Steps to reproduce\n1. Go to /login\n2. Enter credentials\n3. Click submit\n\n## Expected\nRedirect to dashboard\n\n## Actual\n500 error",
labels: ["bug", "P1"],
assignees: ["developer-username"]
})mcp_github.list_issues({
owner: "username",
repo: "repo-name",
state: "open",
labels: "bug",
sort: "created",
direction: "desc"
})mcp_github.update_issue({
owner: "username",
repo: "repo-name",
issue_number: 42,
state: "closed",
labels: ["bug", "resolved"]
})mcp_github.add_issue_comment({
owner: "username",
repo: "repo-name",
issue_number: 42,
body: "Fixed in PR #45"
})mcp_github.create_pull_request({
owner: "username",
repo: "repo-name",
title: "feat: Add user authentication",
body: "## Summary\n- JWT auth implementation\n- Login/register endpoints\n\n## Test plan\n- [ ] Unit tests pass\n- [ ] Integration tests pass",
head: "feature/auth",
base: "main",
draft: false
})// Review olustur
mcp_github.create_review({
owner: "username",
repo: "repo-name",
pull_number: 45,
event: "APPROVE", // APPROVE | REQUEST_CHANGES | COMMENT
body: "LGTM! Clean implementation."
})mcp_github.merge_pull_request({
owner: "username",
repo: "repo-name",
pull_number: 45,
merge_method: "squash" // merge | squash | rebase
})mcp_github.get_pull_request_files({
owner: "username",
repo: "repo-name",
pull_number: 45
})
// Response: filename, status (added/modified/removed), additions, deletionsmcp_github.search_code({
query: "useEffect cleanup repo:username/repo-name",
per_page: 10
})// Dil filtreyle
mcp_github.search_code({
query: "rate limiter language:typescript stars:>100"
})
// Organizasyon icinde
mcp_github.search_code({
query: "database migration org:my-org"
})repo:owner/name # Spesifik repo
org:organization # Organizasyon icinde
path:src/utils # Path filtresi
filename:config.ts # Dosya adi
extension:py # Uzanti
language:typescript # Dil
stars:>100 # Minimum star
size:>1000 # Minimum bytemcp_github.create_workflow_dispatch({
owner: "username",
repo: "repo-name",
workflow_id: "deploy.yml",
ref: "main",
inputs: {
environment: "production",
version: "v1.2.3"
}
})mcp_github.list_workflow_runs({
owner: "username",
repo: "repo-name",
workflow_id: "ci.yml",
status: "completed",
per_page: 5
})mcp_github.get_workflow_run_logs({
owner: "username",
repo: "repo-name",
run_id: 12345
})mcp_github.create_release({
owner: "username",
repo: "repo-name",
tag_name: "v1.2.3",
name: "Release v1.2.3",
body: "## What's Changed\n- feat: User auth (#42)\n- fix: Login redirect (#45)\n\n## Breaking Changes\nNone",
draft: false,
prerelease: false
})mcp_github.list_releases({
owner: "username",
repo: "repo-name",
per_page: 10
})mcp_github.get_latest_release({
owner: "username",
repo: "repo-name"
})mcp_github.create_webhook({
owner: "username",
repo: "repo-name",
config: {
url: "https://my-server.com/webhook",
content_type: "json",
secret: "webhook-secret-123"
},
events: ["push", "pull_request", "issues"],
active: true
})| Event | Ne Zaman | Kullanim | |-------|----------|----------| | push | Commit push | CI/CD tetikle | | pull_request | PR acildi/kapandi | Review notify | | issues | Issue degisti | Triage bot | | release | Release yayinlandi | Deploy tetikle | | workflow_run | Action tamamlandi | Status notify | | star | Repo star'landi | Analytics |
mcp_github.get_organization({
org: "my-organization"
})mcp_github.list_teams({
org: "my-organization"
})mcp_github.list_team_members({
org: "my-organization",
team_slug: "backend-team"
})mcp_github.list_org_repos({
org: "my-organization",
type: "all",
sort: "updated"
})| Auth Tipi | Limit | Reset | |-----------|-------|-------| | PAT (authenticated) | 5000 req/h | 1 saat | | Unauthenticated | 60 req/h | 1 saat | | Search API | 30 req/min | 1 dakika | | GraphQL | 5000 points/h | 1 saat |
mcp_github.get_rate_limit()
// Response: { limit, remaining, reset_at }1. Conditional requests (If-None-Match header) kullan
2. Pagination ile kucuk sayfalarda cek (per_page: 30)
3. Search API'yi 30 req/min altinda tut
4. 403 + "rate limit exceeded" alirsan reset_at kadar bekle
5. Webhook kullan (polling yerine event-driven)
6. GraphQL kullan (birden fazla REST call yerine tek query)1. Issue olustur (task tanimla)
2. Branch olustur (feature/X)
3. Kod yaz, commit et
4. PR olustur (issue'ya referans ver)
5. Review iste
6. Merge et (squash)
7. Release olustur (tag ile)1. Issue olustur (bug raporu)
2. Branch olustur (fix/X)
3. Fix yaz, test ekle
4. PR olustur (Fixes #issue-number)
5. CI gectigini dogrula
6. Merge et
7. Issue otomatik kapanir1. Push event -> CI workflow calisir
2. PR event -> Test + lint + security scan
3. Release event -> Deploy workflow calisir
4. Workflow dispatch -> Manuel deploy| Anti-Pattern | Dogru Yol | |-------------|-----------| | PAT'i koda gomme | .env veya MCP config env | | Tum permission'lari ver | Minimum gerekli scope | | Polling ile status kontrol | Webhook kullan | | Buyuk sayfa boyutu (100+) | per_page: 30, pagination | | Rate limit'i yoksay | get_rate_limit ile kontrol | | Force push main'e | Branch protection + PR |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 17,170 | 13,046 | -24% | 1 | 1 | 0% | 3,383 | 5,622 | +66% | 0 | 0 | — |
case-02 | pass→pass | 6,320 | 3,661 | -42% | 1 | 1 | 0% | 1,203 | 3,768 | +213% | 0 | 0 | — |
case-03 | fail→pass | 5,695 | 2,536 | -55% | 1 | 1 | 0% | 992 | 3,539 | +257% | 0 | 0 | — |
case-04 | fail→pass | 2,799 | 2,119 | -24% | 1 | 1 | 0% | 508 | 3,409 | +571% | 0 | 0 | — |
case-05 | fail→pass | 5,000 | 1,928 | -61% | 1 | 1 | 0% | 999 | 3,416 | +242% | 0 | 0 | — |
case-11 | fail→fail | 2,388 | 2,318 | -3% | 1 | 1 | 0% | 398 | 3,433 | +763% | 0 | 0 | — |
case-06 | fail→pass | 4,766 | 3,451 | -28% | 1 | 1 | 0% | 855 | 3,715 | +335% | 0 | 0 | — |
case-07 | fail→pass | 10,656 | 3,144 | -70% | 1 | 1 | 0% | 2,132 | 3,636 | +71% | 0 | 0 | — |
case-08 | fail→pass | 5,204 | 3,067 | -41% | 1 | 1 | 0% | 734 | 3,522 | +380% | 0 | 0 | — |
case-09 | fail→pass | 6,045 | 3,072 | -49% | 1 | 1 | 0% | 1,046 | 3,604 | +245% | 0 | 0 | — |
case-10 | fail→pass | 2,921 | 2,632 | -10% | 1 | 1 | 0% | 482 | 3,519 | +630% | 0 | 0 | — |
case-12 | fail→pass | 4,392 | 3,305 | -25% | 1 | 1 | 0% | 790 | 3,617 | +358% | 0 | 0 | — |
case-13 | fail→pass | 9,819 | 4,374 | -55% | 1 | 1 | 0% | 1,985 | 3,992 | +101% | 0 | 0 | — |
case-14 | fail→pass | 7,323 | 3,736 | -49% | 1 | 1 | 0% | 1,548 | 3,752 | +142% | 0 | 0 | — |
case-15 | fail→pass | 9,032 | 3,528 | -61% | 1 | 1 | 0% | 1,817 | 3,682 | +103% | 0 | 0 | — |
case-16 | fail→fail | 5,999 | 2,357 | -61% | 1 | 1 | 0% | 1,039 | 3,497 | +237% | 0 | 0 | — |
case-17 | fail→pass | 7,526 | 8,099 | +8% | 1 | 1 | 0% | 1,451 | 3,828 | +164% | 0 | 0 | — |
case-18 | pass→pass | 12,296 | 5,737 | -53% | 1 | 1 | 0% | 2,046 | 4,017 | +96% | 0 | 0 | — |
case-19 | pass→pass | 4,796 | 3,767 | -21% | 1 | 1 | 0% | 927 | 3,647 | +293% | 0 | 0 | — |
case-20 | fail→pass | 10,299 | 6,240 | -39% | 1 | 1 | 0% | 1,796 | 4,140 | +131% | 0 | 0 | — |
case-21 | fail→pass | 12,909 | 6,446 | -50% | 1 | 1 | 0% | 2,058 | 4,171 | +103% | 0 | 0 | — |
case-22 | pass→pass | 5,182 | 3,742 | -28% | 1 | 1 | 0% | 951 | 3,786 | +298% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +73 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 7/29/2026 | +45% |
Other measured skills in the registry, with their headline benchmark lift.