Skip to content

Latest commit

 

History

History
157 lines (102 loc) · 10.9 KB

File metadata and controls

157 lines (102 loc) · 10.9 KB

Тестване и отстраняване на грешки

Преди да започнете тестването на вашия 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 сървърни имплементации.

Ето как може да изглежда: Inspector

Можете също така да стартирате този инструмент в 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. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия оригинален език трябва да се разглежда като авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или погрешни тълкувания, произтичащи от използването на този превод.