MCP Inspector เป็นเครื่องมือดีบักที่จำเป็น ที่ช่วยให้คุณทดสอบและแก้ไขปัญหาเซิร์ฟเวอร์ MCP ของคุณอย่างโต้ตอบได้โดยไม่ต้องใช้งานโฮสต์ AI แบบเต็มรูปแบบ คิดว่าเป็น "Postman สำหรับ MCP" - มันให้ส่วนติดต่อแบบภาพเพื่อส่งคำขอ ดูการตอบกลับ และเข้าใจพฤติกรรมของเซิร์ฟเวอร์คุณ
เมื่อสร้างเซิร์ฟเวอร์ MCP คุณมักจะพบกับความท้าทายเหล่านี้:
- "เซิร์ฟเวอร์ของฉันกำลังทำงานอยู่หรือไม่?" - Inspector แสดงสถานะการเชื่อมต่อ
- "เครื่องมือของฉันถูกลงทะเบียนอย่างถูกต้องหรือไม่?" - Inspector แสดงรายการเครื่องมือที่มีทั้งหมด
- "รูปแบบการตอบกลับเป็นอย่างไร?" - Inspector แสดงการตอบกลับ JSON เต็มรูปแบบ
- "ทำไมเครื่องมือนี้ถึงไม่ทำงาน?" - Inspector แสดงข้อความข้อผิดพลาดอย่างละเอียด
- ติดตั้ง Node.js 18 ขึ้นไป
- npm (มากับ Node.js)
- เซิร์ฟเวอร์ MCP สำหรับทดสอบ (ดู Module 3.1 - First Server)
npx @modelcontextprotocol/inspectornpm install -g @modelcontextprotocol/inspector
mcp-inspectorcd your-mcp-server-project
npm install --save-dev @modelcontextprotocol/inspectorเพิ่มใน package.json:
{
"scripts": {
"inspector": "mcp-inspector"
}
}สำหรับเซิร์ฟเวอร์ที่สื่อสารผ่าน standard input/output:
# เซิร์ฟเวอร์ Python
npx @modelcontextprotocol/inspector python -m your_server_module
# เซิร์ฟเวอร์ Node.js
npx @modelcontextprotocol/inspector node ./build/index.js
# พร้อมตัวแปรแวดล้อม
OPENAI_API_KEY=xxx npx @modelcontextprotocol/inspector python server.pyสำหรับเซิร์ฟเวอร์ที่รันเป็นบริการ HTTP:
-
เริ่มเซิร์ฟเวอร์ก่อน:
python server.py # เซิร์ฟเวอร์กำลังทำงานที่ http://localhost:8080 -
เปิด Inspector และเชื่อมต่อ:
npx @modelcontextprotocol/inspector --sse http://localhost:8080/sse
เมื่อเปิด Inspector คุณจะเห็นอินเทอร์เฟซเว็บ (ปกติที่ http://localhost:5173):
┌─────────────────────────────────────────────────────────────┐
│ MCP Inspector [Connected ✅] │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 🔧 Tools │ │ 📄 Resources│ │ 💬 Prompts │ │
│ │ (3) │ │ (2) │ │ (1) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ 📋 Message Log │ │
│ │ ─────────────────────────────────────────────────── │ │
│ │ → initialize │ │
│ │ ← initialized (server info) │ │
│ │ → tools/list │ │
│ │ ← tools (3 tools) │ │
│ └───────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
- คลิกแท็บ Tools
- Inspector เรียกใช้คำสั่ง
tools/listอัตโนมัติ - คุณจะเห็นเครื่องมือทั้งหมดที่ลงทะเบียนพร้อม:
- ชื่อเครื่องมือ
- คำอธิบาย
- สคีมาของอินพุต (พารามิเตอร์)
- เลือกเครื่องมือจากรายการ
- กรอกพารามิเตอร์ที่จำเป็นในฟอร์ม
- คลิก Run Tool
- ดูผลลัพธ์ตอบกลับในแผงผลลัพธ์
ตัวอย่าง: การทดสอบเครื่องคิดเลข
Tool: add
Parameters:
a: 25
b: 17
Response:
{
"content": [
{
"type": "text",
"text": "42"
}
]
}
เมื่อเครื่องมือไม่ทำงาน Inspector จะแสดง:
Error Response:
{
"error": {
"code": -32602,
"message": "Invalid params: 'b' is required"
}
}
รหัสข้อผิดพลาดที่พบบ่อย:
| รหัส | ความหมาย |
|---|---|
| -32700 | ข้อผิดพลาดการวิเคราะห์ (JSON ไม่ถูกต้อง) |
| -32600 | คำขอไม่ถูกต้อง |
| -32601 | ไม่พบเมธอด |
| -32602 | พารามิเตอร์ไม่ถูกต้อง |
| -32603 | ข้อผิดพลาดภายใน |
- คลิกแท็บ Resources
- Inspector เรียก
resources/list - คุณจะเห็น:
- URI ของทรัพยากร
- ชื่อและคำอธิบาย
- ประเภท MIME
- เลือกทรัพยากร
- คลิก Read Resource
- ดูเนื้อหาที่ส่งกลับมา
ตัวอย่างผลลัพธ์:
Resource: file:///config/settings.json
Content-Type: application/json
{
"config": {
"debug": true,
"maxConnections": 10
}
}
- คลิกแท็บ Prompts
- Inspector เรียก
prompts/list - ดูเทมเพลต prompt ที่มีให้
- เลือก prompt
- กรอกอาร์กิวเมนต์ที่จำเป็น
- คลิก Get Prompt
- ดูข้อความ prompt ที่เรนเดอร์แล้ว
บันทึกข้อความแสดงข้อความโปรโทคอล MCP ทั้งหมด:
14:32:01 → {"jsonrpc":"2.0","id":1,"method":"initialize",...}
14:32:01 ← {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-11-25",...}}
14:32:02 → {"jsonrpc":"2.0","id":2,"method":"tools/list"}
14:32:02 ← {"jsonrpc":"2.0","id":2,"result":{"tools":[...]}}
14:32:05 → {"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"add",...}}
14:32:05 ← {"jsonrpc":"2.0","id":3,"result":{"content":[...]}}
- คู่คำขอ/ตอบกลับ: ทุก
→ควรมีคู่← - ข้อความผิดพลาด: มองหาคำว่า
"error"ในการตอบกลับ - เวลาที่เกิดขึ้น: ช่องว่างใหญ่ ๆ อาจบ่งชี้ปัญหาด้านประสิทธิภาพ
- เวอร์ชันโปรโตคอล: ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์และไคลเอนต์ตรงกัน
คุณสามารถรัน Inspector ได้โดยตรงจาก VS Code:
เพิ่มใน .vscode/launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug with MCP Inspector",
"type": "node",
"request": "launch",
"runtimeExecutable": "npx",
"runtimeArgs": [
"@modelcontextprotocol/inspector",
"python",
"${workspaceFolder}/server.py"
],
"console": "integratedTerminal"
},
{
"name": "Debug SSE Server with Inspector",
"type": "chrome",
"request": "launch",
"url": "http://localhost:5173",
"preLaunchTask": "Start MCP Inspector"
}
]
}เพิ่มใน .vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "Start MCP Inspector",
"type": "shell",
"command": "npx @modelcontextprotocol/inspector node ${workspaceFolder}/build/index.js",
"isBackground": true,
"problemMatcher": {
"pattern": {
"regexp": "^$"
},
"background": {
"activeOnStart": true,
"beginsPattern": "Inspector",
"endsPattern": "listening"
}
}
}
]
}อาการ: Inspector แสดง "Disconnected" หรือค้างที่ "Connecting..."
เช็คลิสต์:
- ✅ คำสั่งเซิร์ฟเวอร์ถูกต้องหรือไม่?
- ✅ ติดตั้ง dependencies ครบถ้วนหรือไม่?
- ✅ เส้นทางเซิร์ฟเวอร์เป็นแบบ absolute หรือสัมพันธ์กับโฟลเดอร์ปัจจุบันหรือไม่?
- ✅ ตัวแปรสภาพแวดล้อมที่จำเป็นถูกตั้งค่าหรือไม่?
ขั้นตอนแก้ไขปัญหา:
# ทดสอบเซิร์ฟเวอร์ด้วยตนเองก่อน
python -c "import your_server_module; print('OK')"
# ตรวจสอบข้อผิดพลาดในการนำเข้า
python -m your_server_module 2>&1 | head -20
# ยืนยันว่าติดตั้ง MCP SDK แล้ว
pip show mcpอาการ: แท็บเครื่องมือแสดงรายการว่างเปล่า
สาเหตุที่เป็นไปได้:
- เครื่องมือไม่ได้ลงทะเบียนในขั้นตอนเริ่มต้นเซิร์ฟเวอร์
- เซิร์ฟเวอร์ล่มหลังจากเริ่มทำงาน
- ตัวจัดการ
tools/listส่งคืนอาร์เรย์ว่าง
ขั้นตอนแก้ไขปัญหา:
- ตรวจสอบบันทึกข้อความสำหรับการตอบกลับ
tools/list - เพิ่มการบันทึกในโค้ดลงทะเบียนเครื่องมือของคุณ
- ตรวจสอบว่ามีตัวตกแต่ง
@mcp.tool()(ใน Python)
อาการ: การเรียกเครื่องมือส่งคืนการตอบกลับข้อผิดพลาด
วิธีดีบัก:
- อ่านข้อความข้อผิดพลาดอย่างละเอียด
- ตรวจสอบชนิดพารามิเตอร์ให้ตรงกับสคีมา
- เพิ่ม try/catch พร้อมข้อความข้อผิดพลาดที่ละเอียด
- ตรวจสอบบันทึกเซิร์ฟเวอร์สำหรับ stack trace
ตัวอย่างการจัดการข้อผิดพลาดที่ดีกว่า:
@mcp.tool()
async def my_tool(param1: str, param2: int) -> str:
try:
# ลอจิกของเครื่องมือนี้อยู่ที่นี่
result = process(param1, param2)
return str(result)
except ValueError as e:
raise McpError(f"Invalid parameter: {e}")
except Exception as e:
raise McpError(f"Tool failed: {type(e).__name__}: {e}")อาการ: ทรัพยากรส่งคืนแต่เนื้อหาว่างเปล่าหรือเป็น null
เช็คลิสต์:
- ✅ เส้นทางไฟล์หรือ URI ถูกต้องหรือไม่
- ✅ เซิร์ฟเวอร์มีสิทธิ์อ่านทรัพยากรหรือไม่
- ✅ เนื้อหาทรัพยากรถูกส่งคืนอย่างถูกต้องหรือไม่
npx @modelcontextprotocol/inspector \
--sse http://localhost:8080/sse \
--header "Authorization: Bearer your-token"DEBUG=mcp* npx @modelcontextprotocol/inspector python server.pyInspector สามารถส่งออกบันทึกข้อความเพื่อนำไปวิเคราะห์ภายหลัง:
- คลิก Export Log ในแผงข้อความ
- บันทึกไฟล์ JSON
- แชร์กับสมาชิกทีมเพื่อดีบัก
- ทดสอบตั้งแต่เนิ่นๆ และบ่อยครั้ง - ใช้ Inspector ในระหว่างพัฒนา ไม่ใช่แค่เมื่อเกิดปัญหา
- เริ่มต้นง่ายๆ - ทดสอบการเชื่อมต่อพื้นฐานก่อนเรียกใช้เครื่องมือซับซ้อน
- ตรวจสอบสคีมา - ข้อผิดพลาดหลายอย่างมาจากชนิดพารามิเตอร์ไม่ตรงกัน
- อ่านข้อความข้อผิดพลาด - ข้อผิดพลาด MCP มักมีคำอธิบายที่ชัดเจน
- เปิด Inspector ไว้เสมอ - ช่วยจับปัญหาได้ระหว่างพัฒนา
คุณได้ทำครบ Module 3: Getting Started แล้ว! เรียนรู้ต่อได้ที่:
ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้ความถูกต้องสูงสุด โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความคลาดเคลื่อน เอกสารต้นฉบับในภาษาต้นทางควรถูกพิจารณาเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลโดยนักแปลมืออาชีพ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้