0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

symfonyプロジェクトをmcpサーバ化する

0
Posted at

はじめに

自社サービスにREST APIを提供した場合、外部サービスと連携するには連携先のサービスに自社APIとの連携部分(自社アプリケーションのAPIをコールする機能)を実装してもらう必要がある。
AIサービスが増加する中、MCPサーバを準備しておくと、連携先AIサービスでは大きな実装が不要になる可能性がある。
というのも、自社APIがMCPを提供することで、連携先のAIサービスではMCPのURLと認証情報を格納する実装さえあれば、自社サービスと連携することができるからだ。
この記事では、symfonyアプリケーションにMCP機能を追加する方法を記す。

使うもの

実装方法

基本設定

  1. composer でインストールする。
composer require symfony/mcp-bundle
  1. config/routes.yamlを以下のように書く。
mcp:
    resource: .
    type: mcp
  1. config/packages/mcp.yamlにMCPサーバの基本設定を書いておく。
mcp:
    servers:
        default:
            name: 'rpst-api'
            transports:
                http: true
                stdio: true
            http:
                path: /mcp
            registry:
                tools:
                    - 'App\Mcp\Tool\'

これでPOST /mcpがMCPエンドポイントになる。

ツールを作成する

LLMがMCPサーバを利用して何かしらの操作を行うためには、MCPにツールが登録されている必要がある。
ツールは以下のように実装する。

<?php

namespace App\Mcp\Tool;

use Mcp\Capability\Attribute\McpTool;
use Mcp\Capability\Attribute\Schema;
use App\Application\Order\SearchOrderService;

final class SearchOrderTool
{
    public function __construct(
        private SearchOrderService $searchOrderService,
    ) {
    }

    #[McpTool(
        name: 'search_order',
        description: '注文IDから注文情報を取得します'
    )]
    public function search(
        #[Schema(description: '注文ID')]
        int $orderId,
    ): array {
        $order = $this->searchOrderService->search($orderId);

        return [
            'id' => $order->id,
            'customerId' => $order->customerId,
            'status' => $order->status,
            'totalPrice' => $order->totalPrice,
        ];
    }
}

これだけでMCPツールが作成でき、自動的にMCPに登録される。

動作確認

MCPの動作確認はSymfonyでは以下のように簡単にできる。

php bin/console debug:mcp

また、特定のツールを指定してデバッグできる。

php bin/console debug:mcp search_order

まとめ

昨今、様々な業務アプリケーションにAI機能が実装されてきている。
AIエージェントはMCPという共通インターフェースを利用できるので、自社サービスがMCPサーバを提供することで、他社のシステムとの連携が容易になってくるはずだ。各々がコーディングエージェントを利用する場合は、MCPを利用するよりもSKILLS+CLIで良いという意見もある。MCPはその領域ではなく、Saas同士の連携に威力を発揮するかもしれない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?