Cline ( Roo Code ) MCPでStripeの実装をやる

Stripeが昨年末に出したAgent Toolkit SDKにMCPが追加され、AIエージェントのタスク完了を支援するプロトコルとして活用される。Cline ( Roo Code )を使用してStripe MCPをセットアップし、Stripeのリソースを利用するコマンドを設定する。MCPを使ってStripeで1年間で自動解約するサブスクリプションを作成し、Clineがコード生成から実装までサポートする。AIを活用した実装により、決済・サブスクリプションの組み込みタスクを効率化する過程で、MCPの活用やAIに任せるべき部分を模索する意義がある。

広告ここから
広告ここまで

目次

    Stripeが昨年末に出したAgent Toolkit SDKに、いつのまにかMCP( Model Context Protocol )が追加されていました。前からMCPは気になっていた領域なので、試しに触ってみようと思います。

    Stripe MCPとは

    Stripe MCPとは、StripeのもつリソースをLLMが利用するためのコンテキストを伝えるプロトコルです。MCPそのものについては、公式のドキュメントをご確認ください。ざっくりとした理解では、「Stripeのドキュメントなどを検索したりStripe APIを利用したりして、AIエージェントが指示されたタスクを完了するためのツール」だと思っています。

    StripeのMCPについては、2024年末にでたAgent Toolkit SDKの中で提供されています。実装コードをざっと読んだ感じでは、内部的にAgent Toolkitを利用しているみたいですね。

    Cline ( Roo Code )でStripe MCPをセットアップしてみる

    ということで早速触ってみましょう。MCPの設定は、ClineタブにあるMCP Serversから行います。新しくMCPを追加するので、Edit MCP Settingsボタンをクリックしましょう。

    Cursorではフォームでしたが、Cline ( Roo Code )ではJSONで定義します。Stripe MCPのドキュメントにあるJSONを貼り付けましょう。もしsyntax errorが発生した場合は、このpull requestにあるJSONか、下にあるJSONを使ってください。

    {
      "mcpServers": {
        "stripe": {
          "command": "npx",
          "args": [
              "-y",
              "@stripe/mcp",
              "--tools=all",
              "--api-key=STRIPE_SECRET_KEY"
          ]
        }
      }
    }

    stripeというMCPサーバーが追加されていれば設定完了です。

    MCPに登録するStripeのコマンドについて

    Stripe MCPはドキュメント検索から顧客・商品・料金データの作成・請求書の発行まで幅広い用途で使えます。しかし「開発時にそこまでの広い権限は渡したくない」という場面ももちろんあります。利用するAPIを制限したい場合は、toolsに許可したいアクションをカンマ区切りで追加しましょう。例えば下のコマンドでは、Customerデータのの読み書きとProductデータの書き込みのみが許可されています。

    npx -y @stripe/mcp --tools=customers.create,customers.read,products.create --api-key=YOUR_STRIPE_SECRET_KEY

    利用できる値については、ドキュメントのAvailable Toolsをご確認ください。

    登録したMCPを使ってみよう – 実装調査編

    MCPの設定が終われば、早速エージェントから使ってみましょう。ClineのチャットUIで、agentに対して次のような指示を出してみます。まずは実装方法を調べさせてみましょう。

    MCPを使って、Stripeで1年間で自動解約するサブスクリプションの作り方を調べて

    MCPの登録ができていれば、早速Stripeのドキュメントを探そうとします。承認を求められた時は、Approveしてあげてください。

    Stripeが持つRAG?検索システムを使って情報を取得していることがみれます。生成結果を元に、Clineがコード生成まで始めてくれました。

    生成されたコードがこちらです。そのまま動かせる形で実装してくれているので、動きのチェックにすぐ入れるのがいいですね。

    app.post('/create-subscription', async (req, res) => {
      try {
        // First create a product
        const product = await stripe.products.create({
          name: 'Annual Membership',
          description: '1-year subscription that automatically cancels'
        });
    
        // Create a price for the product
        const price = await stripe.prices.create({
          product: product.id,
          unit_amount: 1000, // $10.00
          currency: 'usd',
          recurring: {
            interval: 'month' // Bill monthly
          }
        });
    
        // Calculate cancel date (1 year from now)
        const cancelAt = Math.floor(Date.now() / 1000) + (365 * 24 * 60 * 60); // 1 year in seconds
    
        // Create subscription that will auto-cancel in 1 year
        const subscription = await stripe.subscriptions.create({
          customer: req.body.customerId,
          items: [{ price: price.id }],
          cancel_at: cancelAt, // Auto-cancel after 1 year
          proration_behavior: 'none' // No proration on cancellation
        });
    
        res.json({ subscription });
      } catch (error) {
        console.error('Error:', error);
        res.status(500).json({ error: error.message });
      }
    });

    実装も明示的にやらせてみる

    さっきは調査のみのつもりで、実装まで気を利かせてくれた形でした。ということで実装まで指示してみましょう。

    Stripe MCPを使って、Stripeで1年間で自動解約するサブスクリプションを申し込む方法を調べて。node.jsでサブスクリプションを作るcheckout sessionを作成するAPIを実装して。

    こちらもドキュメントの検索から始まります。

    続いてコードの生成が始まりました。

    最後に作業内容を報告してくれています。Cursorの時はCursor側にデフォルトで設定されているルールのおかげで日本語でしたが、Cline / Roo Codeの場合は英語でした。

    ちなみに、実装コードのうち、subscription_data.cancel_atという値は存在しません。TypeScriptでコードを書かせると、型エラーがでてきます。とはいえどのAPIを使って、どのようなデータを設定すればよいかなどについては、初めてStripeを触る人にも参考になる道筋となっているのではないでしょうか。

    さくっとコードを準備するところは、AI任せになるかも・・・?

    Stripeなどの決済・サブスクリプション系の組み込みは、サービスのSDKの実装以外にもさまざまなタスクが発生します。APIを実装するアプリケーションのセットアップや、リクエスト内容からのSDKに渡すパタメーターの取得処理、レスポンスの整形などなど・・・。多少定型化されやすい部分もありますが、案件ごとに少しずつ内容が変わるなどの理由で、テンプレート化は難しかったりする現状もありました。

    しかしAIを使った実装では、「今回はこういう形で作って」のように差分を含めた指示ができます。そしてMCPを使うことで、実装時にドキュメントを参照しながら作業させることもできます。もちろん実装されたコードが100点満点であることは少ないですが、それでも富士山の5号目まではバスで進めるような、そんな手軽さを手に入れることができるのではないでしょうか。

    0か100かではなく、自分のやるべきタスクのうち、生成AIに任せれる部分はどこなのか。そんなことをMCPなどを触って覚える過程で考えていきたいなと思いました。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark