LaravelのHttpファサードを使ってMCPサーバーへリクエストを送信する方法、というか、メインはPOSTメソッドのボディを生JSONで送信する方法のメモです。

HTTP Client - Laravel 12.x - The PHP Framework For Web Artisans
Laravel is a PHP web application framework with expressive, elegant syntax. We???ve already laid the foundation ??? free...
MCPサーバーの例として、以前の記事で作成したユーザー検索MCPを使ってみます。
前提
▼APIキーがある場合は「.env」に記述
(上記MCPサーバーでは使ってない)
USER_SEARCH_MCP_API_KEY="ust-ak-hogehoge1234567890"
env() で拾う
$apiKey = env('USER_SEARCH_API_KEY');
▼MCPサーバーURL
http://localhost:8000/mcp/search-user
$url = 'http://localhost:8000/mcp/search-user';
▼ツール名
「search-user」
▼パラメータ
- name: h
- per-page: 5
- page: 2
送信データ構築
MCPサーバーに送信する tools/call のJSON構造は次の通りです。
{
"jsonrpc": "2.0",
"id": "[一意のリクエストID]",
"method": "tools/call",
"params": {
"name": "[ツール名]",
"arguments": {
"arg1": "値1",
"arg2": "値2",
...
}
}
次のような感じでPHPのハッシュ配列として定義して、
json_encode() してしまえばOKでしょう。
$method = 'tools/call';
$toolName = 'search-user';
$arguments = [
'name' => 'h',
'per-page' => 5,
'page' => 2,
];
$data = [
'jsonrpc' => '2.0',
'id' => uniqid(),
'method' => $method,
'params' => [
'name' => $toolName,
'arguments' => $arguments,
],
];
MCPサーバーへのリクエスト送信
次の通り、やり方は何通りかありますが、post()だけでいけてしまいますね。
$response = Http::withToken($apiKey)->accept('application/json')->withBody(json_encode($data))->post($url);
$response = Http::withToken($apiKey)->accept('application/json')->post($url, $data);
$response = Http::withToken($apiKey)->acceptJson()->withBody(json_encode($data))->post($url);
$response = Http::withToken($apiKey)->asJson()->post($url, $data);
$response = Http::withToken($apiKey)->post($url, $data);
※withToken()で追加してくれるHTTPリクエストヘッダーは次の通りです。
Authorization: Bearer [APIキー]
※別のHTTPリクエストヘッダーで認証している場合は withHeaders() で設定しましょう。
$response = Http::withHeaders([
'X-API-KEY' => $apiKey,
])->post($url, $data);
tinkerで動作確認
tinkerを起動します。
php artisan tinker

諸々入力しておきます。

リクエストを送信してみます。
$response = Http::withToken($apiKey)->post($url, $data);

レスポンスを確認してみます。
dump $response->json();

※qキー押下で表示モード終了
ばっちり取得できました。
- 1
- 0
- 0
- 0



コメント