/ الدليل / الملعب / SonarQube MCP
● رسمي SonarSource 🔑 يتطلب مفتاحك

SonarQube MCP

بواسطة SonarSource · SonarSource/sonarqube-mcp-server

نتائج التحليل الساكن لـ Sonar بين يدي Claude — أصلح المشكلات ملفاً وقاعدة تلو الأخرى، لا بتصفح لوحة تحكم.

sonarqube-mcp-server هو خادم MCP الرسمي لـ SonarQube و SonarCloud. يكشف المشكلات ونقاط الأمان الساخنة وبوابات الجودة والمقاييس وتاريخ جودة الكود كأدوات MCP. Claude يقرأ المشكلة ويطلع على القاعدة ويكتب إصلاحاً مستنداً إلى توصية القاعدة — لا تخميناً عاماً.

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

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

عرض مباشر

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

sonarqube-mcp.replay ▶ جاهز
0/0

التثبيت

اختر العميل

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

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

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

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

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

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

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "sonarqube-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  }
}

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

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "sonarqube-mcp",
      "command": "docker",
      "args": [
        "run",
        "--init",
        "--pull=always",
        "-i",
        "--rm",
        "-e",
        "SONARQUBE_TOKEN",
        "-e",
        "SONARQUBE_ORG",
        "mcp/sonarqube"
      ]
    }
  ]
}

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

~/.config/zed/settings.json
{
  "context_servers": {
    "sonarqube-mcp": {
      "command": {
        "path": "docker",
        "args": [
          "run",
          "--init",
          "--pull=always",
          "-i",
          "--rm",
          "-e",
          "SONARQUBE_TOKEN",
          "-e",
          "SONARQUBE_ORG",
          "mcp/sonarqube"
        ]
      }
    }
  }
}

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

claude mcp add sonarqube-mcp -- docker run --init --pull=always -i --rm -e SONARQUBE_TOKEN -e SONARQUBE_ORG mcp/sonarqube

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

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

استخدامات عملية: SonarQube MCP

إصلاح جماعي لجميع مشكلات قاعدة واحدة في قاعدة الكود

👤 المطورون الذين يسددون الديون التقنية ⏱ ~45 min intermediate

متى تستخدمه: Sonar علّم 47 حالة لنفس القاعدة وتريد إصلاحها جميعاً في PR واحد.

المتطلبات الأساسية
  • رمز Sonar — User → Security → Generate Token (محدد بمشروع إن أمكن)
  • Docker متاح — إعداد docker قياسي؛ الصورة تُجلب عند التشغيل الأول
الخطوات
  1. تحديد القاعدة
    Use sonarqube-mcp. Top 5 rules by open-issue count in project 'foo'.✓ تم النسخ
    → مفتاح القاعدة + العدد + الخطورة
  2. جلب جميع حالات واحدة منها
    List every open issue for rule java:S2293 (Use Diamond Operator) — file, line, snippet.✓ تم النسخ
    → 47 مشكلة مع file:line والكود المحيط
  3. تطبيق الإصلاح
    For each, apply the rule's recommended fix. Keep changes minimal; don't reformat.✓ تم النسخ
    → 47 تعديلاً صغيراً عبر ~20 ملفاً
  4. إعادة الفحص للتحقق
    After my CI runs the next analysis, recheck the issue count for that rule.✓ تم النسخ
    → العدد يصل إلى صفر

النتيجة: PR واحد مركّز يغلق قاعدة كاملة، بدلاً من 47 commit متفرق.

المزالق
  • الإصلاح التلقائي للقاعدة يكسر الكود المولّد — فلتر حسب المجلد؛ تخطَّ المسارات المولّدة/الاختبارية أو راجعها يدوياً
اجمعها مع: github · filesystem

تصحيح سبب فشل بوابة الجودة في PR

👤 المطور الذي تم حجب PR الخاص به ⏱ ~30 min intermediate

متى تستخدمه: Sonar يفشّل PR الخاص بك ولوحة التحكم ساحقة.

الخطوات
  1. الحصول على حالة البوابة
    Use sonarqube-mcp. Show quality gate status for PR 1234 — which conditions failed?✓ تم النسخ
    → تفصيل البوابة: مثلاً 'New Coverage 67% < 80% threshold'
  2. التعمق في الشرط الفاشل
    For 'New Coverage' below threshold — list new lines added in this PR with no test coverage.✓ تم النسخ
    → قائمة سطور جديدة غير مغطاة لكل ملف
  3. إنشاء الاختبارات
    Write tests covering those uncovered lines.✓ تم النسخ
    → ملفات اختبار جديدة مضافة؛ استعراض ذهني للحالات

النتيجة: PR مفتوح مع اختبارات موجّهة، لا قنبلة تغطية شاملة.

المزالق
  • الاختبارات مكتوبة للتغطية لا للسلوك — اطلب من Claude ذكر ما يؤكده كل اختبار؛ ارفض ما لا يحتوي على تأكيد حقيقي
اجمعها مع: github

مراجعة وحل نقاط الأمان الساخنة

👤 المهندسون المهتمون بالأمان ⏱ ~40 min advanced

متى تستخدمه: تراكمت نقاط ساخنة وتحتاج إلى فرزها كـ 'مراجعة آمنة' أو 'تحتاج إصلاحاً'.

الخطوات
  1. قائمة بالنقاط غير المحسومة
    Use sonarqube-mcp. List all unreviewed security hotspots in project 'foo' grouped by category.✓ تم النسخ
    → نقاط مجمعة حسب الفئة (مثلاً 'Weak Cryptography'، 'Auth')
  2. شرح المخاطر
    For each, summarize the risk in 1 line. Mark which are clearly safe-to-acknowledge vs need-fix.✓ تم النسخ
    → قائمة فرز مُشروحة
  3. الإصلاح أو الإقرار
    For need-fix ones, apply the rule's safe pattern. For safe ones, give me the comment to leave on the hotspot review.✓ تم النسخ
    → الإصلاحات مطبقة + تعليقات المراجعة مسودة

النتيجة: نقاط ساخنة مُصفّاة مع مسار مراجعة، لا يتم تجاهلها بصمت.

المزالق
  • وسم الأشياء كـ 'آمنة' دون تفكير — اطلب من Claude الاستشهاد *بسبب* الأمان في التعليق — هذا يُنشئ مساراً قابلاً للمراجعة
اجمعها مع: github

التركيبات

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

sonarqube-mcp + github

إضافة تعليقات Sonar على PRs أو إنشاء مشكلات تلقائياً للمخالفات الجديدة

On every PR, comment Sonar's gate result and any new issues it added.✓ تم النسخ
sonarqube-mcp + filesystem

تطبيق إصلاحات القواعد محلياً والالتزام بها

Fix all java:S2293 instances; write the diffs locally for review before commit.✓ تم النسخ

الأدوات

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

الأداةالمدخلاتمتى تستدعيهاالتكلفة
search_issues project, rules?, severities?, types?, branch? تصفية المشكلات حسب القاعدة/الخطورة/النوع 1 SonarQube API call
get_rule rule_key قراءة الإرشادات الرسمية قبل الإصلاح 1 API call
get_quality_gate project, branch_or_pr تشخيص إخفاقات بوابة PR/الفرع 1 API call
search_hotspots project, status? مراجعة الأمان 1 API call
get_metrics project, metric_keys[] فحوصات الاتجاه/الانجراف (التغطية، التكرارات) 1 API call

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

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

حصة API
حد معدل API لـ Sonar يختلف حسب الإصدار — كن محافظاً في حلقات الجمع
الرموز لكل استدعاء
المشكلات تأتي في صفحات من 100؛ كل مشكلة ~200 رمز
التكلفة المالية
مجاني للمشاريع العامة على SonarCloud؛ ترخيص Enterprise لـ SonarQube
نصيحة
فلتر بشدة في search_issues — التصفح عبر كل شيء مُضيّع

الأمان

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

الحد الأدنى من الصلاحيات: Browse See Source Code
تخزين بيانات الاعتماد: متغير بيئة SONARQUBE_TOKEN، محدد بمشروع
نقل البيانات الخارجي: إلى مثيل Sonar الخاص بك (sonarcloud.io أو self-hosted)
لا تمنح أبدًا: صلاحيات Administer لعامل مُشغَّل بالمحادثة

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

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

401 Unauthorized

أعد توليد الرمز؛ تحقق أن الرمز ليس نطاق مستخدم فقط حين يُحتاج نطاق مشروع

تحقق: curl -u $SONARQUBE_TOKEN: $SONAR_HOST/api/projects/search
منظمة خاطئة

متغير SONARQUBE_ORG يجب أن يطابق slug منظمة Sonar تماماً (أحرف صغيرة)

حاوية Docker لا تصل إلى SonarQube self-hosted

مرّر --network host أو اكشف SonarQube على hostname يمكن الوصول إليه؛ اضبط SONAR_HOST_URL داخل الحاوية

تحقق: docker run ... curl $SONAR_HOST_URL/api/system/status
قائمة المشكلات تبدو قديمة

Sonar يعكس آخر تحليل مكتمل — أعد تشغيل التحليل أو تحقق من طابع وقت آخر تحليل للمشروع

البدائل

SonarQube MCP مقابل البدائل

البديلمتى تستخدمهاالمقايضة
CodeQL via GitHub MCPأنت على GitHub Advanced Security وتريد النتائج في نفس السطحمجموعة قواعد مختلفة؛ لا مفهوم بوابة الجودة
Semgrep MCPتريد فحصاً قائماً على الأنماط خفيف الوزن دون بنية تحتية لـ Sonarتغطية أقل لأكواد smells / مقاييس صيانة

المزيد

الموارد

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

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

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