−25%

በWindows ዓመታዊ ክፍያ ላይ፣ እስከ ኦክቶበር 31። ዕቅዶችን ይመልከቱ

EQVPS
ጀምር

ለMCP መግቢያ በር VPS፦ ብዙ MCP ሰርቨሮች ከአንድ አድራሻና ከአንድ ቶከን ጀርባ

ቡድንዎ ራሱ የሚያስተናግዳቸውን ሦስት MCP ሰርቨሮች ይጠቀማል፣ እያንዳንዱ ሰውም ሦስት URL እና ሦስት ሚስጥሮች አሉት። በትንሽ VPS ላይ ከአንድ HTTPS አድራሻ ጀርባ ያድርጓቸው፦ Caddy የbearer ቶከንን ይፈትሻል፣ በመንገድ ያስተላልፋል፣ ሰርቨሮቹንም ከኢንተርኔት ይርቃቸዋል። የተሞከረ ውቅረት።

በራስ የሚስተናገዱ MCP ሰርቨሮች ይበዛሉ። መጀመሪያ ለውስጥ ሰነዶች አንድ ይኖራል፣ ከዚያ ለመረጃ ቋት አንድ፣ ከዚያም አንድ ሰው ለዲፕሎይ ሂደት ትንሽ ይጽፋል። እያንዳንዱ የራሱ ፖርት፣ URL እና ሚስጥር አለው፣ የቡድኑ እያንዳንዱ አባልም ሦስቱንም በደንበኛ ውቅረቱ ውስጥ ይለጥፋል። ቶከን መቀየር ማለት ሁሉንም ማሳወቅ ማለት ነው።

መግቢያ በር ይህን ወደ አንድ አድራሻና አንድ ቶከን ይለውጠዋል። ደንበኞች ከhttps://mcp.example.com/docs/mcp፣ ከ.../db/mcp እና ከሌሎችም ጋር ይገናኛሉ። መግቢያ በሩ ቶከኑን ይፈትሻል፣ እያንዳንዱን መንገድ localhost ላይ ወዳለው ትክክለኛ ሰርቨር ይልካል፣ ሰርቨሮቹም ፈጽሞ ለውጭ አይጋለጡም። የሚያስፈልገው በጣም ትንሽ ነው፦ የራሱ IPv4 ያለው ትንሽ VPS እና Caddy።

ከታች ያለውን ውቅረት በሙከራ ሰርቨር ላይ ገንብተን ከመጻፋችን በፊት በእውነተኛ ደንበኞች ፈትሸነዋል።

የሚያስፈልግዎ

  • ደንበኞች 443 እንዲደርሱ ሕዝባዊ IPv4 ያለው VPS። የMCP ሰርቨሮችዎ ራሳቸው ከባድ ሥራ ካልሠሩ Nano-IP በቂ ነው።
  • ወደ ሰርቨሩ የሚያመለክት A መዝገብ ያለው ዶሜይን፣ እዚህ mcp.example.com።
  • Ubuntu 24.04 ወይም Debian 12/13። Caddy በሁለቱም መደበኛ ማከማቻዎች ውስጥ አለ።

1. 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 ብቻ ሳይሆን በሁሉም በይነገጾች ላይ ያዳምጣል፣ ብዙ ሌሎችም እንዲሁ ያደርጋሉ። ደረጃ 3 ይህን ይፈታል።

2. 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 የዥረት ክስተቶችን እንደደረሱ ያሳልፋል።

3. ከ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 እንዲያዞር ብቻ ነው።

4. ይፈትሹ

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 ከመጨመሩ በስተቀር።

ማወቅ የሚገባቸው ገደቦች

  • ለሁሉም አንድ ቶከን ቀላል ነው፣ መቀየሩም አንድ ፋይል ነው፣ ግን ለሁሉም ሳይቀይሩ የአንድን ሰው መዳረሻ መሻር አይችሉም። ለእያንዳንዱ ተጠቃሚ መዳረሻ፣ ፊት ለፊቱ የማረጋገጫ ፕሮክሲ ያድርጉ ወይም ለእያንዳንዱ ሰው የራሱን መንገድና ቶከን ይስጡ።
  • መግቢያ በሩ ሰርቨርን ደህንነቱ የተጠበቀ አያደርግም። የshell ትዕዛዞችን የሚያስኬድ MCP ሰርቨር ቶከኑን ለያዘ ማንኛውም ሰው አሁንም shell ነው። ቶከኖችን ከጋራ ውቅረቶችና ከgit ያርቁ።
  • መጠኑን በሰርቨሮቹ ይምረጡ እንጂ በመግቢያ በሩ አይደለም። Caddy ራሱ ጥቂት አሥር ሜጋባይት ብቻ ይጠቀማል። ከሰርቨሮችዎ አንዱ አካባቢያዊ ሞዴል ቢያስኬድ ወይም ትልቅ ማከማቻ ቢጠቁም፣ እቅዱን የሚወስነው እሱ ነው እንጂ ፕሮክሲው አይደለም።

አንድ MCP ሰርቨር ብቻ ነው ያለዎት? ለMCP ሰርቨሮች VPS ያንን ቀላሉን ሁኔታ ይሸፍናል። ወኪሎችዎ የሚኖሩበትን ሰርቨር ጭምር እንዲያስተዳድሩ ይፈልጋሉ? ይህን የEQVPS MCP ሰርቨር ያደርጋል (ወይም ስክሪፕት ከመረጡ REST API)፣ የራሳቸው IPv4 ያላቸው እቅዶች ደግሞ በወር ከ$8 ይጀምራሉ።

FAQ

MCP ሰርቨሮችን ከመግቢያ በር ጀርባ ማድረግ ለምን?

ለእያንዳንዱ ሰርቨር ሳይሆን ለቡድኑ አንድ አድራሻና አንድ ቶከን፣ TLS በአንድ ቦታ፣ ሰርቨሮቹም localhost ላይ ብቻ ያዳምጣሉ። አራተኛ ሰርቨር መጨመር በመግቢያ በሩ ውስጥ የሦስት መስመር ለውጥ ይሆናል እንጂ ለሁሉም አዲስ ሚስጥር አይደለም።

የትኛው እቅድ ያስፈልገኛል?

የራሱ IPv4 ያለው እቅድ፣ ምክንያቱም ደንበኞች ፖርት 80 እና 443 መድረስ አለባቸው። Nano-IP (በወር $8፣ 2 vCPU፣ 1 GB) ለመግቢያ በር እና ለጥቂት ቀላል MCP ሰርቨሮች በቂ ነው። አንድ ሰርቨር ራሱ ከባድ ሥራ ከሠራ፣ መጠኑን በእሱ ይምረጡ።

ዥረት በCaddy በኩል ይሠራል?

አዎ። Streamable HTTP መደበኛ POST ጥያቄዎችንና server-sent eventsን ይጠቀማል። ክስተቶች በቋት ውስጥ ሳይቆዩ ወዲያው እንዲያልፉ በreverse proxy ላይ flush_interval -1 ያድርጉ።

አንድ የጋራ ቶከን በቂ ደህንነቱ የተጠበቀ ነው?

ለትንሽ ቡድን ምክንያታዊ ጅምር ነው፦ ቶከኑ ከHTTPS ውጭ አይወጣም፣ አንድ ፋይል በመቀየርም ይቀየራል። ለእያንዳንዱ ሰው የተለየ መዳረሻ ወይም መሻር ሲያስፈልግ፣ ፊት ለፊቱ እውነተኛ የማረጋገጫ ንብርብር ያድርጉ። የጋራ ቶከኑ ወለል ነው፣ ጣሪያ አይደለም።

ይህን በNAT እቅድ ማስኬድ ይቻላል?

እንደ ሕዝባዊ መግቢያ በር አይቻልም። የNAT እቅድ ለSSH አንድ የተላለፈ ፖርት ብቻ አለው፣ ሌላ ገቢ የለም፤ ስለዚህ ደንበኞች 443 አይደርሱም። የሚሠራው ሁሉም ደንበኞች በአንድ ሰርቨር ላይ ከሆኑ ብቻ ነው።

አስተያየቶች

እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።

አስተያየት ይተዉ

አስተያየቶች ከመታየታቸው በፊት ይጣራሉ።