14 KiB
পরীক্ষণ এবং ডিবাগিং
আপনার MCP সার্ভার পরীক্ষণ শুরু করার আগে, উপলব্ধ টুলস এবং ডিবাগিং এর জন্য সর্বোত্তম অনুশীলনগুলি বোঝা গুরুত্বপূর্ণ। কার্যকর পরীক্ষণ নিশ্চিত করে যে আপনার সার্ভার প্রত্যাশিত আচরণ করে এবং আপনাকে দ্রুত সমস্যা সনাক্ত এবং সমাধান করতে সাহায্য করে। নিম্নলিখিত বিভাগে MCP বাস্তবায়নের বৈধতা যাচাই করার প্রস্তাবিত পদ্ধতিগুলি বর্ণনা করা হয়েছে।
ওভারভিউ
এই পাঠে আপনি শিখবেন সঠিক পরীক্ষণ পদ্ধতি নির্বাচন কিভাবে করবেন এবং সবচেয়ে কার্যকর পরীক্ষণ টুল কোনটি।
শেখার লক্ষ্যসমূহ
এই পাঠ শেষ হলে, আপনি সক্ষম হবেন:
- বিভিন্ন পরীক্ষণ পদ্ধতি বর্ণনা করতে।
- আপনার কোড কার্যকরভাবে পরীক্ষণের জন্য বিভিন্ন টুল ব্যবহার করতে।
MCP সার্ভার পরীক্ষা
MCP আপনাকে সাহায্য করার জন্য টুল সরবরাহ করে যাতে আপনি আপনার সার্ভার পরীক্ষা এবং ডিবাগ করতে পারেন:
- MCP Inspector: একটি কমান্ড লাইন টুল যা CLI টুল হিসেবে এবং ভিজ্যুয়াল টুল হিসেবে চালানো যায়।
- ম্যানুয়াল পরীক্ষণ: আপনি curl মত একটি টুল ব্যবহার করে ওয়েব রিকোয়েস্ট চালাতে পারেন, তবে যে কোন HTTP চালানোর সক্ষম টুল প্রদান করবে।
- ইউনিট পরীক্ষণ: আপনি আপনার পছন্দসই পরীক্ষণ ফ্রেমওয়ার্ক ব্যবহার করে সার্ভার ও ক্লায়েন্ট উভয়ের ফিচার পরীক্ষা করতে পারেন।
MCP Inspector ব্যবহার
আমরা এই টুলের ব্যবহার পূর্ববর্তী পাঠে বর্ণনা করেছি, তবে চলুন এটিকে উচ্চ স্তরে একটু আলোচনা করি। এটি Node.js এ নির্মিত একটি টুল এবং আপনি এটি ব্যবহার করতে পারেন npx এক্সিকিউটেবল কল করে, যা টুলটি অস্থায়ীভাবে ডাউনলোড ও ইনস্টল করবে এবং আপনার রিকোয়েস্ট রান শেষ হলে নিজেকে পরিষ্কার করবে।
MCP Inspector আপনাকে সাহায্য করে:
- সার্ভারের সক্ষমতা আবিষ্কার করুন: স্বয়ংক্রিয়ভাবে বিদ্যমান রিসোর্স, টুল এবং প্রম্পট সনাক্ত করুন
- টুল নির্বাহ পরীক্ষা করুন: বিভিন্ন প্যারামিটার পরীক্ষা করুন এবং রিয়েল-টাইমে প্রতিক্রিয়া দেখুন
- সার্ভার মেটাডেটা দেখুন: সার্ভার তথ্য, স্কিমা, এবং কনফিগারেশন পরীক্ষা করুন
টুলটি একটি সাধারণ রানের উদাহরণ দেখাচ্ছে:
npx @modelcontextprotocol/inspector node build/index.js
উপরের কমান্ডটি একটি MCP এবং এর ভিজ্যুয়াল ইন্টারফেস শুরু করে এবং আপনার ব্রাউজারে একটি স্থানীয় ওয়েব ইন্টারফেস লঞ্চ করে। আপনি একটি ড্যাশবোর্ড দেখতে পাবেন যেখানে আপনার নিবন্ধিত MCP সার্ভার, তাদের উপলব্ধ টুল, রিসোর্স এবং প্রম্পট প্রদর্শিত থাকবে। ইন্টারফেসটি আপনাকে ইন্টারঅ্যাকটিভভাবে টুল কার্যক্রম পরীক্ষা, সার্ভার মেটাডেটা পরিদর্শন এবং রিয়েল-টাইম প্রতিক্রিয়া দেখার সুযোগ দেয়, যা আপনার MCP সার্ভার বাস্তবায়ন যাচাই এবং ডিবাগ করা সহজ করে।
আপনি এই টুল CLI মোডেও চালাতে পারেন যেখানে আপনি --cli এট্রিবিউট যোগ করবেন। এখানে "CLI" মোডে টুল চালানোর একটি উদাহরণ দেওয়া হয়েছে যা সার্ভারের সব টুল তালিকাভুক্ত করে:
npx @modelcontextprotocol/inspector --cli node build/index.js --method tools/list
ম্যানুয়াল পরীক্ষণ
সার্ভারের সক্ষমতা পরীক্ষা করার জন্য Inspector টুল চালানোর পাশাপাশি, আরেকটি অনুরূপ পদ্ধতি হলো এমন একটি ক্লায়েন্ট চালানো যা HTTP ব্যবহার করতে সক্ষম, যেমন curl।
curl ব্যবহার করে, আপনি সরাসরি MCP সার্ভার HTTP অনুরোধ ব্যবহার করে পরীক্ষা করতে পারেন:
# উদাহরণ: সার্ভার মেটাডেটা পরীক্ষা
curl http://localhost:3000/v1/metadata
# উদাহরণ: একটি সরঞ্জাম চালান
curl -X POST http://localhost:3000/v1/tools/execute \
-H "Content-Type: application/json" \
-d '{"name": "calculator", "parameters": {"expression": "2+2"}}'
উপরের curl উদাহরণ থেকে আপনি দেখতে পাচ্ছেন, আপনি POST অনুরোধ ব্যবহার করে একটি টুল কল করেন যেখানে পে লোড হিসাবে টুলের নাম এবং তার প্যারামিটার সহ পাঠানো হয়। আপনি এমন পদ্ধতি ব্যবহার করুন যা আপনার জন্য সবচেয়ে উপযুক্ত। সাধারণত CLI টুলগুলি ব্যবহার করতে দ্রুত এবং স্ক্রিপ্ট করার জন্য উপযুক্ত, যা CI/CD পরিবেশে উপকারী হতে পারে।
ইউনিট পরীক্ষণ
আপনার টুল এবং রিসোর্সের জন্য ইউনিট টেস্ট তৈরি করুন যাতে তারা প্রত্যাশা অনুযায়ী কাজ করে। এখানে কিছু উদাহরণ টেস্ট কোড দেয়া হয়েছে।
import pytest
from mcp.server.fastmcp import FastMCP
from mcp.shared.memory import (
create_connected_server_and_client_session as create_session,
)
# পুরো মডিউলকে অ্যাসিঙ্ক টেস্টের জন্য চিহ্নিত করুন
pytestmark = pytest.mark.anyio
async def test_list_tools_cursor_parameter():
"""Test that the cursor parameter is accepted for list_tools.
Note: FastMCP doesn't currently implement pagination, so this test
only verifies that the cursor parameter is accepted by the client.
"""
server = FastMCP("test")
# একটি জোড়া টেস্ট টুল তৈরি করুন
@server.tool(name="test_tool_1")
async def test_tool_1() -> str:
"""First test tool"""
return "Result 1"
@server.tool(name="test_tool_2")
async def test_tool_2() -> str:
"""Second test tool"""
return "Result 2"
async with create_session(server._mcp_server) as client_session:
# কার্সর প্যারামিটার ছাড়া টেস্ট করুন (বর্জিত)
result1 = await client_session.list_tools()
assert len(result1.tools) == 2
# কার্সর=None দিয়ে টেস্ট করুন
result2 = await client_session.list_tools(cursor=None)
assert len(result2.tools) == 2
# স্ট্রিং হিসেবে কার্সর দিয়ে টেস্ট করুন
result3 = await client_session.list_tools(cursor="some_cursor_value")
assert len(result3.tools) == 2
# খালি স্ট্রিং কার্সর দিয়ে টেস্ট করুন
result4 = await client_session.list_tools(cursor="")
assert len(result4.tools) == 2
উপরের কোডটি নিম্নলিখিত কাজগুলো করে:
- pytest ফ্রেমওয়ার্ক ব্যবহার করে, যা আপনাকে ফাংশন হিসাবে টেস্ট তৈরি করতে এবং assert বিবৃতি ব্যবহার করতে দেয়।
- দুইটি ভিন্ন টুল সহ একটি MCP সার্ভার তৈরি করে।
assertস্টেটমেন্ট ব্যবহার করে নিশ্চিত করে যে নির্দিষ্ট শর্ত পূরণ হয়েছে।
উপরের ফাইল অনুযায়ী, আপনি নিজের সার্ভার পরীক্ষণ করতে পারেন যাতে সক্ষমতাগুলি যথাযথ ভাবে তৈরি হয়।
সব প্রধান SDK তে অনুরূপ পরীক্ষণ অংশ রয়েছে যাতে আপনি আপনার পছন্দের রানটাইম অনুযায়ী মানিয়ে নিতে পারেন।
নমুনা
অতিরিক্ত সম্পদসমূহ
পরবর্তী কি
- পরবর্তী: ডিপ্লয়মেন্ট
অস্বীকৃতি: এই নথিটি AI অনুবাদ পরিষেবা Co-op Translator ব্যবহার করে অনূদিত হয়েছে। আমরা সঠিকতার জন্য চেষ্টা করি, তবে দয়া করে জানুন যে স্বয়ংক্রিয় অনুবাদে ভুল বা অপ্রাসঙ্গিকতা থাকতে পারে। মূল নথিটি তার নিজস্ব ভাষায় কর্তৃপক্ষপূর্ণ উৎস হিসাবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে উদ্ভূত কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই।
