Урок 12

Практика: тестирование MCP

Как тестировать MCP-сервер без реального AI-клиента.

MCP Inspector

Официальный инструмент:

npx @modelcontextprotocol/inspector http://localhost/mcp/orders

Откроется веб-интерфейс. Можно:

  • Смотреть список tools
  • Вызывать tools с аргументами
  • Читать resources
  • Использовать prompts

Через curl

curl -X POST http://localhost/mcp/orders \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/call",
    "params": {
      "name": "lookup_order",
      "arguments": {"order_id": 5}
    }
  }'

Artisan-команды

Некоторые пакеты дают команды:

php artisan mcp:test-tool LookupOrder --input='{"order_id":5}'
php artisan mcp:test-tool --list

Показывает схему, выполняет tool, выводит результат.

Unit-тесты

use Laravel\Mcp\Testing\MCP;

it('finds an order', function () {
    MCP::tool(LookupOrder::class)
        ->with(['order_id' => 5])
        ->assertSee('Заказ #5');
});

Проверка авторизации

it('requires auth', function () {
    $this->post('/mcp/orders', [/* ... */])
        ->assertUnauthorized();
});

Логирование

В handle() логируй вызовы:

Log::info('MCP tool called', [
    'tool' => static::class,
    'args' => $request->all(),
    'user' => $request->user()?->id,
]);

Итоги

  • MCP Inspector для ручного теста
  • curl для запросов
  • Artisan-команды для tools
  • Unit-тесты для логики
  • Логируй вызовы