CursorでStripe MCPを使ってサブスクリプションの実装をやらせてみる
Stripeが昨年末に出したAgent Toolkit SDKに、MCPが追加されました。MCPはStripeのリソースをLLMが利用するためのコンテキストを伝えるプロトコルで、AIエージェントに指示されたタスクを完了するツールです。MCPの設定や利用方法について詳細が記載されており、Stripe MCPは幅広い用途で使えますが、APIの制限も可能です。生成されたコードは一部修正が必要かもしれませんが、初めてStripeを触る人にとって参考になる内容も含まれています。LLMとAgent Toolkit SDKの進化に期待が寄せられています。
目次
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を利用しているみたいですね。
CursorでStripe MCPをセットアップする
ということで早速触ってみましょう。MCPの設定は、Cursor SettingsページのMCPから行えます。

ここでコマンドを登録する必要があります。Stripe MCPのドキュメントにあるコマンドをコピーアンドペーストした上で、api-key
をご自身のStripeアカウントで発行したシークレットキーに変更しましょう。
npx -y @stripe/mcp --tools=all --api-key=YOUR_STRIPE_SECRET_KEY
Nameは管理する人向けの機能なので、「Stripeを利用するMCP」であることがわかる名前にしておきましょう。複数のStripeアカウントを呼び分けたい場合は、{{name}}のMCPを使って
のように指示するとよい・・・かもしれません。

登録できたら、リストに追加されます。利用できるToolが表示されますので、もし「この操作はやらせたくない」などがあれば、次のセクションで紹介する方法を使いましょう。

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をご確認ください。
Cursorから呼び出す
MCPの設定が終われば、早速エージェントから使ってみましょう。CursorのチャットUIで、agent
に対して次のような指示を出してみます。
Stripe MCPを使って、Stripeで1年間で自動解約するサブスクリプションを申し込む方法を調べて。node.jsでサブスクリプションを作るcheckout sessionを作成するAPIを実装して。
プロセスをみると、早速登録したMCPを使ってStripeドキュメントを検索している様子です。ドキュメントを検索してくれるため、最近リリースされた機能などのキャッチアップも漏れなさそうなのがよいですね。

MCP Toolsの結果をみると、複数のドキュメントを検索したことがわかります。search_documentation
はStripeが用意するRAG APIを呼び出しているのかもしれません。

検索した結果を元に、実装コードを考えてくれています。

最後に生成されたコードがこちらでした。Stripe Checkoutのセッションを作成し、1年後にキャンセルされる設定も追加しているように見えます。ただしsuccessUrl
やcancelUrl
を外部入力に頼る形に見える実装なのは、意図しないページへ飛ばされるリスクなどが考えられるので、個人的には修正したくなるポイントですね。。payment_method_types
をハードコードしているのもちょっと気になります。

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

ちなみにCheckout Sessionの作成以外にも、実はかなり色々な実装をしてくれています。この辺りはask
モードに切り替えて「この実装はどういう意図?」など聞いてみると、勉強にもなるかもしれません。

自然言語ベースのブートストラップや、新機能の理解にStripe MCP
スマートな働きをしてくれるStripe MCPですが、やはり生成されたコードをそのままリリースするには至らないなという感想も抱きました。この辺りは、「開発者プレビュー版のツールに100点を要求してどうするの」という話にもなります。とはいえ今使っているフレームワークでの実装方法をざっくりセットアップする用途としては、すごく使えそうです。全部手で書くよりも、ブートストラップや叩き台としてエージェントに作業をさせておいて、その間に他の作業なり要件理解を進めるなりができるのではないかと思います。
また、LLM側そしてAgent Toolkit SDK側の進化によって、遠からずほとんどの実装がAIエージェントに任せられる世界も来るのではないかと、(今のところはまだ)淡い期待を持ちたいなーとも思っています。