tool use ของ Claude ไม่ใช่ webhook แบ็กเอนด์ของคุณส่งข้อความ Claude ตอบกลับ บางครั้งพร้อมคำขอให้เรียกเครื่องมือ โค้ดของคุณรันเครื่องมือแล้วส่งผลลัพธ์กลับ ทั้งหมดเกิดขึ้นผ่าน HTTPS ขาออกจากเครื่องของคุณ แล้วทำไมบทความนี้จึงพูดเรื่อง tunnel?
เพราะทันทีที่คุณสร้างอะไรที่ใช้งานจริงกับ Claude — เอเจนต์เขียนโค้ด ระบบอัตโนมัติด้านซัพพอร์ต เซิร์ฟเวอร์ MCP เวิร์กโฟลว์ยาว ๆ — คุณเริ่มต้องการการเชื่อมต่อขาเข้า สำหรับไคลเอนต์เบราว์เซอร์ สำหรับเซิร์ฟเวอร์ MCP ที่เปิดให้แอปอื่น สำหรับ webhook จากเครื่องมือภายนอกที่โมเดลเรียกใช้
tunnel ช่วยตรงไหนจริง ๆ
ฟรอนต์เอนด์เบราว์เซอร์สำหรับแอป Claude
รูปแบบเดียวกับ การตั้งค่า OpenAI Realtime ฟรอนต์เอนด์ของคุณเก็บคีย์ API ของ Anthropic ไม่ได้ จึงต้องคุยกับแบ็กเอนด์ ซึ่งคุยกับ Anthropic ฟรอนต์เอนด์ต้องการ HTTPS เพื่อให้การตอบแบบสตรีมแสดงผลสะอาด (บางเบราว์เซอร์ลดทอนการจัดการ SSE บน HTTP ธรรมดา) และแบ็กเอนด์ต้องการ HTTPS หากฟรอนต์เอนด์เป็น HTTPS tunnel จัดการให้ทั้งคู่
เซิร์ฟเวอร์ MCP ที่รันในเครื่อง
Model Context Protocol ให้ Claude (และไคลเอนต์อื่น) เชื่อมต่อกับเครื่องมือที่คุณเปิดเป็นเซิร์ฟเวอร์ MCP สำหรับเซิร์ฟเวอร์ MCP แบบ HTTP transport — ต่างจาก stdio — ไคลเอนต์ต้องเข้าถึงเซิร์ฟเวอร์ของคุณ หากคุณกำลังต้นแบบเซิร์ฟเวอร์ MCP และอยากทดสอบกับ Claude Desktop หรือไคลเอนต์รีโมตอื่น การเปิดเซิร์ฟเวอร์ MCP ในเครื่องผ่าน tunnel คือทางที่ง่ายที่สุด
callback ของ computer use
หากคุณใช้ computer use เบตาของ Claude และโมเดลโต้ตอบกับบริการที่ยิง webhook กลับมายังเครื่องของคุณ คุณก็อยู่ในดินแดน webhook รูปแบบเดียวกับผู้ให้บริการอื่น: จับ ส่งซ้ำ ตรวจสอบ (ถ้ามี)
สิ่งที่ tunnel ไม่ทำ
คุณไม่ต้องใช้ tunnel แค่เพื่อเรียก Claude จากสคริปต์ในเครื่อง curl https://api.anthropic.com/v1/messages ทำงานได้จากทุกเครื่อง SDK ของ Python และ TypeScript ก็ทำงานดี tool use เองเป็นการโต้ตอบขาออก — Claude ไม่ได้เรียกเครื่องของคุณเมื่ออยากใช้เครื่องมือ แต่โค้ดของคุณเป็นผู้เรียกตามคำตอบของ Claude
เรื่องนี้ทำให้บางคนงงในครั้งแรก รูปแบบคือ:
- โค้ดของคุณส่งข้อความผู้ใช้ไปยัง Claude พร้อมรายการเครื่องมือที่ใช้ได้
- Claude ตอบกลับ อาจมีบล็อก
tool_useอธิบายเครื่องมือที่จะเรียก - โค้ดของคุณ รันเครื่องมือกับระบบในเครื่องของคุณ
- โค้ดของคุณส่งผลลัพธ์เครื่องมือกลับไปยัง Claude เป็นข้อความต่อเนื่อง
- วนซ้ำจนเสร็จ
ทั้งห้าขั้นเกิดในโปรเซส Python หรือ TypeScript เดียว ไม่มีทราฟฟิกขาเข้า ไม่มี tunnel
เหตุผลที่แท้จริงว่าทำไม tunnel ช่วยเวิร์กโฟลว์ Claude
เหตุผลที่เราลงเอยด้วยการรัน tunnel ระหว่างพัฒนากับ Claude ไม่ใช่ตัวโมเดล แต่เป็นทุกอย่างรอบ ๆ มัน: แดชบอร์ดแสดงความคืบหน้าของเอเจนต์ ฟรอนต์เอนด์ที่สตรีมผลลัพธ์เครื่องมือ เซิร์ฟเวอร์ MCP ที่เปิดไว้ทดสอบ webhook จากเครื่องมือภายนอกที่เอเจนต์เรียก ("ส่งข้อความ Slack", "สร้าง issue ใน Linear") เอเจนต์จุดชนวนปฏิกิริยาลูกโซ่ และที่ไหนสักแห่งในห่วงโซ่นั้น บริการภายนอกก็อยากเข้าถึงเครื่องของคุณในที่สุด
การตั้งค่าลูปพัฒนาเซิร์ฟเวอร์ MCP
- สร้างเซิร์ฟเวอร์ MCP ด้วย HTTP transport
- รันในเครื่องที่พอร์ตที่คุณเลือก
npx portpreview 3000(หรือพอร์ตของคุณ)- ใน Claude Desktop หรือไคลเอนต์ MCP อื่น ตั้งค่า URL เซิร์ฟเวอร์รีโมตให้ชี้ไปยัง tunnel ของคุณ
- ออกคำสั่ง สังเกตการจับคำขอใน tunnel และการตอบกลับที่เซิร์ฟเวอร์ของคุณส่งคืน
หากเซิร์ฟเวอร์ MCP ของคุณเป็น stdio transport เรื่องนี้ไม่เกี่ยว — เซิร์ฟเวอร์ stdio สื่อสารผ่าน process pipe และอยู่ในเครื่องตามการออกแบบ
การตอบแบบสตรีมกับ tunnel
Claude สตรีมการตอบผ่าน SSE tunnel ต้องจัดการการตอบแบบสตรีมที่อยู่ยาวให้ถูกต้อง — ส่วนใหญ่ทำได้ แต่ HTTP proxy เก่าบางตัวบัฟเฟอร์การตอบแล้วปล่อยตอนจบ ซึ่งทำให้การสตรีมไร้ความหมาย PortPreview, Cloudflare และ ngrok จัดการ SSE โดยไม่บัฟเฟอร์ หากฟรอนต์เอนด์ได้รับการตอบทั้งก้อนหลังรอนาน แสดงว่า tunnel กำลังบัฟเฟอร์ นั่นเป็นปัญหาของ tunnel ไม่ใช่ของ Claude
การดีบักลูปเอเจนต์
ส่วนที่ยากที่สุดของการพัฒนา tool use กับ Claude ไม่ใช่ API แต่คือการเข้าใจว่าโมเดลตัดสินใจทำอะไรในแต่ละขั้น ล็อกทุกบล็อก tool_use ก่อนรัน ล็อกทุกผลลัพธ์เครื่องมือก่อนส่งคืน Claude หากคุณมี tunnel ระหว่างฟรอนต์เอนด์กับแบ็กเอนด์ การจับคำขอยังให้บันทึกข้อความผู้ใช้ด้วย — มีประโยชน์ในการเล่นซ้ำการทำงานของเอเจนต์โดยไม่ต้องพิมพ์พรอมป์ใหม่
ทิศทางต่อไป
อีโคซิสเต็ม tool use ของ Anthropic ขยับเร็ว — MCP, computer use, หน้าต่างบริบทยาวขึ้น, latency ต่ำลง รูปแบบ webhook จาก การดีบัก webhook ในเครื่อง และคณิตศาสตร์ลายเซ็นจาก คู่มือตรวจสอบลายเซ็น ใช้ได้เมื่อเครื่องมือภายนอกใดก็ตามที่เอเจนต์เรียกยิง callback กลับมายังเครื่องของคุณ
เข้าร่วมรายชื่อรอของ PortPreview เพื่อ tunnel ที่มีการจับ ส่งซ้ำ และการส่งต่อที่ปลอดภัยกับ SSE ในตัว