19 KiB
MCP Inspector দিয়ে ডিবাগিং
MCP Inspector হলো একটি গুরুত্বপূর্ণ ডিবাগিং টুল যা আপনাকে ইন্টারেক্টিভভাবে আপনার MCP সার্ভারগুলি টেস্ট ও সমস্যা সমাধান করতে সাহায্য করে, যার জন্য পূর্ণাঙ্গ AI হোস্ট অ্যাপ্লিকেশনের প্রয়োজন হয় না। একে ভাবুন "MCP এর জন্য Postman" হিসেবে — এটি একটি ভিজুয়াল ইন্টারফেস প্রদান করে যেটি দিয়ে অনুরোধ পাঠানো, প্রতিক্রিয়া দেখা এবং আপনার সার্ভার কিভাবে কাজ করছে তা বোঝা যায়।
কেন MCP Inspector ব্যবহার করবেন?
MCP সার্ভার তৈরি করার সময় আপনি প্রায়শই এই সমস্যাগুলোর সম্মুখীন হবেন:
- "আমার সার্ভার তো চলছে নাকি?" - Inspector সংযোগের অবস্থা দেখায়
- "আমার টুলগুলো সঠিকভাবে রেজিস্টার হয়েছে?" - Inspector সব উপলব্ধ টুল দেখায়
- "প্রতিক্রিয়ার ফরম্যাট কী?" - Inspector পূর্ণ JSON প্রতিক্রিয়া প্রদর্শন করে
- "এই টুলটা কেন কাজ করছে না?" - Inspector বিস্তারিত ত্রুটি বার্তা দেখায়
প্রয়োজনীয়তাসমূহ
- Node.js 18+ ইনস্টল থাকা
- npm (Node.js এর সাথে আসে)
- পরীক্ষার জন্য একটি MCP সার্ভার (দেখুন Module 3.1 - First Server)
ইনস্টলেশন
অপশন ১: npx দিয়ে চালান (দ্রুত পরীক্ষার জন্য সুপারিশকৃত)
npx @modelcontextprotocol/inspector
অপশন ২: গ্লোবালি ইনস্টল করুন
npm install -g @modelcontextprotocol/inspector
mcp-inspector
অপশন ৩: আপনার প্রজেক্টে যোগ করুন
cd your-mcp-server-project
npm install --save-dev @modelcontextprotocol/inspector
package.json এ যোগ করুন:
{
"scripts": {
"inspector": "mcp-inspector"
}
}
আপনার সার্ভারের সাথে সংযোগ স্থাপন
stdio সার্ভার (লোকাল প্রসেস)
যারা স্ট্যান্ডার্ড ইনপুট/আউটপুট এর মাধ্যমে যোগাযোগ করে তাদের জন্য:
# পাইথন সার্ভার
npx @modelcontextprotocol/inspector python -m your_server_module
# নোড.জেএস সার্ভার
npx @modelcontextprotocol/inspector node ./build/index.js
# পরিবেশ ভেরিয়েবল সহ
OPENAI_API_KEY=xxx npx @modelcontextprotocol/inspector python server.py
SSE/HTTP সার্ভার (নেটওয়ার্ক)
যারা HTTP সেবা হিসেবে চলছে তাদের জন্য:
-
প্রথমে আপনার সার্ভার চালু করুন:
python server.py # সার্ভার চলছে http://localhost:8080 এ -
Inspector চালু করুন এবং সংযোগ করুন:
npx @modelcontextprotocol/inspector --sse http://localhost:8080/sse
Inspector ইন্টারফেস ওভারভিউ
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কল করে - উপলভ্য প্রম্পট টেমপ্লেট দেখুন
একটি প্রম্পট পাওয়া
- একটি প্রম্পট নির্বাচন করুন
- প্রয়োজনীয় আর্গুমেন্ট পূরণ করুন
- Get 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"খুঁজুন - সময়: বড় দূরত্বগুলো পারফরম্যান্স সমস্যা নির্দেশ করতে পারে
- প্রোটোকল ভার্সন: সার্ভার ও ক্লায়েন্টের ভার্সন একই কিনা নিশ্চিত করুন
VS Code ইন্টিগ্রেশন
আপনি সরাসরি VS Code থেকে Inspector চালাতে পারেন:
launch.json ব্যবহার
.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..." এ আটকে যায়
চেকলিস্ট:
- ✅ সার্ভার কমান্ড সঠিক কি না?
- ✅ সব নির্ভরতা ইনস্টল করা আছে?
- ✅ সার্ভারের পথ আপেক্ষিক না পুরো পথ?
- ✅ প্রয়োজনীয় পরিবেশ ভেরিয়েবল সেট করা আছে?
ডিবাগ ধাপ:
# প্রথমে ম্যানুয়ালি সার্ভার পরীক্ষা করুন
python -c "import your_server_module; print('OK')"
# ইম্পোর্ট ত্রুটির জন্য পরীক্ষা করুন
python -m your_server_module 2>&1 | head -20
# নিশ্চিত করুন MCP SDK ইনস্টল করা হয়েছে
pip show mcp
পরিস্থিতি ২: টুলগুলো দেখা যাচ্ছে না
লক্ষণ: Tools ট্যাবে তালিকা খালি
সম্ভাব্য কারণ:
- সার্ভার শুরু করার সময় টুল রেজিস্টার হয়নি
- সার্ভার চালু হওয়ার পর ক্র্যাশ হয়েছে
tools/listহ্যান্ডলার খালি অ্যারে ফিরিয়ে দিচ্ছে
ডিবাগ ধাপ:
- মেসেজ লগে
tools/listএর প্রতিক্রিয়া দেখুন - টুল রেজিস্ট্রেশন কোডে লগিং যোগ করুন
- নিশ্চিত করুন
@mcp.tool()ডেকোরেটরগুলো আছে (Python)
পরিস্থিতি ৩: টুল ত্রুটি ফিরিয়ে দেয়
লক্ষণ: টুল কল ত্রুটি প্রতিক্রিয়া দেয়
ডিবাগ পদ্ধতি:
- ত্রুটি বার্তা মনোযোগ দিয়ে পড়ুন
- প্যারামিটার টাইপ স্কিমার সাথে মিল আছে কিনা দেখুন
- বিস্তারিত ত্রুটি বার্তা সহ try/catch যুক্ত করুন
- সার্ভার লগে স্ট্যাক ট্রেস খুঁজুন
উন্নত ত্রুটি ব্যবস্থাপনার উদাহরণ:
@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 সঠিক
- ✅ সার্ভারের রিসোর্স পড়ার অনুমতি আছে
- ✅ রিসোর্স কন্টেন্ট সঠিকভাবে ফেরত দেওয়া হচ্ছে
উন্নত Inspector ফিচারসমূহ
কাস্টম হেডার (SSE)
npx @modelcontextprotocol/inspector \
--sse http://localhost:8080/sse \
--header "Authorization: Bearer your-token"
বিস্তারিত লগিং
DEBUG=mcp* npx @modelcontextprotocol/inspector python server.py
সেশন রেকর্ডিং
Inspector পরবর্তী বিশ্লেষণের জন্য মেসেজ লগ রপ্তানি করতে পারে:
- মেসেজ প্যানেলে Export Log ক্লিক করুন
- JSON ফাইলটি সংরক্ষণ করুন
- ডিবাগিংয়ের জন্য টিমের সঙ্গে শেয়ার করুন
সেরা অনুশীলনসমূহ
- শুরুতেই ও নিয়মিত পরীক্ষা করুন - ডেভেলপমেন্টে Inspector ব্যবহার করুন, শুধু যখন সমস্যা হয় তখন নয়
- সহজ থেকে শুরু করুন - জটিল টুল কলের আগে মৌলিক সংযোগ পরীক্ষা করুন
- স্কিমা পরীক্ষা করুন - অনেক ত্রুটি প্যারামিটার টাইপ মিল না থাকার কারণে হয়
- ত্রুটি বার্তা পড়ুন - MCP ত্রুটি সাধারণত বর্ণনামূলক হয়
- Inspector খোলা রাখুন - ডেভেলপমেন্টে সমস্যা জাপটে ধরতে সাহায্য করে
পরবর্তী ধাপ
আপনি Module 3: Getting Started সমাপ্ত করেছেন! আপনার শেখা অব্যাহত রাখুন:
অতিরিক্ত রিসোর্সসমূহ
অস্বীকৃতি:
এই নথিটি AI অনুবাদ সেবা Co-op Translator ব্যবহার করে অনূদিত হয়েছে। আমরা যথাসাধ্য নির্ভুলতার চেষ্টা করি, কিন্তু দয়া করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা ভুল থাকতে পারে। মূল নথিটি তার নিজস্ব ভাষায়ই কর্তৃপক্ষ স্বীকৃত উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদের পরামর্শ দেওয়া হয়। এই অনুবাদের ব্যবহারে সৃষ্ট কোনও ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নয়।