/ الدليل / الملعب / Git
● رسمي modelcontextprotocol ⚡ فوري

Git

بواسطة modelcontextprotocol · modelcontextprotocol/servers

وجّه الوكيل نحو مستودع محلي واتركه يقرأ الحالة والسجل والفروقات والمسؤول — بدون الحاجة لإمكانية الوصول إلى shell.

خادم git رسمي من modelcontextprotocol. قراءة وكتابة git محلية: الحالة والسجل والفروقات (staged/unstaged/commit-range) والعرض والمسؤول المبسط عبر show، بالإضافة إلى commit/add/branch/checkout لسير العمل القابل للكتابة. محدود بمسار واحد --repository — أكثر أماناً من إعطاء الوكيل shell خام.

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

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

عرض مباشر

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

git.replay ▶ جاهز
0/0

التثبيت

اختر العميل

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "git": {
      "command": "uvx",
      "args": [
        "mcp-server-git",
        "--repository",
        "/repo"
      ]
    }
  }
}

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

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "git": {
      "command": "uvx",
      "args": [
        "mcp-server-git",
        "--repository",
        "/repo"
      ]
    }
  }
}

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

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "git": {
      "command": "uvx",
      "args": [
        "mcp-server-git",
        "--repository",
        "/repo"
      ]
    }
  }
}

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

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "git": {
      "command": "uvx",
      "args": [
        "mcp-server-git",
        "--repository",
        "/repo"
      ]
    }
  }
}

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

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "git",
      "command": "uvx",
      "args": [
        "mcp-server-git",
        "--repository",
        "/repo"
      ]
    }
  ]
}

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

~/.config/zed/settings.json
{
  "context_servers": {
    "git": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-server-git",
          "--repository",
          "/repo"
        ]
      }
    }
  }
}

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

claude mcp add git -- uvx mcp-server-git --repository /repo

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

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

استخدامات عملية: Git

اطلب من الوكيل مراجعة التغييرات المرحلة قبل الالتزام

👤 المطورون المنفردون، أي شخص ينشر بدون مراجعة رمز ⏱ ~3 min beginner

متى تستخدمه: على وشك الالتزام. تريد رأياً ثانياً لاكتشاف أي رائحة واضحة قبل أن يصل الالتزام.

المتطلبات الأساسية
  • مستودع محلي بتغييرات مرحلةgit add -p كالمعتاد، ثم اطلب من الوكيل
الخطوات
  1. اقرأ الفروقات المرحلة
    أظهر لي تغييراتي المرحلة. علّم أي شيء يبدو مثل: سجلات التصحيح أو رمز معلق أو أسرار مرمزة مباشرة أو تغييرات غير ذات صلة بهدف الالتزام المذكور '<GOAL>'.✓ تم النسخ
    → علامات ملف:سطر محددة
  2. اقترح رسالة التزام
    اكتب رسالة التزام تتبع conventional commits. السطر الأول أقل من 60 حرف، والجسم يشرح السبب وليس ماذا.✓ تم النسخ
    → رسالة قابلة للنسخ
  3. تأكيد النطاق
    بناءً على الفروقات، هل هذا الالتزام صغير بشكل مناسب؟ اقترح التقسيمات إذا لمس عدة مجالات.✓ تم النسخ
    → قرار المتابعة أو التوقف مع التسبيب

النتيجة: التزام أنظف بمتابعات 'عذراً' أقل.

المزالق
  • الوكيل يفتقد الأسرار لأنها لا تبدو بوضوح مثل الأسرار — لا تعتمد على هذا كماسح أسرار — شغّل gitleaks أو trufflehog في خطاف pre-commit الخاص بك كالدفاع الحقيقي
  • طلب رسالة التزام يميل الوكيل نحو الموافقة على الفروقات — قم دائماً بخطوة المراجعة قبل طلب رسالة — الترتيب مهم
اجمعها مع: github

اكتشف متى ولماذا انقطع سطر معين

👤 المهندسون الذين يصححون التراجع ⏱ ~15 min intermediate

متى تستخدمه: اختبار بدأ في الفشل وتحتاج إلى معرفة أي التزام قدّم الخطأ.

الخطوات
  1. ضيّق سجل الملف المريب
    أظهر git log لـ src/checkout/Cart.tsx محدود بآخر 20 التزام. تضمين المؤلف والرسالة القصيرة.✓ تم النسخ
    → سجل مضغوط مع SHAs
  2. اعرض الفروقات للالتزامات المريبة
    بالنسبة للـ 3 التزامات التي لمست دالة calculateTotal، أظهر الفروقات. ركز على تغييرات الرياضيات/المنطق، تجاهل الأسلوب.✓ تم النسخ
    → مقاطع الفروقات لكل التزام
  3. صيغ فرضية تراجع
    أي التزام على الأرجح قدّم خطأ off-by-one أو التقريب؟ أشر إلى السطر الدقيق واشرح منطقك.✓ تم النسخ
    → SHA + سطر محددين مع التسبيب

النتيجة: فرضية دقيقة على مستوى الالتزام يمكنك تأكيدها باستخدام git revert + إعادة تشغيل الاختبارات.

المزالق
  • السجل الغني بإعادة التسمية يفقد المسار عند إعادة التسمية — استخدم عقلية git log --follow — اطلب من الوكيل تضمين الالتزام الذي أعاد تسمية الملف والنظر إلى مسار ما قبل إعادة التسمية لهذا الالتزام
اجمعها مع: github

اسرد وصنف الفروع المحلية القديمة

👤 أي شخص ناتج `git branch` الخاص به طويل ⏱ ~10 min beginner

متى تستخدمه: تنظيف ربع سنوي — الكثير من الفروع، غير واضح أيها آمن للحذف.

الخطوات
  1. اسرد جميع الفروع المحلية
    اسرد كل فرع محلي مع تاريخ آخر التزام والرسالة.✓ تم النسخ
    → جدول الفروع
  2. صنّف كلاً منها
    صنّف: 'merged' (سلف من main)، 'stale' (بدون التزام في 60+ يوم)، 'active' (التزام في آخر 30 يوم). علّم أي شيء يبدو مثل تجارب مهجورة.✓ تم النسخ
    → قائمة مصنفة
  3. اقترح الحذف
    أعطني أمر git branch -d لكل شيء آمن للحذف. علّم أي شيء يحتاج -D (فرض) واشرح السبب.✓ تم النسخ
    → أوامر تنظيف قابلة للنسخ

النتيجة: قائمة فروع مقصوصة بثقة بأنك لا تسقط عملاً.

المزالق
  • الوكيل يقترح -D للفروع التي تحتوي فعلاً على التزامات فريدة ليست على main — تفقد دائماً قائمة الحذف القسري يدوياً — استعادة git reflog واحدة رخيصة لكنها مزعجة

التركيبات

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

git + github

مراجعة git محلية قبل الدفع، ثم افتح PR بنفس السياق

راجع تغييراتي المرحلة. إذا بدت جيدة، التزم برسالة وصفية، ادفع الفرع، وافتح PR على GitHub.✓ تم النسخ

تغييرات الرمز + سجل git في حلقة تفكير واحدة

اقرأ src/auth/login.ts وآخر 5 التزامات التي لمستها. اشرح لماذا تمت إضافة منطق الإعادة.✓ تم النسخ

الأدوات

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

الأداةالمدخلاتمتى تستدعيهاالتكلفة
git_status repo_path أول استدعاء في أي جلسة — افهم ما هو مرتبك free
git_diff_unstaged repo_path, context_lines? راجع التغييرات غير المرحلة قبل git add free
git_diff_staged repo_path, context_lines? راجع ما سيتم الالتزام به free
git_diff repo_path, target, context_lines? قارن الفرع الحالي بالهدف (مثل main أو HEAD~5) free
git_log repo_path, max_count?, start_timestamp?, end_timestamp? تصفح السجل — تزاوج مع max_count لتحديد استخدام الرموز free
git_show repo_path, revision افحص التزام محدد free
git_commit repo_path, message أنشئ التزام من التغييرات المرحلة — عطّل للإعدادات read-only free
git_add repo_path, files: string[] مرحّل ملفات محددة — فضّل على git_add . لسلامة الوكيل free
git_reset repo_path إلغاء مراحلة كل شيء — خطير، تجاهل عادة free
git_create_branch repo_path, branch_name, base_branch? ابدأ فرعاً جديداً لمهمة free
git_checkout repo_path, branch_name بدّل الفروع free
git_branch repo_path, branch_type, contains?, not_contains? اسرد الفروع، صفّ حسب احتواء على التزام free

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

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

حصة API
لا شيء — كل شيء محلي
الرموز لكل استدعاء
200–5000 لكل فروقات حسب الحجم
التكلفة المالية
مجاني
نصيحة
الفروقات الكبيرة تزيد تكاليف الرموز بسرعة. استخدم context_lines: 1 أو صفّ حسب المسار في موجهك قبل طلب من الوكيل قراءة كل شيء.

الأمان

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

تخزين بيانات الاعتماد: لا شيء — لا بيانات اعتماد
نقل البيانات الخارجي: لا شيء — الخادم 100% محلي، لا استدعاءات شبكة

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

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

fatal: not a git repository

مسار --repository لا يشير إلى مستودع git. تحقق مع ls <path>/.git — يجب أن يكون الدليل موجود.

تحقق: ls <repo_path>/.git/HEAD
Empty diff output despite uncommitted changes

تحقق من المرحلة مقابل غير المرحلة — git_diff_unstaged و git_diff_staged أدوات منفصلة. استخدم git_status أولاً لترى ما هو حيث.

git_commit fails with 'Please tell me who you are'

اضبط إعداد git في المستودع: git config user.email ... و git config user.name .... يستخدم MCP إعداد git الموجود لديك.

تحقق: git config --get user.email
Huge diff burns tokens

مرّر context_lines: 0 أو 1، أو اطلب من الوكيل تلخيص ملف تلو الآخر أولاً قبل قراءة الفروقات الكاملة.

البدائل

Git مقابل البدائل

البديلمتى تستخدمهاالمقايضة
GitHub MCPتريد السجل البعيد (PRs والتعليقات والإجراءات) وليس فقط المحلييحتاج PAT ويقوم باستدعاءات شبكة؛ أقوى لكن سطح أكبر
filesystem MCP + shellتحتاج عمليات خارج نطاق git (grep و find وأوامر البناء)نطاق تأثير أوسع بكثير — التزم بـ git MCP إذا كانت git هي كل ما تحتاجه

المزيد

الموارد

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

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

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