Практика: тестирование 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-тесты для логики
- Логируй вызовы