sync. labs

ทางการ

เซิร์ฟเวอร์ MCP อย่างเป็นทางการของ sync. labs: ซิงก์การขยับริมฝีปากในวิดีโอให้ตรงกับเสียงใหม่หรือสคริปต์ พากย์วิดีโอเป็นภาษาอื่นพร้อมปรับการขยับริมฝีปากให้ตรงกัน ทำให้ภาพถ่ายพูดได้ และโคลนเสียง ลงชื่อเข้าใช้ด้วย OAuth ไม่ต้องใช้ API key

คุณทำอะไรได้บ้างด้วย Sync Labs MCP?

  • วิดีโอลิปซิงก์ — ขอให้เอเจนต์ทำลิปซิงก์ให้วิดีโอที่บันทึกไว้กับไฟล์เสียง หรือกับ URL สื่อสาธารณะ แล้วรอผลลัพธ์
  • แปลและพากย์เสียง — ให้แปลและพากย์เสียงลิงก์ YouTube, TikTok, Instagram หรือ Facebook เป็นภาษาอื่น โดยแจ้งค่าใช้จ่ายก่อนเริ่มดำเนินการ
  • เสียงพูดตามสคริปต์ — ทำให้วิดีโอพูดประโยคด้วยเสียงที่เลือก โดยใช้ voices_list เพื่อเลือกเสียงและระบุสคริปต์ที่ต้องการ
  • โคลนเสียง — โคลนเสียงจากบัญชี sync. ของคุณ เพื่อนำไปใช้กับงานพูดและลิปซิงก์ในภายหลัง
  • จัดการแอสเซ็ตและโปรเจกต์ — สร้าง แสดงรายการ อัปเดต ดาวน์โหลด หรือลบแอสเซ็ต และสร้าง เปลี่ยนชื่อ หรือแสดงรายการโปรเจกต์และงานที่สร้างขึ้น
  • ตรวจสอบการใช้งานและค่าใช้จ่าย — สอบถามจำนวนเครดิตที่เหลือ หรือค่าใช้จ่ายของงานที่สร้างขึ้นก่อนหน้านี้

เซิร์ฟเวอร์ MCP แบบโฮสต์

npx add-mcp 'https://mcp.sync.so/mcp'

ติดตั้งลง Claude Code, Codex, Cursor และอื่นๆ

เอกสาร

เซิร์ฟเวอร์ MCP ของ sync. labs

เชื่อมต่อเอเจนต์ AI ของคุณกับ sync. เพื่อซิงก์ริมฝีปากให้ตรงกับวิดีโอ แปลและพากย์เสียงเป็นภาษาอื่น โคลนเสียง และจัดการแอสเซ็ตกับโปรเจกต์ผ่านแชตหรือเซสชันเขียนโค้ด

sync. โฮสต์เซิร์ฟเวอร์นี้ไว้ที่ https://mcp.sync.so/mcp คุณลงชื่อเข้าใช้ด้วยบัญชี sync. จึงไม่ต้องติดตั้งอะไรหรือคัดลอกคีย์ API ทุกครั้งที่มีการ merge ไปยัง main ของรีโพซิทอรีนี้ ระบบจะ deploy ไปที่นั่น

เชื่อมต่อเอเจนต์ของคุณ

ChatGPT

เปิด sync. ใน ChatGPT แล้วเชื่อมต่อบัญชีของคุณ ใน ChatGPT นั้น sync. Studio จะเปิดขึ้นภายในแชตด้วย

Claude (claude.ai และ Claude Desktop)

  1. เปิด Settings → Connectors แล้วเลือก Add custom connector
  2. ตั้งชื่อเป็น sync. และกำหนด URL เป็น https://mcp.sync.so/mcp
  3. คลิก Connect แล้วลงชื่อเข้าใช้ sync.

Claude Code

claude mcp add --transport http sync https://mcp.sync.so/mcp

จากนั้นเรียกใช้ /mcp ใน Claude Code เลือก sync แล้วลงชื่อเข้าใช้ เพิ่ม --scope user เพื่อใช้ในทุกโปรเจกต์

Codex

codex mcp add sync --url https://mcp.sync.so/mcp
codex mcp login sync

Cursor

เพิ่มลงใน .cursor/mcp.json ในโปรเจกต์ หรือ ~/.cursor/mcp.json สำหรับทุกโปรเจกต์:

{
  "mcpServers": {
    "sync": { "url": "https://mcp.sync.so/mcp" }
  }
}

Cursor จะขอให้คุณลงชื่อเข้าใช้ sync. เมื่อเชื่อมต่อครั้งแรก

VS Code

เพิ่มลงใน .vscode/mcp.json:

{
  "servers": {
    "sync": { "type": "http", "url": "https://mcp.sync.so/mcp" }
  }
}

ไคลเอ็นต์อื่นๆ

ไคลเอ็นต์ใดก็ตามที่รองรับเซิร์ฟเวอร์ MCP ระยะไกลผ่าน Streamable HTTP พร้อม OAuth สามารถใช้ https://mcp.sync.so/mcp ได้ ไคลเอ็นต์จะลงทะเบียนตัวเอง แล้วคุณลงชื่อเข้าใช้ sync. ในเบราว์เซอร์

เซิร์ฟเวอร์นี้อยู่ใน Official MCP Registry ในชื่อ io.github.synchronicity-labs/mcp-server ดังนั้นไคลเอ็นต์และไดเรกทอรีที่อ่านรีจิสทรีจึงค้นหาและเพิ่มเซิร์ฟเวอร์นี้ได้ server.json คือรายการดังกล่าว

เซิร์ฟเวอร์ภายในเครื่องที่ใช้คีย์ API

สำหรับไคลเอ็นต์ที่ไม่รองรับ MCP ระยะไกล รวมถึงสคริปต์และ CI ให้เรียกใช้เซิร์ฟเวอร์ภายในเครื่องผ่าน stdio โดยใช้ sync. คีย์ API:

claude mcp add sync -e SYNC_API_KEY=your-api-key -- npx -y @sync.so/mcp-server@latest

หรือในไฟล์กำหนดค่า JSON ของไคลเอ็นต์:

{
  "mcpServers": {
    "sync": {
      "command": "npx",
      "args": ["-y", "@sync.so/mcp-server@latest"],
      "env": { "SYNC_API_KEY": "your-api-key" }
    }
  }
}

หากไม่มี SYNC_API_KEY เซิร์ฟเวอร์จะเริ่มการลงชื่อเข้าใช้ผ่านอุปกรณ์เมื่อเรียกใช้ครั้งแรก ให้ไปที่ URL ที่เซิร์ฟเวอร์แสดง แล้วป้อนรหัส โทเค็นจะถูกแคชไว้ที่ ~/.config/sync/mcp-credentials.json

รุ่น npm เผยแพร่แยกจากการ deploy บนโฮสต์และอาจล้าหลังกว่า จึงควรใช้เซิร์ฟเวอร์บนโฮสต์เมื่อไคลเอ็นต์ของคุณรองรับ @latest ทำให้ npx ดึงรุ่นล่าสุดเมื่อไคลเอ็นต์เริ่มเซิร์ฟเวอร์ใหม่ หากไม่มีตัวเลือกนี้ npx อาจเรียกใช้สำเนาเก่าที่แคชไว้ต่อไป

การแจ้งเตือนการอัปเดต

เมื่อเริ่มทำงาน เซิร์ฟเวอร์ภายในเครื่องจะตรวจสอบรุ่นล่าสุดจาก npm registry ไม่เกินวันละครั้ง (คำตอบจะถูกแคชไว้ใน ~/.config/sync/mcp-update-check.json) การตรวจสอบทำงานเบื้องหลังโดยจำกัดเวลาไว้สองวินาที และจะไม่ทำให้การเริ่มทำงานหรือการเรียกใช้เครื่องมือล่าช้า หากตรวจสอบไม่สำเร็จ จะไม่มีการแสดงข้อความใดๆ เมื่อมีรุ่นใหม่กว่า คำแนะนำของเซิร์ฟเวอร์และผลลัพธ์แรกของเครื่องมือในเซสชันจะแจ้งให้เอเจนต์ขอให้คุณเริ่มใหม่ด้วย npx -y @sync.so/mcp-server@latest หรือเปลี่ยนไปใช้เซิร์ฟเวอร์บนโฮสต์

หากต้องการปิด ให้ตั้งค่า SYNC_MCP_UPDATE_CHECK=off หรือส่ง --no-update-check การตรวจสอบจะถูกข้ามด้วยเมื่อกำหนด CI และเซิร์ฟเวอร์บนโฮสต์จะไม่ตรวจสอบรุ่น

สิ่งที่ขอได้

วางพรอมป์ต์ลักษณะนี้ลงในเอเจนต์ของคุณ ID ของแอสเซ็ตดูได้จากไลบรารี sync. ของคุณ ลิงก์อาจเป็น URL สื่อสาธารณะหรือวิดีโอจาก YouTube, TikTok, Instagram และ Facebook

คำขอสิ่งที่เอเจนต์ทำ
"ซิงก์ริมฝีปากของแอสเซ็ตวิดีโอ <video-asset-id> กับแอสเซ็ตเสียง <audio-asset-id>"lipsync_create โดยใช้แอสเซ็ตที่บันทึกไว้ แล้วรอผลลัพธ์
"ซิงก์ริมฝีปากของ https://example.com/talk.mp4 กับ https://example.com/voiceover.wav."lipsync_create โดยใช้ URL สาธารณะ
"แปล https://www.youtube.com/watch?v=… เป็นภาษาสเปน"นำเข้าลิงก์ด้วย assets_create แจ้งค่าใช้จ่าย และหลังจากคุณยืนยันแล้วจึงเรียกใช้ dubbing_create
"ให้แอสเซ็ตวิดีโอ <video-asset-id> พูดว่า “ขอบคุณที่รับชม” ด้วยเสียงผู้บรรยายที่นุ่มนวล"เลือกเสียงด้วย voices_list แจ้งสคริปต์ แล้วเรียกใช้ lipsync_create ด้วย script
"ฉันเหลือเครดิตเท่าไร"account_get-usage
"การสร้างครั้งล่าสุดของฉันมีค่าใช้จ่ายเท่าไร"ค้นหาในประวัติแล้วอ่าน generations_get-costs

ระบบจะแจ้งราคาและขอให้คุณยืนยันก่อนเริ่มการแปล การพากย์เสียง การแสดงตัวอย่างเสียงพูด และการโคลนเสียง

ทักษะของเอเจนต์

เวิร์กโฟลว์แบบทีละขั้นตอนสำหรับเครื่องมือเหล่านี้ (ซิงก์ริมฝีปาก ภาพพูดได้ การพากย์เสียง Edit Dialogue แคมเปญ งานแบบกลุ่ม การแก้ปัญหา และ API) เป็นทักษะของเอเจนต์ใน synchronicity-labs/skills ติดตั้งในเอเจนต์ใดก็ได้ด้วย npx skills add synchronicity-labs/skills ปลั๊กอิน ChatGPT และ Codex รวมทักษะเหล่านี้จาก commit ที่ระบุไว้ของรีโพซิทอรีดังกล่าว ดูรายละเอียดได้ที่ docs/chatgpt-plugin.md

เครื่องมือ

เซิร์ฟเวอร์บนโฮสต์เปิดให้ไคลเอ็นต์ทุกตัวใช้เครื่องมือที่คัดสรรไว้ดังนี้:

หมวดหมู่เครื่องมือ
ซิงก์ริมฝีปากlipsync_create, lipsync_create-timeline¹, generations_estimate-cost, generations_get, generations_list, generations_get-continuation, generations_get-costs, models_list
การแปลและการพากย์เสียงdubbing_create, dubbing_get-options, translation-previews_estimate, translation-previews_create, translation-previews_get
เสียงพูดและเสียงspeech-previews_create, speech-previews_get-options, speech-previews_get, voices_list, voices_clone
Edit Dialoguedialogue_get-options, dialogue_upload-source, dialogue-transcriptions_create, dialogue-transcriptions_get, dialogue-previews_create, dialogue-previews_get, dialogue-videos_estimate, dialogue-videos_create
แอสเซ็ตassets_create, assets_create-upload-url, assets_get, assets_list, assets_count, assets_get-download-url, assets_update, assets_delete, assets_get-playback-metadata, audio-trims_get, audio-trims_create
โปรเจกต์projects_create, projects_get, projects_list, projects_list-generations, projects_rename
งานจำนวนมากjobs_create-many², jobs_get-many²
งานแบบกลุ่มbatches_create², batches_get², batches_list²
บัญชีaccount_get-context, account_get-usage, organizations_list, organizations_select

¹ ไม่มีให้ใช้ในแอป ChatGPT ซึ่ง Studio ที่ฝังอยู่ไม่มีไทม์ไลน์

² ยังไม่มีในรายการแอป ChatGPT jobs_create-many เริ่มงานอิสระได้สูงสุด 50 งานพร้อมกัน เช่น พากย์วิดีโอหนึ่งรายการเป็นหลายภาษา โดยเรียกใช้เครื่องมือสร้างหนึ่งรายการ (lipsync_create, dubbing_create, dialogue-videos_create และอื่นๆ) หนึ่งครั้งต่อรายการ โดยใช้ API ขีดจำกัด และการเรียกเก็บเงินแบบเดียวกับการเรียกใช้ครั้งเดียวในทุกแพ็กเกจ jobs_get-many ติดตามชุดงานดังกล่าว ดูรายละเอียดได้ที่ Jobs งานแบบกลุ่มคือไปป์ไลน์ที่เข้าคิวแยกต่างหากของ API สำหรับการประมวลผลขนาดใหญ่ (การสร้าง 20 ถึง 500 รายการ) ในแพ็กเกจ Scale ขึ้นไป ซึ่งอาจรอได้หลายชั่วโมง หากแพ็กเกจของบัญชีไม่รวมงานแบบกลุ่ม API จะตอบกลับด้วย 402 พร้อม requiredPlan และ billingUrl ซึ่งเครื่องมือจะส่งต่อให้

องค์กรที่มีฟีเจอร์ตรงกันจะได้รับ scenes_detect (การตัดภาพกล้องในวิดีโอ) และ stems_separate (เสียงร้องและเสียงพื้นหลัง) เพิ่มเติม โดยไม่มีในแอป ChatGPT เครื่องมือเหล่านี้อยู่ในชุดเครื่องมือ lipsync และ assets เมื่อใช้งานภายในเครื่อง

ไคลเอ็นต์ที่รองรับแอปจะได้รับเครื่องมือที่อยู่เบื้องหลังแอป Studio ที่ฝังอยู่ด้วย ได้แก่ มุมมองและฉบับร่างของ Studio วิดเจ็ตอัปโหลด และตัวช่วยของแอป ไคลเอ็นต์เหล่านี้คือไคลเอ็นต์ที่ชื่อการจับมือ MCP เลือกโปรไฟล์แอป ChatGPT หรือ Codex (openai-mcp, openai-mcp (Codex); ดู src/client-profile.ts) ไคลเอ็นต์อื่นจะไม่เห็นเครื่องมือเหล่านี้ และการเรียกใช้เครื่องมือดังกล่าวจะถูกปฏิเสธ

ชุดเครื่องมือภายในเครื่อง

เซิร์ฟเวอร์ stdio ภายในเครื่องยังสามารถเปิดให้ใช้เครื่องมือสำหรับการดำเนินการ API สาธารณะอื่นๆ ทุกอย่างใน OpenAPI spec ซึ่งมีทั้งหมดมากกว่า 65 รายการ โดยค่าเริ่มต้นจะแสดงชุดเครื่องมือด้านบนของเซิร์ฟเวอร์บนโฮสต์ โดยไม่รวมเครื่องมือผู้ดูแลระบบ (assets_delete และ voices_clone) พร้อมกับ jobs_get, jobs_wait และเครื่องมือ transcriptions_* ซึ่งแทร็กใบหน้าของผู้พูดจะป้อนให้กับคลิป lipsync_create-timeline

หากต้องการแสดงเครื่องมือเพิ่มเติม ให้ตั้งค่า SYNC_MCP_TOOLSETS หรือส่ง --toolsets พร้อมรายการที่คั่นด้วยจุลภาค:

ชุดเครื่องมือเพิ่ม
defaultชุดเครื่องมือเริ่มต้นด้านบน ดังนั้น default,admin จะเพิ่มเครื่องมือผู้ดูแลระบบเข้าไป
lipsyncเครื่องมือซิงก์ริมฝีปาก ไทม์ไลน์ Edit Dialogue ตัดแต่งเสียง และงานแบบกลุ่ม รวมถึง generate_*, generations_* และ dialogue-edits_* แบบดิบ
dubbingเครื่องมือแปลและพากย์เสียง รวมถึงเครื่องมือสำหรับงานแบบกลุ่ม
assetsassets_* (ยกเว้นการลบ) และเครื่องมืออัปโหลด
projectsprojects_* (ยกเว้นการลบ) และ projects_rename
transcriptiontranscriptions_*
voicesvoices_* (ยกเว้นการโคลนและการลบ) การแสดงตัวอย่างเสียงพูด และ tts_*
adminเครื่องมือลบทั้งหมด (assets_delete, projects_delete, generations_delete, voices_delete) และ voices_clone
allเครื่องมือทั้งหมด เหมือนก่อนมีตัวเลือกนี้

การอ่านงาน บัญชี และการสร้าง (jobs_get, jobs_wait, jobs_get-many, generations_get, account_get-context, organizations_list, organizations_select และ อื่นๆ ที่คล้ายกัน) จะมาพร้อมกับทุกตัวเลือก เช่นเดียวกับ jobs_create-many เมื่อใดก็ตามที่มีเครื่องมือสร้างที่เรียกใช้แสดงอยู่ การระบุชื่อชุดเครื่องมือจะแทนที่ชุดเริ่มต้น ไม่ใช่เพิ่มเข้าไป หากต้องการเรียกคืนเครื่องมือทั้งหมด:

claude mcp add sync -e SYNC_API_KEY=your-api-key -e SYNC_MCP_TOOLSETS=all -- npx -y @sync.so/mcp-server@latest

หากไม่ได้แสดงเครื่องมือทั้งหมด คำแนะนำของเซิร์ฟเวอร์จะแจ้งเอเจนต์ว่ามีชุดเครื่องมือใดบ้าง และจะเรียกใช้ชุดที่เหลือได้อย่างไร เพื่อให้เอเจนต์ขอให้คุณเริ่มเซิร์ฟเวอร์ใหม่โดยใช้ชุดที่กว้างขึ้นได้ เซิร์ฟเวอร์บนโฮสต์จะไม่สนใจการตั้งค่านี้

เวิร์กโฟลว์ของเครื่องมือ อธิบายการทำงานของเครื่องมือแบบหลายขั้นตอนและเครื่องมือที่มีค่าใช้จ่าย

ชื่อเครื่องมือใช้รูปแบบ <noun>_<verb> แบบเดียว (lipsync_create, generations_get) ชื่อที่ใช้ก่อนหน้านี้ (create-lipsync, generate_get-generation) ยังคงใช้งานได้ในช่วงเวลาที่เลิกใช้: การเรียกผ่านชื่อเหล่านี้จะเรียกใช้เครื่องมือเดียวกันและเพิ่มข้อความแจ้งหนึ่งบรรทัดที่ระบุชื่อใหม่ ชื่อเครื่องมือ มีตารางชื่อเดิม → ชื่อใหม่ฉบับเต็ม

ตัวเลือก CLI

Usage: sync-mcp [options]

Options:
  --api-key <key>     API key (or set SYNC_API_KEY env var)
  --base-url <url>    API base URL (default: https://api.sync.so)
  --transport <type>  stdio (default) or http
  --port <port>       HTTP port (default: 3002, only with --transport http)
  --no-spend-confirmation
                      Unattended automation: drop the cost-quote and confirm-before-paying
                      instructions (or set SYNC_MCP_SPEND_CONFIRMATION=off)
  --no-update-check   Skip the daily npm check for a newer version (or set
                      SYNC_MCP_UPDATE_CHECK=off; skipped when CI is set)
  --toolsets <list>   stdio only: comma-separated tools to list (or set SYNC_MCP_TOOLSETS):
                      default, lipsync, dubbing, assets, projects, transcription,
                      voices, admin or all (default: the hosted set without admin)
  -h, --help          Show this help message

ระบบอัตโนมัติแบบไม่ต้องมีผู้ดูแล

โดยค่าเริ่มต้น เครื่องมือจะแจ้งให้เอเจนต์เสนอราคาการดำเนินการที่มีค่าใช้จ่ายและรอการอนุมัติจากผู้ใช้ เมื่อเซิร์ฟเวอร์เรียกใช้ไปป์ไลน์หรือตัวแทนตามกำหนดเวลาที่ผู้ควบคุมอนุมัติการใช้จ่ายไว้แล้ว ให้เริ่มด้วย --no-spend-confirmation (หรือ SYNC_MCP_SPEND_CONFIRMATION=off) จากนั้นเอเจนต์จะสร้างงานโดยไม่เสนอราคาหรือขออนุมัติ และยังใช้เครื่องมือประเมินราคาได้ เอเจนต์ไม่สามารถเปลี่ยนการตั้งค่านี้ได้

เครื่องมืองานรับ wait: true เพื่อรอผลบนเซิร์ฟเวอร์ (สูงสุดประมาณ 50 วินาทีต่อการเรียก โดยมีการแจ้งความคืบหน้าเมื่อไคลเอ็นต์ส่ง progressToken): generations_get, translation-previews_get, transcriptions_get และการนำเข้าจากโซเชียลผ่าน assets_create บนเซิร์ฟเวอร์ภายในเครื่อง jobs_wait และ jobs_get ทำงานแบบเดียวกันกับงานทุกประเภท (การสร้าง การถอดเสียง การวิเคราะห์ผู้พูด การแสดงตัวอย่างการแปล การนำเข้า) โดยใช้ข้อมูลนำเข้าหนึ่งรายการ {kind, id, projectId?} และรูปแบบผลลัพธ์กับชุดสถานะเดียวกัน ดูรายละเอียดได้ที่ Jobs jobs_get-many อ่านงานได้สูงสุด 50 รายการด้วยวิธีนี้พร้อมกันบนเซิร์ฟเวอร์ทั้งสองแบบ

เมื่อ API รองรับ feedback_send จะช่วยให้เอเจนต์รายงานข้อผิดพลาดที่ทำให้สับสน ผลลัพธ์ที่ไม่ถูกต้อง และความสามารถที่ขาดหายไปให้ทีม Sync ทราบได้

ตัวแปรสภาพแวดล้อมและขีดจำกัดเซสชัน หน่วยความจำ การอัปโหลด และการวินิจฉัยของเซิร์ฟเวอร์ HTTP อยู่ใน การกำหนดค่าเซิร์ฟเวอร์ HTTP

วิธีการทำงาน

  1. เมื่อเริ่มทำงาน เซิร์ฟเวอร์จะดึง OpenAPI spec สาธารณะจาก {baseUrl}/api-json แล้วแปลงแต่ละการดำเนินการเป็นเครื่องมือ MCP พร้อมสคีมาข้อมูลนำเข้า Zod
  2. เครื่องมือที่เขียนขึ้นเองจะเพิ่มเวิร์กโฟลว์หลายขั้นตอนบน API เดียวกัน เช่น การแปลและพากย์เสียง Edit Dialogue การแสดงตัวอย่างเสียงพูด และการค้นหาค่าใช้จ่าย
  3. การเรียกใช้เครื่องมือแต่ละครั้งจะเป็นคำขอที่ผ่านการยืนยันตัวตนไปยัง API ของ sync. โดยใช้โทเค็น OAuth ของคุณ (บนโฮสต์) หรือคีย์ API (ภายในเครื่อง)

เมื่อใช้ stdio การดำเนินการ API สาธารณะรายการใหม่จะกลายเป็นเครื่องมือหลังจากเริ่มเซิร์ฟเวอร์ใหม่ เซิร์ฟเวอร์บนโฮสต์จะแสดงเฉพาะเครื่องมือในรายการที่อนุญาต ดังนั้นเครื่องมือใหม่บนโฮสต์จะเผยแพร่พร้อมกับรุ่นของรีโพซิทอรีนี้

การใช้งานแบบโปรแกรม

คุณยังใช้เซิร์ฟเวอร์เป็นไลบรารีได้ด้วย:

import { createSyncMcpServer, resolveConfig } from '@sync.so/mcp-server';

const config = resolveConfig({ apiKey: 'your-key' });
const server = await createSyncMcpServer(config);

การพัฒนา

การทดสอบแหล่งข้อมูล HTTPS ใช้คำสั่ง openssl ภายในเครื่องเพื่อสร้างข้อมูลระบุตัวตนทดสอบแบบ self-signed ที่มีอายุหนึ่งวัน ไฟล์ใบรับรองและคีย์ชั่วคราวจะถูกลบออกก่อนเริ่มการทดสอบ

# Install dependencies
pnpm install

# Build
pnpm run build

# Run tests
pnpm test

# Lint
pnpm run lint

# Type check
pnpm run typecheck

# Script tests (monitor, smoke check, pre-commit size check)
pnpm run test:scripts

การพัฒนาต้องใช้ Node 26 ขึ้นไป (.nvmrc); devEngines ใน package.json จะบังคับใช้ข้อกำหนดนี้เมื่อติดตั้ง pnpm install ติดตั้ง pre-commit hook ซึ่งจะเรียกใช้ Oxlint และ Oxfmt กับไฟล์ที่ stage ไว้ และบล็อกไฟล์ซอร์สที่ stage ไว้หากมีขนาดเกิน 5,000 โทเค็น (20,000 ไบต์) ไฟล์ที่มีขนาดเกินนี้อยู่แล้วจะได้รับการยกเว้นจนกว่าจะมีผู้แยกไฟล์

การทดสอบ HTTP Transport ภายในเครื่อง

หากต้องการทดสอบ HTTP transport (โฟลว์ OAuth) ภายในเครื่อง:

  1. คัดลอก .env.example ไปยัง .env แล้วกรอกค่า
  2. เริ่ม tunnel เพื่อเปิดให้เข้าถึง localhost:
    ngrok http 3002
    
  3. อัปเดต MCP_ISSUER_URL ใน .env ด้วย URL ของ ngrok
  4. เริ่มเซิร์ฟเวอร์:
    source .env
    node dist/cli.js --transport http --base-url $SYNC_BASE_URL --port 3002
    
  5. ตรวจสอบว่าทำงานได้:
    curl https://<ngrok-url>/health
    curl https://<ngrok-url>/.well-known/oauth-authorization-server
    

เมื่อการเข้าสู่ระบบ Studio แบบแยกต้องใช้เว็บพร็อกซีที่มี origin เดียวกัน ให้ตั้งค่า SYNC_OAUTH_AUTHORIZATION_URL เป็น URL /api-proxy/v2/oauth/authorize ของพร็อกซี โดย คง SYNC_BASE_URL ไว้ที่ตัวรับฟัง API แบบแยกโดยตรง การนำทางของเบราว์เซอร์ เท่านั้นที่ใช้เว็บพร็อกซี ส่วนการลงทะเบียน การแลกเปลี่ยนโค้ด การรีเฟรช การเพิกถอน userinfo และการเรียกใช้เครื่องมือจะใช้ API โดยตรง และยังคงใช้กำหนดเวลาเดิม การตรวจสอบ PKCE และการตรวจสอบไคลเอ็นต์แบบ confidential URL ที่ไม่บังคับนี้ต้องใช้ HTTP(S) และต้องไม่มี ข้อมูลรับรอง คิวรี หรือ fragment การติดตั้งใช้งานที่มีอยู่ไม่จำเป็นต้องตั้งค่าใหม่

  1. เพิ่ม https://<ngrok-url>/mcp เป็นตัวเชื่อมต่อแบบกำหนดเองใน Claude Web

เรียนรู้เพิ่มเติม

ใบอนุญาต

MIT