ไดเรกทอรีนี้ประกอบด้วยตัวอย่าง MCP client ที่สมบูรณ์และใช้งานได้ในภาษาการเขียนโปรแกรมต่างๆ แต่ละ client แสดงให้เห็นถึงฟังก์ชันการทำงานทั้งหมดที่อธิบายไว้ในบทแนะนำ README.md หลัก
- Transport: SSE (Server-Sent Events) ผ่าน HTTP
- เซิร์ฟเวอร์เป้าหมาย:
http://localhost:8080 - ฟีเจอร์:
- การเชื่อมต่อและการ ping
- การแสดงรายการเครื่องมือ
- การดำเนินการเครื่องคิดเลข (บวก ลบ คูณ หาร ความช่วยเหลือ)
- การจัดการข้อผิดพลาดและการดึงผลลัพธ์
วิธีการรัน:
# Ensure your MCP server is running on localhost:8080
javac client_example_java.java
java client_example_java- Transport: Stdio (Standard Input/Output)
- เซิร์ฟเวอร์เป้าหมาย: เซิร์ฟเวอร์ MCP .NET ในเครื่องผ่าน dotnet run
- ฟีเจอร์:
- การเริ่มต้นเซิร์ฟเวอร์อัตโนมัติผ่าน stdio transport
- การแสดงรายการเครื่องมือและทรัพยากร
- การดำเนินการเครื่องคิดเลข
- การแปลงผลลัพธ์ JSON
- การจัดการข้อผิดพลาดอย่างครอบคลุม
วิธีการรัน:
dotnet run- Transport: Stdio (Standard Input/Output)
- เซิร์ฟเวอร์เป้าหมาย: เซิร์ฟเวอร์ MCP Node.js ในเครื่อง
- ฟีเจอร์:
- รองรับโปรโตคอล MCP อย่างเต็มรูปแบบ
- การดำเนินการเครื่องมือ ทรัพยากร และ prompt
- การดำเนินการเครื่องคิดเลข
- การอ่านทรัพยากรและการดำเนินการ prompt
- การจัดการข้อผิดพลาดที่แข็งแกร่ง
วิธีการรัน:
# First compile TypeScript (if needed)
npm run build
# Then run the client
npm run client
# or
node client_example_typescript.js- Transport: Stdio (Standard Input/Output)
- เซิร์ฟเวอร์เป้าหมาย: เซิร์ฟเวอร์ MCP Python ในเครื่อง
- ฟีเจอร์:
- รูปแบบ async/await สำหรับการดำเนินการ
- การค้นพบเครื่องมือและทรัพยากร
- การทดสอบการดำเนินการเครื่องคิดเลข
- การอ่านเนื้อหาทรัพยากร
- การจัดระเบียบแบบใช้คลาส
วิธีการรัน:
python client_example_python.pyการใช้งาน client แต่ละตัวแสดงให้เห็นถึง:
-
การจัดการการเชื่อมต่อ
- การเชื่อมต่อกับเซิร์ฟเวอร์ MCP
- การจัดการข้อผิดพลาดในการเชื่อมต่อ
- การทำความสะอาดและการจัดการทรัพยากรอย่างเหมาะสม
-
การค้นพบเซิร์ฟเวอร์
- การแสดงรายการเครื่องมือที่มีอยู่
- การแสดงรายการทรัพยากรที่มีอยู่ (ถ้ารองรับ)
- การแสดงรายการ prompt ที่มีอยู่ (ถ้ารองรับ)
-
การเรียกใช้เครื่องมือ
- การดำเนินการเครื่องคิดเลขพื้นฐาน (บวก ลบ คูณ หาร)
- คำสั่งช่วยเหลือสำหรับข้อมูลเซิร์ฟเวอร์
- การส่งผ่านอาร์กิวเมนต์และการจัดการผลลัพธ์อย่างเหมาะสม
-
การจัดการข้อผิดพลาด
- ข้อผิดพลาดในการเชื่อมต่อ
- ข้อผิดพลาดในการดำเนินการเครื่องมือ
- การจัดการความล้มเหลวอย่างราบรื่นและการแจ้งเตือนผู้ใช้
-
การประมวลผลผลลัพธ์
- การดึงเนื้อหาข้อความจากการตอบกลับ
- การจัดรูปแบบผลลัพธ์ให้อ่านง่าย
- การจัดการรูปแบบการตอบกลับที่แตกต่างกัน
ก่อนที่จะรัน client เหล่านี้ ตรวจสอบให้แน่ใจว่าคุณมี:
- เซิร์ฟเวอร์ MCP ที่ทำงานอยู่ (จาก
../01-first-server/) - ติดตั้ง dependencies ที่จำเป็น สำหรับภาษาที่คุณเลือก
- การเชื่อมต่อเครือข่ายที่เหมาะสม (สำหรับ transport ที่ใช้ HTTP)
| ภาษา | Transport | การเริ่มต้นเซิร์ฟเวอร์ | รูปแบบ Async | ไลบรารีหลัก |
|---|---|---|---|---|
| Java | SSE/HTTP | ภายนอก | Sync | WebFlux, MCP SDK |
| C# | Stdio | อัตโนมัติ | Async/Await | .NET MCP SDK |
| TypeScript | Stdio | อัตโนมัติ | Async/Await | Node MCP SDK |
| Python | Stdio | อัตโนมัติ | AsyncIO | Python MCP SDK |
| Rust | Stdio | อัตโนมัติ | Async/Await | Rust MCP SDK, Tokio |
หลังจากสำรวจตัวอย่าง client เหล่านี้:
- ปรับแต่ง client เพื่อเพิ่มฟีเจอร์หรือการดำเนินการใหม่
- สร้างเซิร์ฟเวอร์ของคุณเอง และทดสอบกับ client เหล่านี้
- ทดลองใช้ transport ต่างๆ (SSE กับ Stdio)
- สร้างแอปพลิเคชันที่ซับซ้อนยิ่งขึ้น ที่ผสานรวมฟังก์ชัน MCP
- การเชื่อมต่อถูกปฏิเสธ: ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ MCP กำลังทำงานอยู่บนพอร์ต/เส้นทางที่คาดหวัง
- ไม่พบโมดูล: ติดตั้ง MCP SDK ที่จำเป็นสำหรับภาษาของคุณ
- การอนุญาตถูกปฏิเสธ: ตรวจสอบสิทธิ์ไฟล์สำหรับ stdio transport
- ไม่พบเครื่องมือ: ตรวจสอบว่าเซิร์ฟเวอร์มีเครื่องมือที่คาดหวัง
- เปิดใช้งานการล็อกแบบละเอียด ใน MCP SDK ของคุณ
- ตรวจสอบบันทึกเซิร์ฟเวอร์ เพื่อดูข้อความแสดงข้อผิดพลาด
- ตรวจสอบชื่อและลายเซ็นของเครื่องมือ ให้ตรงกันระหว่าง client และเซิร์ฟเวอร์
- ทดสอบด้วย MCP Inspector ก่อนเพื่อยืนยันฟังก์ชันเซิร์ฟเวอร์
ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่แม่นยำ เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่เป็นมืออาชีพ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดซึ่งเกิดจากการใช้การแปลนี้