Перед тем как начать тестировать ваш 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Помимо использования MCP Inspector для проверки возможностей сервера, можно применить другой подход — запустить клиент, способный работать с HTTP, например curl.
С помощью curl вы можете тестировать MCP серверы напрямую через HTTP-запросы:
# 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"}}'Как видно из примера с 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,
)
# 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
Данный код делает следующее:
- Использует фреймворк pytest, который позволяет создавать тесты в виде функций и использовать утверждения assert.
- Создает MCP сервер с двумя разными инструментами.
- С помощью assert проверяет выполнение определенных условий.
Полный файл можно посмотреть здесь
Исходя из этого файла, вы можете тестировать свой сервер, чтобы убедиться, что возможности создаются правильно.
Все основные SDK имеют похожие разделы для тестирования, так что вы можете адаптировать их под выбранную среду выполнения.
- Далее: Deployment
Отказ от ответственности:
Этот документ был переведен с помощью сервиса автоматического перевода Co-op Translator. Несмотря на наши усилия обеспечить точность, просим учитывать, что автоматический перевод может содержать ошибки или неточности. Оригинальный документ на исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется использовать профессиональный перевод, выполненный человеком. Мы не несем ответственности за любые недоразумения или неправильные толкования, возникшие в результате использования данного перевода.
