Edgegap
ทางการปรับใช้เซิร์ฟเวอร์เกมแบบผู้เล่นหลายคนจากเอเจนต์เขียนโค้ดของคุณ เครื่องมือสิบรายการที่นำเซิร์ฟเวอร์เฉพาะของ Unity, Unreal หรือ Godot จากอิมเมจคอนเทนเนอร์ไปสู่ผู้เล่นที่เชื่อมต่อได้
คุณทำอะไรได้บ้างด้วย Edgegap MCP?
- Deploy a game server from a container image — ขอให้ผู้ช่วยลงทะเบียนคอนเทนเนอร์อิมเมจของคุณพร้อมการตั้งค่า CPU หน่วยความจำ และพอร์ต จากนั้นเปิดใช้งานใกล้กับผู้เล่นที่ระบุ
- Track deployment status and connection details — ให้ผู้ช่วยตรวจสอบสถานะจนกว่าการปรับใช้ของคุณจะพร้อมและส่งคืนที่อยู่การเชื่อมต่อ หรือตรวจสอบสถานะและบันทึกสำหรับอินสแตนซ์ที่กำลังทำงานอยู่
- Manage application versions — ขอให้ผู้ช่วยแสดงรายการแอปและเวอร์ชันที่มีอยู่ หรือสร้างเวอร์ชันใหม่จากการตั้งค่าของเวอร์ชันที่ใช้งานได้เพื่อหลีกเลี่ยงการทำซ้ำ
- Stop deployments gracefully — สั่งให้ผู้ช่วยยุติการปรับใช้เฉพาะตามรหัสคำขอ โดยส่งสัญญาณปิดระบบอย่างสะอาดแทนการบังคับหยุด
- Find and clean up orphaned servers — ขอให้ผู้ช่วยแสดงรายการการปรับใช้ทั้งหมดจากเซสชันก่อนหน้า เพื่อให้คุณสามารถระบุและหยุดอินสแตนซ์ที่ไม่ได้ใช้งาน
เซิร์ฟเวอร์ MCP แบบโฮสต์
npx add-mcp 'https://mcp.edgegap.dev/mcp'ติดตั้งลง Claude Code, Codex, Cursor และอื่นๆ
เอกสาร
edgegap-mcp
เซิร์ฟเวอร์ MCP สำหรับ Edgegap ที่ช่วยให้เอเจนต์เขียนโค้ดพานักพัฒนาจาก "ฉันมีคอนเทนเนอร์เกมเซิร์ฟเวอร์" ไปสู่ "ผู้เล่นเชื่อมต่อกับมันแล้ว" โดยที่นักพัฒนาไม่ต้องอ่านเอกสารอ้างอิง API
เครื่องมือสิบตัว คัดสรรมาอย่างดี ไม่ได้สร้างจาก OpenAPI spec — ดู ขอบเขต ว่าทำไม
การติดตั้ง
มีสองวิธีให้รัน เลือกตามความสำคัญที่คุณมีต่อตำแหน่งของโทเค็น — ดู โทเค็นของคุณไปอยู่ที่ไหน
เอ็นด์พอยต์ระยะไกล
โฮสต์โดย Edgegap ในรูปแบบ Cloudflare Worker ไม่ต้องติดตั้งอะไร
{
"mcpServers": {
"edgegap": {
"type": "http",
"url": "https://mcp.edgegap.dev/mcp",
"headers": { "Authorization": "token YOUR_API_TOKEN" }
}
}
}
ยังใช้เป็นคอนเนกเตอร์แบบกำหนดเองใน claude.ai ได้ด้วย: เพิ่ม
https://mcp.edgegap.dev/mcp และระบุโทเค็นเดียวกัน
ท้องถิ่น
รันบนเครื่องของคุณเอง เริ่มโดยโปรแกรมแก้ไขของคุณ หนึ่งบรรทัดในคอนฟิก MCP ไคลเอนต์ของคุณ ไม่ต้องโคลน ไม่ต้องคอมไพล์
{
"mcpServers": {
"edgegap": {
"command": "npx",
"args": ["-y", "@edgegap/mcp"]
}
}
}
ใช้งานได้ใน Claude Code, Cursor, Codex และ VS Code ปักหมุดเวอร์ชันในโปรดักชัน (@edgegap/mcp@0.1.5) แทนที่จะลอยตามเวอร์ชันล่าสุด
ลงทะเบียนในรีจิสทรี MCP อย่างเป็นทางการในชื่อ dev.edgegap/mcp
เวอร์ชัน Node: เซิร์ฟเวอร์ท้องถิ่นต้องใช้ Node 18+ การดีพลอย Cloudflare Worker ด้วยตัวเองต้องใช้ Node 22+ เพราะ
wranglerต้องการมัน
โทเค็นของคุณไปอยู่ที่ไหน
สิ่งนี้แตกต่างกันตามโหมด และความแตกต่างคือเหตุผลที่ทั้งสองโหมดมีอยู่
ท้องถิ่น. เซิร์ฟเวอร์รันเป็นโพรเซสบนคอมพิวเตอร์ของคุณเอง การเรียกเครื่องมือครั้งแรกจะถามโทเค็นจากคุณ แสดงสิ่งที่โทเค็นอนุญาต และต้องมีการยอมรับอย่างชัดแจ้งก่อนที่จะยอมรับมัน จากนั้นโทเค็นจะอยู่ที่ไหน อย่างละเอียด:
- หนึ่งตัวแปรในหน่วยความจำของโพรเซสนั้น ตลอดอายุเซสชันโปรแกรมแก้ไขของคุณ
นั่นคือรายการทั้งหมด ไม่ได้อยู่บนดิสก์ ไม่ได้อยู่ในไฟล์คอนฟิก ไม่ได้อยู่ในล็อก ไม่ได้อยู่บนเซิร์ฟเวอร์ Edgegap ใดๆ — สิ่งเดียวที่ส่งไปยัง Edgegap คือการเรียก API เอง เหมือนกับที่คุณรัน curl การปิดโปรแกรมแก้ไขของคุณจะเพิกถอนการเข้าถึงของเซิร์ฟเวอร์นี้โดยสิ้นเชิง
ระยะไกล. โทเค็นของคุณถูกส่งไปยัง mcp.edgegap.dev ในการร้องขอทุกครั้งและส่งต่อไปยัง Edgegap API จากที่นั่น มันผ่านโครงสร้างพื้นฐานที่ Edgegap ดำเนินการ วอร์กเกอร์ถือมันไว้ตลอดอายุการร้องขอและไม่เก็บมันไว้ แต่นั่นคือคำกล่าวอ้าง "เราไม่เก็บมัน" มากกว่า "เราไม่เห็นมัน" ทั้งสองต่างกัน และมีเพียงโหมดท้องถิ่นเท่านั้นที่ทำให้ข้อที่สองเป็นจริง
สร้างโทเค็นที่ https://app.edgegap.com/user-settings?tab=tokens
ในโหมดท้องถิ่น การตั้งค่า EDGEGAP_API_TOKEN มีความสำคัญเหนือพรอมต์ สำหรับ CI และสำหรับไคลเอนต์ที่ไม่สามารถแสดงพรอมต์ได้ อย่าส่งโทเค็นเป็นอาร์กิวเมนต์บรรทัดคำสั่ง — อาร์กิวเมนต์มองเห็นได้โดยโพรเซสอื่นผ่าน ps และเซิร์ฟเวอร์จะเตือนหากตรวจพบ
ควรใช้อันไหน. ระยะไกลสำหรับการลองครั้งแรก การสาธิต หรือเซสชันที่มีผู้ดูแลซึ่งความยุ่งยากในการตั้งค่าสำคัญกว่าการถือครอง ท้องถิ่นสำหรับสิ่งที่ไม่มีการดูแล สิ่งใดก็ตามในองค์กรที่มีเกมที่ใช้งานจริง และสิ่งใดก็ตามที่คุณไม่อยากขยายความไว้วางใจที่ไม่จำเป็น มาตรการป้องกันที่อธิบายด้านล่างมีอยู่ในโหมดท้องถิ่นเท่านั้น
อ่านสิ่งนี้ก่อนเชื่อมต่อเอเจนต์
โทเค็น API ของ Edgegap ไม่สามารถจำกัดขอบเขตได้ โทเค็นหนึ่งอนุญาตทุกแอปพลิเคชัน ทุกเวอร์ชัน ทุกดีพลอยเมนต์ที่รันอยู่ และการใช้งานของคุณทั่วทั้งองค์กร ไม่มีโทเค็นเฉพาะดีพลอยและไม่มีโทเค็นเฉพาะแอปพลิเคชัน
ผลที่ตามมาที่ควรพิจารณาอย่างรอบคอบ:
- เอเจนต์ที่ถือโทเค็นนี้สามารถหยุดดีพลอยเมนต์ในโปรดักชันได้ ไม่ใช่แค่ตัวทดสอบที่มันสร้างขึ้น
- การฉีดพรอมต์ที่ไปถึงเอเจนต์ — จากไฟล์ในรีโพ ปัญหา หน้าที่ดึงมา — ไปถึงโทเค็นด้วย
- สิ่งใดก็ตามที่เอเจนต์บันทึก สะท้อน หรือส่งไปยังผู้ให้บริการโมเดล คือที่ที่โทเค็นอาจไปจบลง เซิร์ฟเวอร์นี้ไม่ได้บันทึกมัน แต่ไม่สามารถควบคุมสิ่งที่เอเจนต์ที่เหลือทำได้
- บนเอ็นด์พอยต์ระยะไกล โทเค็นที่ไม่จำกัดขอบเขตเดียวกันนี้ยังถูกจัดการโดยวอร์กเกอร์ของ Edgegap ในการเรียกทุกครั้ง
การตั้งค่าที่แนะนำ เรียงตามระดับความระมัดระวังจากมากไปน้อย:
| สถานการณ์ | การตั้งค่า |
|---|---|
| เอเจนต์ที่ไม่มีการดูแลหรืออัตโนมัติ | โหมดท้องถิ่น องค์กรแยกที่ไม่ใช่โปรดักชัน บวก EDGEGAP_READ_ONLY=1 |
| เอเจนต์ที่มีผู้ดูแล เกมที่ใช้งานจริงในองค์กร | โหมดท้องถิ่น EDGEGAP_APP_ALLOWLIST จำกัดขอบเขตเฉพาะแอปที่กำลังทำงาน บวก EDGEGAP_MAX_DURATION_MINUTES อ่าน ขอบเขตของรายการอนุญาต ก่อน — ดีพลอยเมนต์ที่รันอยู่แล้วไม่ครอบคลุม |
| นักพัฒนาเดี่ยว ไม่มีงานโปรดักชัน | โหมดใดก็ได้ ค่าเริ่มต้นใช้ได้ เพิกถอนโทเค็นเมื่อเสร็จ |
รายการอนุญาตและแฟล็กอ่านอย่างเดียวถูกบังคับใช้ในเซิร์ฟเวอร์ท้องถิ่น ซึ่งหมายความว่ามันป้องกันเอเจนต์ที่ทำผิดพลาด ไม่ใช่เอเจนต์ที่ถูกบุกรุกให้เรียก API โดยตรง พวกมันจำกัดรัศมีการระเบิด ไม่ได้กำจัดมัน
ขอบเขตของรายการอนุญาต
EDGEGAP_APP_ALLOWLIST ถูกบังคับใช้โดยเครื่องมือสี่ตัวที่รับชื่อแอปพลิเคชัน: edgegap_create_app, edgegap_list_app_versions,
edgegap_create_app_version และ edgegap_deploy
มัน ไม่ ถูกบังคับใช้โดยเครื่องมือห้าตัวที่ใช้คีย์ request_id:
edgegap_get_deployment, edgegap_wait_for_deployment,
edgegap_list_deployments, edgegap_stop_deployment และ
edgegap_get_deployment_logs เอเจนต์ที่รันด้วยรายการอนุญาตที่ตั้งไว้สามารถแสดงรายการดีพลอยเมนต์ทั้งหมดในองค์กรแล้วตรวจสอบ อ่านล็อก หรือหยุดใดๆ ก็ได้ — รวมถึงดีพลอยเมนต์ที่อยู่ในแอปพลิเคชันนอกรายการ
ดังนั้นรายการอนุญาตจำกัดขอบเขตสิ่งที่เอเจนต์สามารถ สร้างและดีพลอยเข้าไป ไม่ใช่สิ่งที่มันสามารถ แตะต้องเมื่อรันแล้ว นั่นแคบกว่าเอกสารเวอร์ชันก่อนหน้านี้ที่บอกเป็นนัย
สำหรับการรับประกันที่แข็งแกร่งกว่าในวันนี้ ใช้ EDGEGAP_READ_ONLY=1 ซึ่งไม่ลงทะเบียนเครื่องมือกลายพันธุ์ห้าตัวเลย หรือชี้เอเจนต์ไปที่องค์กรแยกที่ไม่ใช่โปรดักชัน ทั้งสองไม่ได้รับผลกระทบจากช่องว่างนี้
รายงานโดย Syed Anas Mohiuddin กันยายน 2026
ตัวแปรสภาพแวดล้อม
สิ่งเหล่านี้กำหนดค่าคอนฟิกเซิร์ฟเวอร์ท้องถิ่น บนเอ็นด์พอยต์ระยะไกล ตั้งค่าโดย Edgegap และไม่สามารถเปลี่ยนต่อนักพัฒนาได้ — หากคุณต้องการสิ่งเหล่านี้ ให้รันในเครื่อง
| ตัวแปร | ค่าเริ่มต้น | วัตถุประสงค์ |
|---|---|---|
EDGEGAP_API_TOKEN | (ถาม) | โทเค็น API ไม่บังคับ — ละเว้นได้และนักพัฒนาจะถูกถามเมื่อใช้ครั้งแรก เพิ่มคำนำหน้า token ให้คุณ |
EDGEGAP_READ_ONLY | 0 | ตั้งเป็น 1 และเครื่องมือกลายพันธุ์ห้าตัวจะไม่ถูกลงทะเบียน เอเจนต์ไม่เห็นมัน ดังนั้นไม่สามารถถูกชักชวนให้เรียกมันได้ |
EDGEGAP_APP_ALLOWLIST | (ว่าง) | ชื่อแอปพลิเคชันคั่นด้วยเครื่องหมายจุลภาค เมื่อตั้งค่า เครื่องมือสี่ตัวที่ใช้คีย์แอปพลิเคชันจะปฏิเสธที่จะแตะต้องสิ่งอื่น ไม่ จำกัดขอบเขตเครื่องมือห้าตัวที่ใช้คีย์ request_id — ดู ขอบเขตของรายการอนุญาต |
EDGEGAP_MAX_DURATION_MINUTES | 60 | เพดานบน max_duration ที่เอเจนต์อาจตั้งบนเวอร์ชัน จำกัดค่าใช้จ่ายที่พุ่งสูงจากเอเจนต์ที่ไม่มีการดูแล |
EDGEGAP_TIMEOUT_MS | 30000 | หมดเวลา HTTP ต่อการร้องขอ |
เครื่องมือ
เครื่องมือสิบตัว เรียงตามลำดับที่อยู่บนเส้นทางทองคำ สิบตัวเดียวกันในทั้งสองโหมด
| เครื่องมือ | กลายพันธุ์ | ใช้ทำอะไร |
|---|---|---|
edgegap_list_apps | ปรับทิศทางก่อนทำอะไร ป้องกันแอปพลิเคชันซ้ำ | |
edgegap_create_app | ● | สร้างคอนเทนเนอร์สำหรับเวอร์ชัน |
edgegap_list_app_versions | ค้นหาเวอร์ชันที่ดีพลอยได้ หรือคัดลอกการตั้งค่าจากเวอร์ชันที่ทำงาน | |
edgegap_create_app_version | ● | ลงทะเบียนอิมเมจคอนเทนเนอร์ด้วย CPU หน่วยความจำ และพอร์ต |
edgegap_deploy | ● | เริ่มอินสแตนซ์หนึ่งตัวใกล้กับผู้เล่นที่ระบุ |
edgegap_get_deployment | อ่านสถานะครั้งเดียว | |
edgegap_wait_for_deployment | โพลจนพร้อมด้วย backoff แล้วส่งคืนที่อยู่การเชื่อมต่อ | |
edgegap_list_deployments | ค้นหาเซิร์ฟเวอร์ที่ถูกทิ้งจากเซสชันก่อนหน้า | |
edgegap_stop_deployment | ● | SIGTERM อย่างสุภาพ ทีละดีพลอยเมนต์ |
edgegap_get_deployment_logs | เอาต์พุตคอนเทนเนอร์และรหัสออกจากการขัดข้องหลังความล้มเหลว |
การตัดสินใจออกแบบ
คัดสรร ไม่ได้สร้างอัตโนมัติ API ของ Edgegap มีประมาณหกสิบโอเปอเรชัน การสร้างเครื่องมือหนึ่งตัวต่อโอเปอเรชันอัตโนมัติจะใส่คำอธิบายหกสิบตัวเข้าไปในบริบทของเอเจนต์ทุกเทิร์นและลดคุณภาพการเลือกเครื่องมืออย่างวัดได้ สิบตัวนี้ครอบคลุมเส้นทางที่แปลงนักพัฒนาใหม่
wait_for_deployment เป็นเครื่องมือ ไม่ใช่ลูป ปล่อยให้เอเจนต์จัดการเอง มันจะเรียกเอ็นด์พอยต์สถานะในลูปถี่ๆ เผาเทิร์น และยอมแพ้เร็ว การรวมการโพลและ backoff ในการเรียกเดียวลบความล้มเหลวที่พบบ่อยที่สุดในการดีพลอยที่ขับเคลื่อนโดยเอเจนต์
ข้อผิดพลาดเขียนเพื่อการแก้ไขตัวเอง 424 กลับมาพร้อมบอกว่าดึงอิมเมจไม่ได้และควรตรวจสอบฟิลด์ใด 422 บอกให้ลองพิกัดอื่นหรือลดคำขอทรัพยากร เอเจนต์สามารถดำเนินการกับสิ่งเหล่านี้ได้โดยไม่ต้องวนกลับไปหามนุษย์
การตรวจสอบท้องถิ่นก่อนส่งผ่านสาย อัตราส่วนหน่วยความจำต่อ CPU และตำแหน่งผู้เล่นที่หายไปถูกจับที่นี่แทนที่จะแสดงเป็น 400 ที่ไม่ชัดเจน
โอเปอเรชันจำนวนมากถูกตัดออกโดยตั้งใจ stop รับหนึ่ง request_id ไม่มีเครื่องมือหยุดจำนวนมาก เพราะเอเจนต์ที่มีนิพจน์ตัวกรองและบั๊กสามารถหยุดฝูงบินโปรดักชันได้
ทั้งเอ็นด์พอยต์ที่โฮสต์และแพ็คเกจท้องถิ่น เอ็นด์พอยต์ที่โฮสต์ลบทุกขั้นตอนระหว่างการค้นหาเซิร์ฟเวอร์นี้และการเรียกเครื่องมือ ซึ่งเป็นจุดที่นักพัฒนาส่วนใหญ่หลุดออก แพ็คเกจท้องถิ่นเป็นวิธีเดียวที่จะรันเซิร์ฟเวอร์โดยไม่ขยายการถือครองโทเค็นที่ไม่จำกัดขอบเขตให้บุคคลที่สาม รวมถึงเรา ไม่มีอันไหนเหนือกว่าอีกอัน ดังนั้นทั้งสองจึงจัดส่ง ดู worker/DECISION.md สำหรับเวอร์ชันยาว
ขอบเขต
ไม่เปิดเผย โดยตั้งใจ: การจับคู่ รีเลย์ ฝูงบินส่วนตัว ฝูงบินอัจฉริยะ การจัดเก็บเอ็นด์พอยต์ รายการ ACL/ไวท์ลิสต์ แท็กดีพลอยเมนต์ เมตริก การจัดการรีจิสทรีคอนเทนเนอร์ การกำหนดค่า DNS
สิ่งเหล่านี้เป็นความสามารถจริง แต่เป็นของสตูดิโอที่ดำเนินการบนแพลตฟอร์มอยู่แล้ว ไม่ใช่นักพัฒนาที่ดีพลอยเซิร์ฟเวอร์แรกของพวกเขา การเพิ่มมันจะแลกเส้นทางการแปลงกับพื้นที่ผิว
ข้อจำกัดที่ทราบ: การขอโทเค็นเลย
สิ่งนี้ใช้กับโหมดท้องถิ่น ซึ่งโทเค็นถูกรวบรวมผ่านการสอบถามแทนที่จะอ่านจากคอนฟิก
ข้อกำหนด MCP กล่าวว่าเซิร์ฟเวอร์ไม่ควรใช้การสอบถามเพื่อรวบรวมข้อมูลที่ละเอียดอ่อน และโทเค็น API ก็ละเอียดอ่อน เซิร์ฟเวอร์นี้ทำมันอยู่ดี เพราะการกำหนดให้มีโทเค็นในไฟล์คอนฟิกก่อนที่อะไรจะทำงานคือจุดที่หลุดออกมากที่สุดในช่องทางการเริ่มต้น และจุดทั้งหมดของเซิร์ฟเวอร์คือการลบความยุ่งยากในการตั้งค่า
นั่นคือการแลกเปลี่ยนโดยตั้งใจ ไม่ใช่รูปแบบที่จะคัดลอก สิ่งที่ทำให้มันป้องกันได้คือชุดมาตรการใน src/auth.ts — การจัดเก็บในหน่วยความจำเท่านั้น การเปิดเผยในภาษาธรรมดา การยอมรับที่จำเป็น การปกปิดจากเอาต์พุตทั้งหมด และตัวแปรสภาพแวดล้อมชนะเสมอเมื่อมีอยู่ การลบสิ่งใดสิ่งหนึ่งทำลายการแลกเปลี่ยน
การแก้ไขจริงอยู่ฝั่ง Edgegap และจะปรับปรุงทั้งสองโหมด: ข้อมูลประจำตัวที่จำกัดขอบเขต เพิกถอนได้ เฉพาะดีพลอย ออกผ่าน OAuth แทนที่จะวางเป็นความลับ จนกว่าสิ่งเหล่านั้นจะมีอยู่ พรอมต์โต้ตอบเป็นวิธีแก้ไขชั่วคราวและถูกติดป้ายเช่นนั้นในโค้ด
การพัฒนา
npm run typecheck
node smoke.mjs # handshake, tool registration, read-only mode
node guards.mjs # local validation and allowlist enforcement
node elicit.mjs # token prompt: accept, refuse acknowledgement, decline, no support
ไม่มีสิ่งเหล่านี้เรียกเครือข่าย elicit.mjs ยืนยันว่าพรอมต์ระบุขอบเขตทั่วทั้งองค์กร ว่าการยอมรับจำเป็น ว่าโทเค็นไม่ปรากฏในเอาต์พุตเครื่องมือ และการปฏิเสธสร้างข้อความหยุดและรายงานแทนที่จะเป็นลูปลองใหม่