سرورهای MCP

سرورهای MCP

معرفی

می‌توانید ابزارهای خارجی را با استفاده از پروتکل Context Model (MCP) به AshaCode اضافه کنید. AshaCode هم از سرورهای محلی و هم از سرورهای راه‌دور پشتیبانی می‌کند.

پس از افزودن، ابزارهای MCP به‌صورت خودکار در کنار ابزارهای داخلی در اختیار مدل زبانی قرار می‌گیرند.

استفاده از یک سرور MCP به زمینه (context) اضافه می‌کند و اگر ابزار زیادی داشته باشید سریع جمع می‌شود؛ بنابراین توصیه می‌کنیم در انتخاب سرورهای MCP دقت کنید. برخی سرورها مانند GitHub MCP معمولاً توکن زیادی مصرف می‌کنند و ممکن است به‌سادگی از حد مجاز زمینه عبور کنند.

فعال‌سازی (Enable)

سرورهای MCP را در Config مربوط به AshaCode زیر کلید mcp تعریف می‌کنید. هر MCP با یک نام یکتا اضافه می‌شود و هنگام درخواست از مدل می‌توانید به‌همان نام ارجاع دهید:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "name-of-mcp-server": {
      // ...
      "enabled": true
    },
    "name-of-other-mcp-server": {
      // ...
    }
  }
}

همچنین می‌توانید با قرار دادن enabled روی false یک سرور را غیرفعال کنید؛ این کار برای تعطیلی موقت بدون حذف آن از Config مفید است.

بازنویسی پیش‌فرض‌های راه‌دور

سازمان‌ها می‌توانند سرورهای MCP پیش‌فرض را از طریق نقطه پایانی .well-known/ashacode فراهم کنند. این سرورها ممکن است به‌طور پیش‌فرض غیرفعال باشند تا کاربران فقط سرورهای مورد نیاز خود را فعال کنند.

برای فعال‌سازی یک سرور مشخص از Config راه‌دور سازمان، آن را با enabled: true به Config محلی خود اضافه کنید:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "jira": {
      "type": "remote",
      "url": "https://jira.example.com/mcp",
      "enabled": true
    }
  }
}

مقادیر Config محلی، پیش‌فرض‌های راه‌دور را نادیده می‌گیرند. جزئیات بیشتر در اولویت ادغام Config.

سرور محلی (Local)

برای افزودن سرور محلی، داخل شیء mcp مقدار type را روی "local" قرار دهید:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "my-local-mcp-server": {
      "type": "local",
      // Or ["bun", "x", "my-mcp-command"]
      "command": ["npx", "-y", "my-mcp-command"],
      "enabled": true,
      "environment": {
        "MY_ENV_VAR": "my_env_var_value"
      }
    }
  }
}

command نحوه راه‌اندازی سرور محلی است. همچنین می‌توانید فهرستی از متغیرهای محیطی را پاس دهید.

برای مثال، سرور تست @modelcontextprotocol/server-everything را این‌گونه اضافه کنید:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "mcp_everything": {
      "type": "local",
      "command": ["npx", "-y", "@modelcontextprotocol/server-everything"]
    }
  }
}

برای استفاده از آن، در پرامپت خود به ابزار mcp_everything ارجاع دهید:

use the mcp_everything tool to add the number 3 and 4

گزینه‌های سرور محلی

همه گزینه‌های پیکربندی یک سرور MCP محلی:

گزینهنوعضروریتوضیح
typeStringبلهنوع اتصال سرور MCP؛ باید «local» باشد.
commandArrayبلهفرمان و آرگومان‌های اجرای سرور MCP.
cwdStringدایرکتوری کاری فرایند سرور MCP. مسیرهای نسبی از workspace حل می‌شوند.
environmentObjectمتغیرهای محیطی هنگام اجرای سرور.
enabledBooleanفعال یا غیرفعال کردن سرور MCP هنگام راه‌اندازی.
timeoutNumberمهلت (ms) دریافت ابزارها از سرور MCP. پیش‌فرض 5000 (۵ ثانیه).

سرور راه‌دور (Remote)

برای افزودن سرور راه‌دور، مقدار type را روی "remote" قرار دهید:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "my-remote-mcp": {
      "type": "remote",
      "url": "https://my-mcp-server.com",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer MY_API_KEY"
      }
    }
  }
}

url نشانی سرور MCP راه‌دور است و با گزینه headers می‌توانید فهرستی از هدرها را پاس دهید.

گزینه‌های سرور راه‌دور

گزینهنوعضروریتوضیح
typeStringبلهنوع اتصال سرور MCP؛ باید «remote» باشد.
urlStringبلهنشانی سرور MCP راه‌دور.
enabledBooleanفعال یا غیرفعال کردن سرور MCP هنگام راه‌اندازی.
headersObjectهدرهای ارسالی با درخواست.
oauthObjectپیکربندی احراز هویت OAuth. بخش OAuth را ببینید.
timeoutNumberمهلت (ms) دریافت ابزارها از سرور MCP. پیش‌فرض 5000 (۵ ثانیه).

OAuth

AshaCode به‌صورت خودکار احراز هویت OAuth را برای سرورهای MCP راه‌دور مدیریت می‌کند. وقتی سروری نیاز به احراز هویت دارد، AshaCode این کارها را انجام می‌دهد:

  • پاسخ 401 را تشخیص می‌دهد و جریان OAuth را شروع می‌کند
  • در صورت پشتیبانی سرور از Dynamic Client Registration (RFC 7591) استفاده می‌کند
  • توکن‌ها را به‌طور امن برای درخواست‌های بعدی ذخیره می‌کند

خودکار

برای اکثر سرورهای MCP دارای OAuth نیازی به پیکربندی خاصی نیست؛ فقط سرور راه‌دور را تنظیم کنید:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "my-oauth-server": {
      "type": "remote",
      "url": "https://mcp.example.com/mcp"
    }
  }
}

اگر سرور نیاز به احراز هویت داشته باشد، هنگام اولین استفاده از AshaCode درخواست احراز هویت می‌شود. در غیر این صورت می‌توانید جریان را به‌صورت دستی با ashacode mcp auth <server-name> فعال کنید.

از پیش ثبت‌شده

اگر اعتبارنامه کلاینت از فراهم‌کننده سرور MCP دارید، می‌توانید آن‌ها را پیکربندی کنید:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "my-oauth-server": {
      "type": "remote",
      "url": "https://mcp.example.com/mcp",
      "oauth": {
        "clientId": "{env:MY_MCP_CLIENT_ID}",
        "clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
        "scope": "tools:read tools:execute"
      }
    }
  }
}

احراز هویت

می‌توانید جریان احراز هویت را دستی فعال کرده یا اعتبارنامه‌ها را مدیریت کنید:

# احراز هویت با یک سرور MCP مشخص
ashacode mcp auth my-oauth-server

# فهرست همه سرورهای MCP و وضعیت احراز هویت آن‌ها
ashacode mcp list

# حذف اعتبارنامه‌های ذخیره‌شده
ashacode mcp logout my-oauth-server

دستور mcp auth مرورگر شما را برای مجوز باز می‌کند. پس از تأیید، AshaCode توکن‌ها را به‌طور امن در ~/.local/share/ashacode/mcp-auth.json ذخیره می‌کند.

غیرفعال کردن OAuth

اگر می‌خواهید OAuth خودکار برای یک سرور غیرفعال شود (مثلاً سرورهایی که از کلید API استفاده می‌کنند)، oauth را روی false قرار دهید:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "my-api-key-server": {
      "type": "remote",
      "url": "https://mcp.example.com/mcp",
      "oauth": false,
      "headers": {
        "Authorization": "Bearer {env:MY_API_KEY}"
      }
    }
  }
}

گزینه‌های OAuth

گزینهنوعتوضیح
oauthObject | falseشیء پیکربندی OAuth، یا false برای غیرفعال کردن تشخیص خودکار OAuth.
clientIdStringشناسه کلاینت OAuth. اگر ارائه نشود، ثبت پویای کلاینت انجام می‌شود.
clientSecretStringرمز کلاینت OAuth، در صورت نیاز سرور مجوز.
scopeStringحوزه‌های OAuth درخواستی در طول مجوز.

رفع اشکال

اگر سرور MCP راه‌دور در احراز هویت موفق نیست، می‌توانید مسائل را این‌گونه بررسی کنید:

# نمایش وضعیت احراز هویت همه سرورهای دارای OAuth
ashacode mcp auth list

# بررسی اتصال و جریان OAuth برای یک سرور مشخص
ashacode mcp debug my-oauth-server

دستور mcp debug وضعیت احراز هویت فعلی را نشان می‌دهد، اتصال HTTP را آزمایش می‌کند و جریان کشف OAuth را اجرا می‌کند.

مدیریت (Manage)

سرورهای MCP شما همانند ابزارهای داخلی به‌عنوان ابزار در دسترس AshaCode هستند، بنابراین می‌توانید آن‌ها را از طریق Config مربوط به AshaCode مانند هر ابزار دیگری مدیریت کنید.

سراسری

یعنی می‌توانید آن‌ها را به‌صورت سراسری فعال یا غیرفعال کنید:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "my-mcp-foo": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-foo"]
    },
    "my-mcp-bar": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-bar"]
    }
  },
  "tools": {
    "my-mcp-foo": false
  }
}

همچنین می‌توانیم با الگوی glob همه MCPهای منطبق را غیرفعال کنیم:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "my-mcp-foo": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-foo"]
    },
    "my-mcp-bar": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command-bar"]
    }
  },
  "tools": {
    "my-mcp*": false
  }
}

در اینجا با الگوی my-mcp* همه MCPها غیرفعال شده‌اند.

به‌ازای ایجنت

اگر تعداد سرورهای MCP زیادی دارید، شاید بخواهید فقط برای ایجنت‌های مشخص آن‌ها را فعال کنید و به‌صورت سراسری غیرفعال نگه دارید:

  • به‌صورت سراسری، آن را به‌عنوان ابزار غیرفعال کنید.
  • در Config ایجنت، MCP را به‌عنوان ابزار فعال کنید.
{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "my-mcp": {
      "type": "local",
      "command": ["bun", "x", "my-mcp-command"],
      "enabled": true
    }
  },
  "tools": {
    "my-mcp*": false
  },
  "agent": {
    "my-agent": {
      "tools": {
        "my-mcp*": true
      }
    }
  }
}

الگوهای Glob

الگوی glob از الگوهای ساده شبه‌عبارت منظم استفاده می‌کند:

  • * صفر یا بیشتر از هر کاراکتر را تطبیق می‌دهد (مثلاً "my-mcp*" با my-mcp_search، my-mcp_list و … منطبق می‌شود)
  • ? دقیقاً یک کاراکتر را تطبیق می‌دهد
  • بقیه کاراکترها به‌صورت تحت‌اللفظی تطبیق داده می‌شوند
ابزارهای سرور MCP با نام سرور به‌عنوان پیشوند ثبت می‌شوند؛ بنابراین برای غیرفعال کردن همه ابزارهای یک سرور کافی است از "mymcpservername_*": false استفاده کنید.

نمونه‌ها

در ادامه چند نمونه از سرورهای MCP شناخته‌شده آمده است.

Sentry

سرور MCP سِنتِری را برای تعامل با پروژه‌ها و مسائل (issues) Sentry اضافه کنید:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "sentry": {
      "type": "remote",
      "url": "https://mcp.sentry.dev/mcp",
      "oauth": {}
    }
  }
}

پس از افزودن پیکربندی، با Sentry احراز هویت کنید:

ashacode mcp auth sentry

این کار پنجره مرورگر را برای تکمیل جریان OAuth باز می‌کند و AshaCode را به حساب Sentry شما متصل می‌کند. پس از احراز هویت می‌توانید ابزارهای Sentry را در پرامپت‌ها برای پرس‌وجوی issues، پروژه‌ها و داده‌های خطا استفاده کنید:

Show me the latest unresolved issues in my project. use sentry

Context7

سرور MCP Context7 را برای جستجو در مستندات اضافه کنید:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp"
    }
  }
}

اگر حساب رایگان ساخته‌اید، می‌توانید از کلید API خود استفاده کنید و محدودیت نرخ بالاتری بگیرید:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp",
      "headers": {
        "CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
      }
    }
  }
}

در اینجا فرض می‌کنیم متغیر محیطی CONTEXT7_API_KEY تنظیم شده است. برای استفاده از سرور MCP Context7 در پرامپت‌ها، use context7 را اضافه کنید:

Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7

یا می‌توانید چیزی شبیه این را در AGENTS.md خود اضافه کنید:

When you need to search docs, use `context7` tools.

Grep by Vercel

سرور MCP Grep by Vercel را برای جستجوی قطعه‌کدها در GitHub اضافه کنید:

{
  "$schema": "https://asha-ai.ir/schema.json",
  "mcp": {
    "gh_grep": {
      "type": "remote",
      "url": "https://mcp.grep.app"
    }
  }
}

از آنجا که سرور MCP را gh_grep نامیده‌ایم، در پرامپت‌های خود به‌آن ارجاع دهید:

What’s the right way to set a custom domain in an SST Astro component? use the gh_grep tool

یا چیزی شبیه این را در AGENTS.md خود اضافه کنید:

If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.