Før du begynder at teste din MCP-server, er det vigtigt at forstå de tilgængelige værktøjer og bedste praksis for fejlfinding. Effektiv test sikrer, at din server opfører sig som forventet og hjælper dig med hurtigt at identificere og løse problemer. Følgende afsnit beskriver anbefalede metoder til at validere din MCP-implementering.
Denne lektion handler om, hvordan du vælger den rette testmetode og det mest effektive testværktøj.
Når du er færdig med denne lektion, vil du kunne:
- Beskrive forskellige tilgange til testning.
- Bruge forskellige værktøjer til effektivt at teste din kode.
MCP tilbyder værktøjer, der hjælper dig med at teste og fejlsøge dine servere:
- MCP Inspector: Et kommandolinjeværktøj, der kan køre både som CLI-værktøj og som et visuelt værktøj.
- Manuel testning: Du kan bruge et værktøj som curl til at køre web-forespørgsler, men ethvert værktøj, der kan håndtere HTTP, fungerer.
- Unit testing: Det er muligt at bruge dit foretrukne testframework til at teste funktionerne i både server og klient.
Vi har tidligere beskrevet brugen af dette værktøj, men lad os tage et overblik. Det er et værktøj bygget i Node.js, og du kan bruge det ved at kalde npx eksekverbaren, som midlertidigt downloader og installerer værktøjet og rydder op, når din forespørgsel er kørt.
MCP Inspector hjælper dig med at:
- Opdage serverfunktioner: Automatisk finde tilgængelige ressourcer, værktøjer og prompts
- Teste værktøjsudførelse: Prøve forskellige parametre og se svar i realtid
- Se servermetadata: Undersøge serverinformation, skemaer og konfigurationer
Et typisk kørsel af værktøjet ser sådan ud:
npx @modelcontextprotocol/inspector node build/index.jsOvenstående kommando starter en MCP og dens visuelle interface og åbner en lokal webgrænseflade i din browser. Du kan forvente at se et dashboard, der viser dine registrerede MCP-servere, deres tilgængelige værktøjer, ressourcer og prompts. Interfacet giver dig mulighed for interaktivt at teste værktøjsudførelse, inspicere servermetadata og se svar i realtid, hvilket gør det nemmere at validere og fejlfinde dine MCP-serverimplementeringer.
Du kan også køre dette værktøj i CLI-tilstand ved at tilføje --cli attributten. Her er et eksempel på at køre værktøjet i "CLI"-tilstand, som viser alle værktøjer på serveren:
npx @modelcontextprotocol/inspector --cli node build/index.js --method tools/listUdover at køre inspector-værktøjet for at teste serverfunktioner, er en anden lignende tilgang at køre en klient, der kan bruge HTTP, som for eksempel curl.
Med curl kan du teste MCP-servere direkte ved hjælp af HTTP-forespørgsler:
# Example: Test server metadata
curl http://localhost:3000/v1/metadata
# Example: Execute a tool
curl -X POST http://localhost:3000/v1/tools/execute \
-H "Content-Type: application/json" \
-d '{"name": "calculator", "parameters": {"expression": "2+2"}}'Som du kan se i eksemplet med curl, bruger du en POST-forespørgsel til at kalde et værktøj med en payload bestående af værktøjets navn og dets parametre. Brug den tilgang, der passer dig bedst. CLI-værktøjer er generelt hurtigere at bruge og egner sig godt til scripting, hvilket kan være nyttigt i et CI/CD-miljø.
Opret unit tests for dine værktøjer og ressourcer for at sikre, at de fungerer som forventet. Her er noget eksempeltestkode.
import pytest
from mcp.server.fastmcp import FastMCP
from mcp.shared.memory import (
create_connected_server_and_client_session as create_session,
)
# Mark the whole module for async tests
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")
# Create a couple of test tools
@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:
# Test without cursor parameter (omitted)
result1 = await client_session.list_tools()
assert len(result1.tools) == 2
# Test with cursor=None
result2 = await client_session.list_tools(cursor=None)
assert len(result2.tools) == 2
# Test with cursor as string
result3 = await client_session.list_tools(cursor="some_cursor_value")
assert len(result3.tools) == 2
# Test with empty string cursor
result4 = await client_session.list_tools(cursor="")
assert len(result4.tools) == 2
Den forudgående kode gør følgende:
- Benytter pytest-frameworket, som lader dig oprette tests som funktioner og bruge assert-udsagn.
- Opretter en MCP Server med to forskellige værktøjer.
- Bruger
assert-udsagn til at kontrollere, at visse betingelser er opfyldt.
Tag et kig på hele filen her
Med den ovenstående fil kan du teste din egen server for at sikre, at funktionerne oprettes som de skal.
Alle større SDK'er har lignende testsektioner, så du kan tilpasse det til dit valgte runtime.
- Næste: Deployment
Ansvarsfraskrivelse:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten Co-op Translator. Selvom vi bestræber os på nøjagtighed, skal du være opmærksom på, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det oprindelige dokument på dets modersmål bør betragtes som den autoritative kilde. For vigtig information anbefales professionel menneskelig oversættelse. Vi påtager os intet ansvar for misforståelser eller fejltolkninger, der måtte opstå som følge af brugen af denne oversættelse.
