12 KiB
Δοκιμή και Αντιμετώπιση Σφαλμάτων
Πριν ξεκινήσετε τη δοκιμή του MCP διακομιστή σας, είναι σημαντικό να κατανοήσετε τα διαθέσιμα εργαλεία και τις βέλτιστες πρακτικές για την αντιμετώπιση σφαλμάτων. Η αποτελεσματική δοκιμή διασφαλίζει ότι ο διακομιστής σας συμπεριφέρεται όπως αναμένεται και σας βοηθά να εντοπίσετε και να επιλύσετε γρήγορα προβλήματα. Η ακόλουθη ενότητα περιγράφει προτεινόμενες προσεγγίσεις για την επικύρωση της υλοποίησης του MCP σας.
Επισκόπηση
Αυτό το μάθημα καλύπτει τον τρόπο επιλογής της κατάλληλης προσέγγισης δοκιμής και του πιο αποτελεσματικού εργαλείου δοκιμής.
Στόχοι Μάθησης
Στο τέλος αυτού του μαθήματος, θα μπορείτε να:
- Περιγράφετε διάφορες προσεγγίσεις για δοκιμή.
- Χρησιμοποιείτε διαφορετικά εργαλεία για αποτελεσματική δοκιμή του κώδικά σας.
Δοκιμή MCP Διακομιστών
Το MCP παρέχει εργαλεία για να σας βοηθήσει να δοκιμάσετε και να αποσφαλματώσετε τους διακομιστές σας:
- MCP Inspector: Εργαλείο γραμμής εντολών που μπορεί να εκτελεστεί τόσο ως εργαλείο CLI όσο και ως οπτικό εργαλείο.
- Χειροκίνητη δοκιμή: Μπορείτε να χρησιμοποιήσετε ένα εργαλείο όπως το curl για να εκτελέσετε αιτήματα web, αλλά οποιοδήποτε εργαλείο μπορεί να τρέξει HTTP είναι κατάλληλο.
- Μονάδα Δοκιμής: Είναι δυνατή η χρήση του προτιμώμενου πλαισίου δοκιμών σας για να δοκιμάσετε τις λειτουργίες τόσο του διακομιστή όσο και του πελάτη.
Χρήση του MCP Inspector
Έχουμε περιγράψει τη χρήση αυτού του εργαλείου σε προηγούμενα μαθήματα, αλλά ας το αναφέρουμε σε γενικές γραμμές. Είναι ένα εργαλείο φτιαγμένο σε Node.js και μπορείτε να το χρησιμοποιήσετε καλώντας το εκτελέσιμο npx που θα κατεβάσει και θα εγκαταστήσει προσωρινά το εργαλείο και θα καθαρίσει μετά την εκτέλεση του αιτήματός σας.
Ο MCP Inspector σας βοηθά να:
- Ανακαλύψετε Δυνατότητες Διακομιστή: Αυτόματος εντοπισμός διαθέσιμων πόρων, εργαλείων και προτροπών
- Δοκιμάσετε Εκτέλεση Εργαλείων: Δοκιμάστε διαφορετικές παραμέτρους και δείτε τις απαντήσεις σε πραγματικό χρόνο
- Προβάλετε Μεταδεδομένα Διακομιστή: Εξετάστε πληροφορίες διακομιστή, σχήματα και διαμορφώσεις
Μια τυπική εκτέλεση του εργαλείου φαίνεται ως εξής:
npx @modelcontextprotocol/inspector node build/index.js
Η παραπάνω εντολή ξεκινά ένα MCP και το οπτικό του περιβάλλον και ανοίγει μια τοπική διεπαφή web στον περιηγητή σας. Μπορείτε να περιμένετε να δείτε έναν πίνακα ελέγχου που εμφανίζει τους καταχωρημένους 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.
Μονάδα Δοκιμής
Δημιουργήστε unit tests για τα εργαλεία και τους πόρους σας για να διασφαλίσετε ότι λειτουργούν όπως αναμένεται. Ακολουθεί ένα παράδειγμα κώδικα δοκιμής.
import pytest
from mcp.server.fastmcp import FastMCP
from mcp.shared.memory import (
create_connected_server_and_client_session as create_session,
)
# Σημειώστε ολόκληρο το module για ασύγχρονα τεστ
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:
# Δοκιμή χωρίς παράμετρο cursor (παραλήφθηκε)
result1 = await client_session.list_tools()
assert len(result1.tools) == 2
# Δοκιμή με cursor=None
result2 = await client_session.list_tools(cursor=None)
assert len(result2.tools) == 2
# Δοκιμή με cursor ως συμβολοσειρά
result3 = await client_session.list_tools(cursor="some_cursor_value")
assert len(result3.tools) == 2
# Δοκιμή με κενή συμβολοσειρά cursor
result4 = await client_session.list_tools(cursor="")
assert len(result4.tools) == 2
Ο παραπάνω κώδικας κάνει τα εξής:
- Χρησιμοποιεί το πλαίσιο pytest που σας επιτρέπει να δημιουργείτε δοκιμές ως συναρτήσεις και να χρησιμοποιείτε δηλώσεις assert.
- Δημιουργεί έναν MCP Διακομιστή με δύο διαφορετικά εργαλεία.
- Χρησιμοποιεί τη δήλωση
assertγια να ελέγξει ότι πληρούνται ορισμένες προϋποθέσεις.
Ρίξτε μια ματιά στο πλήρες αρχείο εδώ
Βάσει του παραπάνω αρχείου, μπορείτε να δοκιμάσετε τον δικό σας διακομιστή για να διασφαλίσετε ότι οι δυνατότητες δημιουργούνται όπως πρέπει.
Όλα τα σημαντικά SDK έχουν παρόμοιες ενότητες δοκιμών ώστε να μπορείτε να προσαρμοστείτε στο προτιμώμενο περιβάλλον εκτέλεσης.
Δείγματα
Πρόσθετοι Πόροι
Τι Ακολουθεί
- Επόμενο: Deployment
Αποποίηση ευθυνών:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης AI Co-op Translator. Παρόλο που επιδιώκουμε την ακρίβεια, παρακαλούμε να γνωρίζετε ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται η επαγγελματική μετάφραση από ανθρώπινο μεταφραστή. Δεν φέρουμε καμία ευθύνη για τυχόν παρερμηνείες ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.
