# سرورهای MCP

MCP (Model Context Protocol) یک استاندارد باز از Anthropic است که به Claude Code امکان اتصال به ابزارها، پایگاه‌های داده، APIها و سرویس‌های خارجی را می‌دهد. با MCP می‌توانید توانمندی‌های Claude Code را به‌طور چشمگیری افزایش دهید.

## MCP چیست؟

### مفاهیم اصلی

MCP یک **پروتکل باز** است که استانداردهای ارتباط میان دستیارهای هوش مصنوعی و سامانه‌های خارجی را تعریف می‌کند. این پروتکل از سه جزء اصلی تشکیل شده است:

| جزء | توضیح | نمونه‌ها |
|-----------|-------------|----------|
| **ابزارها** | کنش‌های اجرایی | کوئری گرفتن از پایگاه داده، ارسال درخواست، دستکاری فایل‌ها |
| **منابع** | داده‌های خواندنی | محتوای فایل، پاسخ‌های API، رکوردهای پایگاه داده |
| **promptها** | قالب‌های از پیش تعریف‌شده وظایف | قالب‌های بازبینی کد، قالب‌های تولید گزارش |

### چرا MCP؟

- **توانمندی‌های گسترده**: به Claude اجازه می‌دهد به سامانه‌هایی دسترسی داشته باشد که در غیر این صورت نمی‌توانست به آن‌ها برسد

- **داده‌های لحظه‌ای**: دریافت آخرین مستندات، محتوای پایگاه داده، داده‌های API

- **خودکارسازی**: اجرای استقرارها، ارسال اعلان‌ها، مدیریت منابع

- **حریم خصوصی**: پردازش داده‌ها به‌صورت محلی، بدون نیاز به بارگذاری در ابر

## شروع سریع

### بررسی وضعیت MCP

```
> /mcp
```

وضعیت سرورهای MCP پیکربندی‌شده را نشان می‌دهد.

### افزودن سرور MCP

از دستور `claude mcp add` استفاده کنید:

```bash
# Add filesystem server
claude mcp add filesystem npx -y @modelcontextprotocol/server-filesystem /path/to/directory

# Add SQLite database server
claude mcp add sqlite npx -y mcp-server-sqlite ./database.db

# Add custom server
claude mcp add my-server node /path/to/server.js
```

### فایل پیکربندی

همچنین می‌توانید فایلی با نام `.mcp.json` در ریشه پروژه خود بسازید:

```json
{
  "filesystem": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"]
  },
  "database": {
    "command": "npx",
    "args": ["-y", "mcp-server-sqlite", "./data.db"]
  }
}
```

## سرورهای پرکاربرد MCP

### فایل‌سیستم

دسترسی به فایل‌سیستم محلی:

```json
{
  "filesystem": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/directory"]
  }
}
```

**قابلیت‌ها**: خواندن، نوشتن و جستجوی فایل‌ها در پوشه مشخص‌شده.

### پایگاه داده SQLite

اتصال به پایگاه داده SQLite:

```json
{
  "sqlite": {
    "command": "npx",
    "args": ["-y", "mcp-server-sqlite", "./database.db"]
  }
}
```

**قابلیت‌ها**: اجرای کوئری‌های SQL، مدیریت شمای پایگاه داده.

### GitHub

اتصال به مخازن GitHub:

```json
{
  "github": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-github"],
    "env": {
      "GITHUB_TOKEN": "${GITHUB_TOKEN}"
    }
  }
}
```

**قابلیت‌ها**: مدیریت Issues، PRها و عملیات مخزن.

### Context7 (بازیابی مستندات)

دریافت آخرین مستندات کتابخانه:

```json
{
  "context7": {
    "command": "npx",
    "args": ["-y", "@context7/mcp-server"]
  }
}
```

**قابلیت‌ها**: بازیابی مستندات به‌روز و نمونه‌کدهای هر کتابخانه.

### Supabase

اتصال به بک‌اند Supabase:

```json
{
  "supabase": {
    "command": "npx",
    "args": ["-y", "@supabase/mcp-server"],
    "env": {
      "SUPABASE_URL": "${SUPABASE_URL}",
      "SUPABASE_KEY": "${SUPABASE_KEY}"
    }
  }
}
```

**قابلیت‌ها**: عملیات پایگاه داده، احراز هویت، مدیریت فضای ذخیره‌سازی.

### Docker

مدیریت کانتینر:

```json
{
  "docker": {
    "command": "npx",
    "args": ["-y", "@docker/mcp-server"]
  }
}
```

**قابلیت‌ها**: مدیریت کانتینرها، ایمیج‌ها، شبکه‌ها.
## انواع سرور

### stdio (فرایند محلی)

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

```json
{
  "my-server": {
    "command": "node",
    "args": ["./server.js"],
    "env": {
      "API_KEY": "${API_KEY}"
    }
  }
}
```

**ویژگی‌ها**:

- به‌صورت محلی اجرا می‌شود و داده‌ها روی دستگاه خودتان باقی می‌مانند

- Claude Code چرخه عمر فرایند را مدیریت می‌کند

- مناسب برای فایل‌سیستم و پایگاه‌های داده محلی

### SSE (رویدادهای ارسالی سرور)

> **⚠️ بر اساس مشخصات MCP نسخه 2025-11-25، SSE منسوخ شده است.** اتصال‌های جدید باید از **Streamable HTTP** استفاده کنند (بخش HTTP را در ادامه ببینید). SSE تنها برای سازگاری با سرورهای موجود نگه داشته شده است.


به سرورهای MCP میزبانی‌شده از راه دور متصل شوید:

```json
{
  "remote-server": {
    "type": "sse",
    "url": "https://mcp.example.com/sse"
  }
}
```

**ویژگی‌ها**:

- مناسب برای سرویس‌های ابری

- از احراز هویت OAuth پشتیبانی می‌کند

- نیازی به نصب محلی نیست

### HTTP

رویکرد RESTful API:

```json
{
  "api-server": {
    "type": "http",
    "url": "https://api.example.com/mcp",
    "headers": {
      "Authorization": "Bearer ${API_TOKEN}"
    }
  }
}
```

## متغیرهای محیطی

پیکربندی MCP از جایگزینی متغیرهای محیطی پشتیبانی می‌کند:

```json
{
  "my-server": {
    "command": "node",
    "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],
    "env": {
      "DATABASE_URL": "${DATABASE_URL}",
      "API_KEY": "${API_KEY}",
      "DEFAULT_NAMESPACE": "${K8S_NAMESPACE:-default}"
    }
  }
}
```

**نحو**:

- `${VAR}` - با مقدار متغیر محیطی جایگزین کنید

- `${VAR:-default}` - اگر متغیر تنظیم نشده باشد، از مقدار پیش‌فرض استفاده کنید

## مثال‌های عملی

### مثال 1: دستیار پرس‌وجوی پایگاه داده

```json
{
  "postgres": {
    "command": "npx",
    "args": ["-y", "mcp-server-postgres"],
    "env": {
      "DATABASE_URL": "postgresql://user:pass@localhost/mydb"
    }
  }
}
```

استفاده:

```
> Query total order amount for the last 7 days
> Find the top 10 users with the most purchases
```

### مثال 2: عملیات Kubernetes

```json
{
  "kubernetes": {
    "command": "node",
    "args": ["./k8s-mcp-server.js"],
    "env": {
      "KUBECONFIG": "${KUBECONFIG}",
      "K8S_NAMESPACE": "${K8S_NAMESPACE:-default}"
    }
  }
}
```

استفاده:

```
> List the status of all Pods
> Restart the api-server deployment
> Show recent error logs
```

### مثال 3: پیکربندی چندسروری

```json
{
  "filesystem": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "./src"]
  },
  "database": {
    "command": "npx",
    "args": ["-y", "mcp-server-sqlite", "./data.db"]
  },
  "github": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-github"],
    "env": {
      "GITHUB_TOKEN": "${GITHUB_TOKEN}"
    }
  }
}
```
## عیب‌یابی

### سرور راه‌اندازی نمی‌شود

1. بررسی کنید که دستور به‌درستی نصب شده است:
   ```bash
   npx -y @modelcontextprotocol/server-filesystem --help
   ```

2. بررسی کنید که متغیرهای محیطی تنظیم شده‌اند:
   ```bash
   echo $GITHUB_TOKEN
   ```

3. گزارش‌های Claude Code را برای پیام‌های خطا بررسی کنید

### ابزارها در دسترس نیستند

1. برای بررسی وضعیت سرور از `/mcp` استفاده کنید

2. قالب فایل پیکربندی (نحو JSON) را بررسی کنید

3. برای بارگذاری مجدد پیکربندی، Claude Code را دوباره راه‌اندازی کنید

### مشکلات مجوز

- اطمینان حاصل کنید که مسیرهای فایل مجوز خواندن/نوشتن دارند

- رشته اتصال پایگاه داده درست است

- توکن API معتبر است و مجوزهای کافی دارد

## توصیه‌های امنیتی

1. **اصل حداقل دسترسی**: فقط دسترسی‌های لازم را اعطا کنید

2. **محافظت از اطلاعات حساس**: برای توکن‌ها و گذرواژه‌ها از متغیرهای محیطی استفاده کنید

3. **محدود کردن دسترسی به مسیرها**: برای سرورهای فایل‌سیستم فقط پوشه‌های لازم را در معرض دسترسی قرار دهید

4. **چرخش منظم کلیدها**: توکن‌های API را به‌طور دوره‌ای به‌روزرسانی کنید

## نکات امنیتی

سرور MCP با هویت شما اجرا می‌شود — می‌تواند داده‌ها را بخواند، ابزارها را فراخوانی کند و به اعتبارنامه‌ها دسترسی پیدا کند. افزودن یک سرور MCP شخص ثالث در عمل کد خارجی را به محیط توسعه شما متصل می‌کند؛ پس با احتیاط با آن رفتار کنید.

**خطرهای اصلی**

- **خارج‌سازی داده**: یک سرور مخرب یا آلوده می‌تواند کد، فایل‌ها یا محتوای مکالمه شما را به مقصدی خارجی بفرستد.

- **مسموم‌سازی ابزار**: یک سرور دستورالعمل‌های پنهانی را در توضیحات ابزار خود جای می‌دهد و Claude را به سمت اقداماتی سوق می‌دهد که هرگز به آن‌ها اجازه نداده‌اید.

- **افشای اعتبارنامه**: یک سرور با پیکربندی نادرست ممکن است متغیرهای محیطی، اسرار یا توکن‌ها را بخواند.

- **اختیارات بیش از حد گسترده**: اعطای قابلیت‌های ابزار فراتر از آنچه واقعاً لازم است، سطح حمله را گسترده‌تر می‌کند.

**راهکارهای کلیدی کاهش خطر**

- **فقط سرورهای مورد اعتماد را نصب کنید**: سرورهای MCP رسمی، بررسی‌شده یا متن‌باز و قابل ممیزی را ترجیح دهید؛ از پیاده‌سازی‌های با منشأ ناشناس دوری کنید.

- **حداقل دسترسی**: محدوده‌های ابزار اعلام‌شده هر سرور را یک‌به‌یک بررسی کنید و فقط قابلیت‌ها و پوشه‌هایی را که واقعاً لازم دارید در معرض دسترسی قرار دهید.

- **دروازه‌های تأیید انسانی را حفظ کنید**: Claude Code پیش از اجرای یک فراخوانی ابزار درخواست تأیید می‌کند — به‌صورت کورکورانه تأیید نکنید و عملیات مخرب، نوشتنی یا مرتبط با اعتبارنامه را به‌طور کامل به‌صورت خودکار تأیید نکنید.

- **اعتبارنامه‌ها را جداسازی کنید**: هنگام اجرای دستورها در محیط ایزوله، از `sandbox.credentials` استفاده کنید تا فرایندهای ایزوله‌شده از خواندن اسرار و متغیرهای محیطی بازداشته شوند.

- **ممیزی فراخوانی‌ها**: فعالیت فراخوانی ابزار را ثبت و به‌طور دوره‌ای بررسی کنید تا رفتار غیرعادی را زودهنگام تشخیص دهید.

برای مدل کامل تهدید، ایزوله‌سازی و پیکربندی جداسازی اعتبارنامه، [بهترین شیوه‌های امنیتی](/docs/advanced/security) را ببینید.

## گام‌های بعدی

- برای ساخت قابلیت‌های سفارشی، درباره [سیستم افزونه](/docs/advanced/plugins) اطلاعات کسب کنید

- برای افزایش بهره‌وری، [نکات CLI](/docs/usage/cli-tips) را ببینید

- برای بهینه‌سازی جریان توسعه، [نکات جریان کار](/docs/usage/workflow-tips) را بررسی کنید