/ الدليل / الملعب / git-mcp-server
● مجتمع cyanheads ⚡ فوري

git-mcp-server

بواسطة cyanheads · cyanheads/git-mcp-server

أداة MCP لـ Git قوية — 28 أداة تشمل worktrees، stash، reflog، توقيع GPG، وأدلة العمل المعزولة بالجلسة حتى يتمكن Claude من العمل عبر عدة مستودعات بأمان.

حيث تغطي أداة git MCP المرجعية الأساسيات، يذهب cyanheads/git-mcp-server أعمق. إدارة worktree، توقيع الالتزام الاختياري، عزل المسار، أدلة العمل المعزولة بالجلسة، والتحكم في صيغة الاستجابة (JSON للوكلاء، Markdown للبشر) تجعله مناسباً للوكلاء متعددي المستودعات وسير العمل على مستوى المؤسسات.

لماذا تستخدمه

الميزات الأساسية

عرض مباشر

كيف يبدو في الممارسة

git-2.replay ▶ جاهز
0/0

التثبيت

اختر العميل

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "git-2": {
      "command": "npx",
      "args": [
        "-y",
        "git-mcp-server"
      ],
      "_inferred": true
    }
  }
}

افتح Claude Desktop → Settings → Developer → Edit Config. أعد التشغيل بعد الحفظ.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "git-2": {
      "command": "npx",
      "args": [
        "-y",
        "git-mcp-server"
      ],
      "_inferred": true
    }
  }
}

يستخدم Cursor نفس مخطط mcpServers مثل Claude Desktop. إعدادات المشروع أولى من الإعدادات العامة.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "git-2": {
      "command": "npx",
      "args": [
        "-y",
        "git-mcp-server"
      ],
      "_inferred": true
    }
  }
}

انقر على أيقونة MCP Servers في شريط Cline الجانبي، ثم "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "git-2": {
      "command": "npx",
      "args": [
        "-y",
        "git-mcp-server"
      ],
      "_inferred": true
    }
  }
}

نفس الصيغة مثل Claude Desktop. أعد تشغيل Windsurf لتطبيق التغييرات.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "git-2",
      "command": "npx",
      "args": [
        "-y",
        "git-mcp-server"
      ]
    }
  ]
}

يستخدم Continue مصفوفة من كائنات الخادم بدلاً من خريطة.

~/.config/zed/settings.json
{
  "context_servers": {
    "git-2": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "git-mcp-server"
        ]
      }
    }
  }
}

أضف إلى context_servers. يعيد Zed التحميل تلقائيًا عند الحفظ.

claude mcp add git-2 -- npx -y git-mcp-server

أمر من سطر واحد. تحقق باستخدام claude mcp list. احذف باستخدام claude mcp remove.

حالات الاستخدام

استخدامات عملية: git-mcp-server

تطبيق نفس إعادة البناء عبر 10 مستودعات في مؤسسة متكررة monorepo

👤 مهندسو المنصة، devrel ⏱ ~45 min advanced

متى تستخدمه: تحتاج إلى ترقية تبعية أو إعادة تسمية استيراد عبر العديد من المستودعات ولا تريد الاستنساخ وتبديل السياق يدوياً.

المتطلبات الأساسية
  • نسخ محلية أو حق الوصول للكتابة — مفاتيح SSH معروضة
الخطوات
  1. تعداد المستودعات
    أدرج كل مستودع ضمن ~/code/acme. لكل منها، بدّل دليل العمل، قم بتشغيل git_status، وأخبرني بالفرع الحالي.✓ تم النسخ
    → حالة كل مستودع
  2. الفرع والتغيير التطبيقي
    في كل مستودع، أنشئ فرع 'chore/bump-foo'، رقّ foo من 1.x إلى 2.x في package.json، التزم برسالة 'chore: bump foo'، ادفع، وافتح PR (عبر github MCP).✓ تم النسخ
    → عناوين URL لـ PR لكل مستودع

النتيجة: التغيير عبر المستودع مرسل في محادثة واحدة.

المزالق
  • عاصفة الالتزام — إعادة بناء سيئة تعيش الآن في 10 PRs — اختبر على مستودع واحد أولاً؛ ثم وزع على الباقي فقط
  • يلزم التوقيع / DCO لكن غير موقع — فعّل GIT_SIGN_COMMITS وعيّن GIT_USERNAME/GIT_EMAIL
اجمعها مع: github · filesystem

إنشاء ملاحظات الإصدار من git log بين علامتين

👤 مديرو الإصدار ⏱ ~20 min intermediate

متى تستخدمه: قطع إصدار وتريد كتابة السجل من الالتزامات الفعلية، وليس الذاكرة.

الخطوات
  1. جلب العلامات والاختلاف
    بدّل إلى مستودع ~/code/acme/api. جلب، ثم git_log من العلامة v1.4.0 إلى HEAD. مجموعة حسب نوع conventional-commit.✓ تم النسخ
    → قائمة الالتزام المصنفة
  2. ملاحظات الصيغة
    اكتب ملاحظات الإصدار بصيغة keep-a-changelog، مع تسليط الضوء على التغييرات المخالفة والمساهمين.✓ تم النسخ
    → مسودة سجل Markdown
  3. وسم الإصدار
    أنشئ وسم v1.5.0 برسالة هذه الملاحظات كرسالة الوسم. وقّعها.✓ تم النسخ
    → تم إنشاء وسم موقع

النتيجة: إصدار منشور برسائل دقيقة وقابلة للقراءة.

المزالق
  • رسائل الالتزام سيئة → ملاحظات الإصدار سيئة — فرض conventional commits في CI قبل هذه الخطوة
اجمعها مع: github

إعادة أساس تفاعلية آمنة للفرع (squash + reword)

👤 المطورون الذين لديهم فروع WIP فوضوية ⏱ ~15 min intermediate

متى تستخدمه: لديك 14 التزام على فرع ميزة: 'wip'، 'fix'، 'more fix'، 'actually fix it'. تريد ضغطها في 3 التزامات منطقية قبل فتح PR.

الخطوات
  1. الفحص
    عرض git_log لفرع 'feat/payments' منذ انحرف عن main.✓ تم النسخ
    → قائمة الالتزام
  2. خطة الضغط
    اقترح خطة إعادة كتابة 3-التزام تجميع العمل ذي الصلة. لا تنفذ الآن.✓ تم النسخ
    → خطة مع حدود الالتزام + الرسائل
  3. التنفيذ عبر reset + التزامات جديدة
    نفذ الخطة باستخدام git_reset --soft إلى merge-base، ثم git_add + git_commit في 3 أجزاء منطقية لكل الخطة.✓ تم النسخ
    → سجل خطي 3-التزام

النتيجة: سجل PR قابل للمراجعة.

المزالق
  • مدمرة — force-push تستبدل عمل المتعاونين — افعل هذا فقط على فروع ميزة مفردة؛ لا تفعل أبداً على فروع مشتركة

التركيبات

اجمعها مع خوادم MCP أخرى لتحقيق نتائج x10

git-2 + github

git_commit + git_push + فتح PR في تدفق واحد

التزم بالتغييرات المرحلة برسالة 'X'، ادفع، ثم افتح PR على GitHub استهدف main.✓ تم النسخ
git-2 + filesystem

تحرير الملفات ثم الالتزام ذرياً

حرّر src/index.ts مستبدلاً foo بـ bar، git_add الملف، git_commit.✓ تم النسخ

الأدوات

ما يوفره هذا الـ MCP

الأداةالمدخلاتمتى تستدعيهاالتكلفة
git_status cwd?: str الخطوة الأولى في أي جلسة؛ تحقق من حالة المستودع free
git_log cwd?, range?, max_count? افحص السجل؛ استخدم range للإصدار diffs free
git_diff cwd?, target?, staged?: bool راجع التغييرات قبل الالتزام free
git_add cwd?, paths[] مرحلة ملفات محددة — تجنب . لمنع تسرب الملفات الحساسة free
git_commit cwd?, message, sign?: bool إنشاء التزام؛ مدمّر إلى حد ما، لذا أكد أولاً free
git_branch cwd?, action: list|create|delete|rename, name? إدارة الفروع free
git_worktree cwd?, action: add|list|remove, path?, branch? التلاعب بفروع متعددة بدون تبديل free
git_push cwd?, remote?, branch?, force?: bool نشر الالتزامات؛ force مدمّر — الافتراضي إلى false network
set_working_directory path: str بدّل دليل العمل النشط للمستودع free

التكلفة والحدود

تكلفة التشغيل

حصة API
بلا — كل محلي
الرموز لكل استدعاء
يمكن أن تكون مخرجات git_log/diff ضخمة؛ فاق مع max_count / paths
التكلفة المالية
مجاني، Apache 2.0
نصيحة
استخدم max_count على git_log والمسارات المحددة على git_diff. السجل كامل على مستودع كبير = 50k+ tokens.

الأمان

الصلاحيات والأسرار ونطاق الأثر

الحد الأدنى من الصلاحيات: الوصول إلى نظام الملفات المحلي للمستودعات التي تريد إدارتها
تخزين بيانات الاعتماد: مفاتيح SSH في ~/.ssh؛ عيّن GIT_BASE_DIR لحماية MCP
نقل البيانات الخارجي: git push يرسل إلى remotes المعروضة الخاصة بك
لا تمنح أبدًا: الدفع القسري إلى main/master بدون تأكيد

استكشاف الأخطاء

الأخطاء الشائعة وحلولها

Permission denied (publickey) on push

مفتاح SSH غير متاح لعملية MCP. ابدأ ssh-agent مع تحميل مفتاحك.

تحقق: ssh -T [email protected]
Operation outside base directory rejected

قمت بتعيين GIT_BASE_DIR؛ المسار المطلوب يهرب منه. انقل المستودع إلى دليل الأساس أو وسّعه.

Commit signing fails

مفتاح التوقيع GPG/SSH غير معروض. تحقق من git config --get user.signingkey و gpg --list-secret-keys.

تحقق: git commit -S -m test في المستودع مباشرة
Wrong repo operated on

جلسة cwd غير معيّن. ابدأ دائماً جلسة مع set_working_directory أو مرّر cwd لكل استدعاء.

تحقق: استدعِ git_status واستفحص المسار المعاد

البدائل

git-mcp-server مقابل البدائل

البديلمتى تستخدمهاالمقايضة
Official git MCPتحتاج فقط إلى عمليات git الأساسية وتريد تنفيذ المرجععدد أقل من الأدوات؛ بدون جلسة cwd أو توقيع
GitHub MCPسير العمل الخاص بك موجه نحو PR وموجود على GitHubالعمل على GitHub API، وليس git المحلي؛ متكامل

المزيد

الموارد

📖 اقرأ ملف README الرسمي على GitHub

🐙 تصفح القضايا المفتوحة

🔍 تصفح أكثر من 400 خادم MCP و Skills