−25%

د Windows پر کلنۍ تادیه، تر ۳۱ اکتوبر. پلانونه وګورئ

EQVPS
پیل وکړئ

د MCP دروازې لپاره VPS: د یوې پتې او یو ټوکن شاته څو MCP سرورونه

ستاسو ټیم درې پخپله کوربه شوي MCP سرورونه کاروي او هر کس درې URLونه او درې رازونه لري. دوی په یو کوچني VPS کې د یوې HTTPS پتې شاته کېږدئ: Caddy د bearer ټوکن ګوري، د لارې له مخې یې لېږي او پخپله سرورونه له انټرنېټ لرې ساتي. ازمویل شوې تنظیم.

پخپله کوربه شوي MCP سرورونه زیاتېږي. لومړی د داخلي اسنادو لپاره یو وي، بیا د ډېټابېس لپاره یو، بیا څوک د ډیپلای پایپ لاین لپاره یو کوچنی لیکي. هر یو خپل پورټ، خپل URL او خپل راز لري، او د ټیم هر غړی درې واړه د خپل کلاینټ په تنظیماتو کې ږدي. د ټوکن بدلول یعنې ټولو ته پیغام لېږل.

دروازه دا ټول یوې پتې او یو ټوکن ته اړوي. کلاینټان له https://mcp.example.com/docs/mcp، .../db/mcp او داسې نورو سره نښلي. دروازه ټوکن ګوري، هره لاره په localhost کې سم سرور ته لېږي، او پخپله سرورونه هېڅکله بهر نه ښکاري. ډېر لږ څه پکار دي: یو کوچنی VPS د خپل IPv4 سره او Caddy.

لاندې تنظیم مو په یوه ازمویښتي سرور جوړ کړ او له لیکلو مخکې مو د رښتینو کلاینټانو سره وڅېړ.

څه پکار دي

  • یو VPS د عامه IPv4 سره، څو کلاینټان 443 ته ورسېږي. که ستاسو MCP سرورونه پخپله دروند کار نه کوي، Nano-IP بس دی.
  • یوه ډومېن د A ریکارډ سره چې سرور ته اشاره کوي، دلته mcp.example.com.
  • Ubuntu 24.04 یا Debian 12/13. Caddy د دواړو په معیاري زېرمو کې شته.

۱. MCP سرورونه په localhost وچلوئ

هر سرور د systemd خدمت په توګه چلېږي. دلته د بېلګې د بشپړتیا لپاره د سرچینې سرور server-everything دوه ځله کاروو؛ خپل سرورونه یې پر ځای کېږدئ. Node.js 20 یا نوی ته اړتیا لري:

mkdir -p /opt/mcp && cd /opt/mcp
npm install @modelcontextprotocol/server-everything
# /etc/systemd/system/mcp-everything-1.service
[Unit]
Description=MCP server everything #1
After=network.target

[Service]
WorkingDirectory=/opt/mcp
Environment=PORT=3101
ExecStart=/opt/mcp/node_modules/.bin/mcp-server-everything streamableHttp
Restart=always
User=nobody

[Install]
WantedBy=multi-user.target

دویمه کاپي 3102 پورټ کاروي. بیا:

systemctl daemon-reload
systemctl enable --now mcp-everything-1 mcp-everything-2

هغه څه چې په ازموینه کې مو ولیدل: دا سرور یوازې 127.0.0.1 ته نه، بلکې ټولو انټرفېسونو ته غوږ نیسي، او ډېر نور هم همداسې کوي. درېیم ګام دا حل کوي.

۲. Caddy: لومړی ټوکن وګورئ، بیا د لارې له مخې یې ولېږئ

یو ټوکن جوړ کړئ او د چاپېریال د فایل له لارې یې Caddy ته ورکړئ:

apt install -y caddy
echo "MCP_GATEWAY_TOKEN=$(openssl rand -hex 32)" > /etc/caddy/gateway.env
chmod 600 /etc/caddy/gateway.env
mkdir -p /etc/systemd/system/caddy.service.d
printf '[Service]\nEnvironmentFile=/etc/caddy/gateway.env\n' > /etc/systemd/system/caddy.service.d/env.conf
systemctl daemon-reload

Caddyfile:

mcp.example.com {
	route {
		@unauthorized not header Authorization "Bearer {$MCP_GATEWAY_TOKEN}"
		respond @unauthorized 401

		handle_path /everything/* {
			reverse_proxy 127.0.0.1:3101 {
				flush_interval -1
			}
		}
		handle_path /tools2/* {
			reverse_proxy 127.0.0.1:3102 {
				flush_interval -1
			}
		}
		respond 404
	}
}
caddy validate --config /etc/caddy/Caddyfile && systemctl restart caddy

د mcp.example.com سند Caddy پخپله ترلاسه کوي.

د route بلاک ښکلا نه ده. زموږ په لومړۍ نسخه کې د ټوکن څېړنه او د handle_path بلاکونه په پورتنۍ کچه کې څنګ په څنګ وو، او بې ټوکنه غوښتنې په 200 سره سیدې تېرېدې. Caddy لارښوونې په خپل ترتیب برابروي، او handle_path له respond مخکې چلېږي. د route دننه دوی په لیکل شوي ترتیب چلېږي. که دا تنظیم بدلوئ، لومړی د «بې ټوکنه» حالت وازمویئ.

handle_path مخکینی برخه لرې کوي، نو /everything/mcp سرور ته د /mcp په بڼه رسېږي. flush_interval -1 سټریم شوې پېښې د رسېدو سره سم تېروي.

۳. له SSH او HTTPS پرته هر څه وتړئ

apt install -y ufw
ufw default deny incoming
ufw allow OpenSSH
ufw allow 80,443/tcp
ufw enable

له دې وروسته زموږ په ازموینه کې 3101 او 3102 پورټونو ته له سرور بهر رسېدل نه کېدل، په داسې حال کې چې 22 او 443 ځواب ورکاوه. 80 پورټ یوازې ددې لپاره خلاص پاتې کېږي چې Caddy سندونه ترلاسه او نوي کړي او HTTPS ته یې ولېږي.

۴. وڅېړئ

TOKEN=$(cut -d= -f2 /etc/caddy/gateway.env)
INIT='{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"check","version":"1"}}}'
curl -s -o /dev/null -w '%{http_code}\n' -X POST https://mcp.example.com/everything/mcp \
  -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' -d "$INIT"
curl -s -o /dev/null -w '%{http_code}\n' -X POST https://mcp.example.com/everything/mcp \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' -d "$INIT"

لومړۍ غوښتنه باید 401 او دویمه 200 وښيي. زموږ په ازموینه کې غلط ټوکن او پرې شوي ټوکن دواړو 401 ترلاسه کړ، او یوې ناپېژندل شوې لارې حتی د سم ټوکن سره 404 ترلاسه کړ.

بیا له یو کلاینټ، لکه Claude Code:

claude mcp add --transport http everything https://mcp.example.com/everything/mcp \
  --header "Authorization: Bearer $TOKEN"
claude mcp list

دواړو سرورونو ✔ Connected وښود. همغه کلاینټ د غلط ټوکن سره ✘ Failed to connect وښود. د کلاینټ تنظیم په اړه نور په EQVPS MCP له Claude Code او Codex سره ونښلوئ کې ولولئ.

بل سرور زیاتول

هغه په نوي localhost پورټ پیل کړئ، یو handle_path بلاک زیات کړئ، Caddy بیا پورته کړئ. د هېچا تنظیم نه بدلېږي، یوازې د همغه کوربه او همغه ټوکن لاندې یو نوی URL راځي.

هغه پولې چې باید پرې پوه شئ

  • د ټولو لپاره یو ټوکن ساده دی او بدلول یې یوه فایل ده، خو تاسو نشئ کولی د ټولو لپاره له بدلولو پرته د یو کس لاسرسی واخلئ. د هر کارن لپاره جلا لاسرسي ته، مخې ته یو تصدیقي پراکسي کېږدئ یا هر کس ته خپله لاره او ټوکن ورکړئ.
  • دروازه سرور خوندي نه کوي. هغه MCP سرور چې shell کمانډونه چلوي، د هر هغه چا لپاره چې ټوکن لري لا هم shell دی. ټوکنونه له ګډو تنظیماتو او git څخه لرې وساتئ.
  • اندازه د سرورونو له مخې وټاکئ، نه د دروازې. پخپله Caddy څو لسګونه میګابایټه کاروي. که کوم سرور محلي ماډل چلوي یا لویه زېرمه انډکس کوي، پلان هغه ټاکي، نه پراکسي.

یوازې یو MCP سرور لرئ؟ د MCP سرورونو لپاره VPS هغه ساده حالت بیانوي. غواړئ اجنټان مو هغه سرور هم اداره کړي چې پرې اوسېږي؟ دا کار د EQVPS MCP سرور کوي (یا REST API که سکرېپټ غوره ګڼئ)، او د خپل IPv4 لرونکي پلانونه له میاشتې $8 څخه پیلېږي.

پوښتنې

ولې باید MCP سرورونه د دروازې شاته کېښودل شي؟

د هر سرور پر ځای د ټول ټیم لپاره یوه پته او یو ټوکن، TLS په یو ځای کې، او پخپله سرورونه یوازې localhost ته غوږ نیسي. د څلورم سرور زیاتول په دروازه کې د درې کرښو بدلون کېږي، نه د ټولو لپاره نوی راز.

کوم پلان ته اړتیا لرم؟

هغه پلان چې خپل IPv4 ولري، ځکه کلاینټان باید 80 او 443 پورټونو ته ورسېږي. Nano-IP (په میاشت $8، 2 vCPU، 1 GB) د یوې دروازې او څو سپکو MCP سرورونو لپاره بس دی. که کوم سرور پخپله دروند کار کوي، اندازه د هغه له مخې وټاکئ.

ایا سټریمنګ د Caddy له لارې کار کوي؟

هو. Streamable HTTP عادي POST غوښتنې او server-sent events کاروي. په ریورس پراکسي کې flush_interval -1 وټاکئ چې پېښې په بفر کې د پاتې کېدو پر ځای سمدستي تېرې شي.

ایا یو ګډ ټوکن بسیا خوندي دی؟

د کوچني ټیم لپاره معقول پیل دی: ټوکن هېڅکله له HTTPS بهر نه ځي، او د یوې فایل په بدلولو بدلېږي. کله چې د هر کس لپاره جلا لاسرسی یا بېرته اخیستل پکار شي، مخې ته یې رښتینې تصدیقي طبقه کېږدئ. ګډ ټوکن لږترلږه دی، نه پوړ.

ایا دا په NAT پلان چلېدای شي؟

د عامې دروازې په توګه نه. NAT پلان د SSH لپاره یو لېږدول شوی پورټ لري او بل هېڅ ننوتونکی نه، نو کلاینټان 443 ته نه رسېږي. یوازې هغه وخت کار کوي چې ټول کلاینټان په همغه سرور وي.

تبصرې

لا تبصرې نشته. لومړی اوسئ.

یوه تبصره پریږدئ

تبصرې د ښکاره کیدو مخکې اعتدال کیږي.