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

mcp-language-server

بواسطة isaacphi · isaacphi/mcp-language-server

امنح وكيلك دلالات LSP حقيقية — الانتقال إلى التعريف والمراجع وإعادة التسمية والتشخيصات — عبر أي خادم لغة stdio.

isaacphi/mcp-language-server هو برنامج Go ينقل البيانات بين MCP وأي LSP stdio (gopls و rust-analyzer و pyright و typescript-language-server و clangd). يحصل الوكلاء على عمليات دقيقة على المستوى الرمزي بدلاً من تقريبات البحث النصي.

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

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

عرض مباشر

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

language-server.replay ▶ جاهز
0/0

التثبيت

اختر العميل

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "language-server": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/isaacphi/mcp-language-server"
      ],
      "_inferred": true
    }
  }
}

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

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "language-server": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/isaacphi/mcp-language-server"
      ],
      "_inferred": true
    }
  }
}

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

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "language-server": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/isaacphi/mcp-language-server"
      ],
      "_inferred": true
    }
  }
}

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

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "language-server": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/isaacphi/mcp-language-server"
      ],
      "_inferred": true
    }
  }
}

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

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "language-server",
      "command": "TODO",
      "args": [
        "See README: https://github.com/isaacphi/mcp-language-server"
      ]
    }
  ]
}

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

~/.config/zed/settings.json
{
  "context_servers": {
    "language-server": {
      "command": {
        "path": "TODO",
        "args": [
          "See README: https://github.com/isaacphi/mcp-language-server"
        ]
      }
    }
  }
}

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

claude mcp add language-server -- TODO 'See README: https://github.com/isaacphi/mcp-language-server'

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

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

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

كيفية إعادة تسمية رمز بأمان عبر مستودع

👤 المطورون متعددو اللغات الذين يستخدمون الوكلاء ⏱ ~15 min intermediate

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

المتطلبات الأساسية
  • Go مثبتة — brew install go
  • LSP للغتك — gopls: go install golang.org/x/tools/gopls@latest؛ pyright: pip install pyright؛ إلخ.
  • ثبت MCP — go install github.com/isaacphi/mcp-language-server@latest
الخطوات
  1. ابدأ MCP موجهاً إلى مساحة عملك + LSP
    أضف تكوين MCP: command=mcp-language-server, args=['--workspace','.','--lsp','gopls'].✓ تم النسخ
    → تظهر الأدوات
  2. ابحث عن المراجع أولاً
    مراجع للرمز 'LegacyAuth' في الملف auth.go.✓ تم النسخ
    → مراجع دقيقة عبر المستودعات
  3. أعد تسمية
    أعد تسمية 'LegacyAuth' -> 'Auth' في موقع التعريف.✓ تم النسخ
    → تم تحديث جميع مواقع الاستدعاء بشكل صحيح

النتيجة: إعادة تسمية دقيقة من الناحية الدلالية عبر المستودع.

المزالق
  • يعود الوكيل إلى البحث النصي والاستبدال عندما تفشل الأداة — تحقق من التشخيصات بعد إعادة التسمية — أخطاء الترجمة تعني أن LSP رفضت والوكيل احتال
اجمعها مع: github

كيفية السماح للوكيل بالملاحة كما تفعل في بيئة التطوير

👤 مستخدمو الوكيل المرهقون من البحث المتكرر ⏱ ~10 min beginner

متى تستخدمه: يستمر الوكيل في قراءة الملفات بكاملها للعثور على وظيفة واحدة.

الخطوات
  1. استعلم عن التعريف
    التعريف الخاص بـ 'computeTax' في src/billing.ts.✓ تم النسخ
    → موقع ملف:سطر دقيق
  2. اسحب التشخيصات
    التشخيصات للملف الحالي.✓ تم النسخ
    → الخطوط المتعرجة الحمراء من LSP

النتيجة: يملاح الوكيل مثل مستخدم بيئة التطوير.

المزالق
  • LSP لم يتم تهيئته — البداية بطيئة — احم بقائمة الملفات في مساحة العمل؛ pyright خاصة بطيء في الفهرسة
اجمعها مع: contextplus

كيفية تشغيل عدة LSPs لمستودع أحادي متعدد اللغات

👤 المطورون الذين يعملون على مستودعات أحادية Go+TS+Python ⏱ ~25 min advanced

متى تستخدمه: تريد عمليات دلالية في كل لغة.

الخطوات
  1. سجل MCP واحد لكل LSP
    أضف 3 مدخلات MCP: lsp-go (gopls) و lsp-ts (tsserver) و lsp-py (pyright)، كل واحد محدود النطاق إلى مجلده الفرعي في مساحة العمل.✓ تم النسخ
    → 3 مجموعات من الأدوات الخاصة باللغة
  2. استخدمها بالتناوب
    بالنسبة لأسئلة TypeScript استخدم lsp-ts:definition؛ بالنسبة لـ Go استخدم lsp-go:definition.✓ تم النسخ
    → الدلالات الصحيحة لكل لغة

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

المزالق
  • ينسى الوكيل أي MCP يتعامل مع أي لغة — أعد تسمية بادئات الأدوات بشكل وصفي وذكرها في ذاكرة المشروع

التركيبات

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

language-server + contextplus

دمج ملاحة LSP مع البحث الدلالي/التضميني للاستعلامات الأوسع

استخدم مراجع خادم اللغة للاستخدامات الدقيقة لـ computeTax، ثم البحث الدلالي contextplus للعثور على الوظائف ذات الصلة المفاهيمية.✓ تم النسخ
language-server + github

إعادة تسمية + التزام + طلب دمج

أعد تسمية LegacyAuth إلى Auth عبر LSP وأرسل إلى فرع جديد وافتح PR.✓ تم النسخ

الأدوات

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

الأداةالمدخلاتمتى تستدعيهاالتكلفة
definition file: str, symbol_or_position انتقل إلى الإعلان free (local LSP)
references file: str, symbol_or_position ابحث عن الاستخدامات free
diagnostics file: str تحقق من الأخطاء والتحذيرات free
hover file, position معلومات النوع / الوثائق الخاصة برمز free
rename_symbol file, position, new_name إعادة تسمية آمنة free
edit_file file, edits تعديل معتمد من LSP free

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

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

حصة API
لا توجد — LSP محلي
الرموز لكل استدعاء
صغير — استجابات LSP مضغوطة
التكلفة المالية
مجاني
نصيحة
استخدم الأدوات المدعومة بـ LSP قبل البحث التضميني — غالباً أرخص وأكثر دقة.

الأمان

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

الحد الأدنى من الصلاحيات: قراءة/كتابة نظام الملفات إلى مساحة العمل
تخزين بيانات الاعتماد: لا شيء
نقل البيانات الخارجي: Localhost فقط؛ LSP يعمل في العملية
لا تمنح أبدًا: لا تشر إليها بمساحات عمل بها أسرار — تفهرس LSPs بعضها أحياناً

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

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

tool returns 'LSP not ready'

الاستدعاء الأول يؤدي إلى التهيئة — أعد المحاولة بعد 2-5 ثوانٍ أو احم باستدعاء hover.

gopls: 'no packages found'

وجه مساحة العمل إلى جذر الوحدة (حيث يوجد go.mod) وليس إلى مجلد فرعي.

تحقق: go env GOMOD
pyright slow on big repos

قم بتكوين pyrightconfig.json لاستبعاد المجلدات المبيعة.

rename_symbol reports success but compile still fails

أعادت التسمية اللمس إلى قيمة حرفية أو كود قائم على الانعكاس لا يمكن لـ LSP رؤيته. تحقق من grep للاسم القديم.

البدائل

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

البديلمتى تستخدمهاالمقايضة
Context+تريد تضمين + رسم بياني للذاكرة بدلاً من دلالات LSPليس دقيقاً مثل إعادة التسمية/المراجع
Serena MCPتريد LSP مع إعادة هيكلة على مستوى أعلىإعداد مختلف؛ قائم على Python

المزيد

الموارد

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

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

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