Преди да започнете тестването на вашия MCP сървър, е важно да разберете наличните инструменти и най-добрите практики за отстраняване на грешки. Ефективното тестване гарантира, че вашият сървър се държи както се очаква и ви помага бързо да идентифицирате и разрешавате проблеми. Следващият раздел очертава препоръчителни подходи за валидиране на вашата MCP имплементация.
Този урок обхваща как да изберете правилния подход за тестване и най-ефективния инструмент за тестване.
Към края на този урок ще можете да:
- Опишете различни подходи за тестване.
- Използвате различни инструменти за ефективно тестване на вашия код.
MCP предоставя инструменти, които да ви помогнат да тествате и отстранявате грешки на вашите сървъри:
- MCP Inspector: Инструмент за команден ред, който може да се използва както като CLI инструмент, така и като визуален инструмент.
- Ръчно тестване: Можете да използвате инструмент като curl за изпълнение на уеб заявки, но всеки инструмент, който може да изпълнява HTTP, е подходящ.
- Модулно тестване: Възможно е да използвате предпочитаната от вас тестова рамка, за да тествате функциите както на сървъра, така и на клиента.
Вече описахме използването на този инструмент в предишни уроци, но нека го разгледаме накратко на високо ниво. Това е инструмент, създаден на 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. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия оригинален език трябва да се разглежда като авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или погрешни тълкувания, произтичащи от използването на този превод.
