Skip to main content
Glama
DanFrModa

Stripe MCP Server

by DanFrModa

Stripe MCP Server

Stripe の API を Claude に公開する MCP(Model Context Protocol)サーバー。 Railway に 読み取り専用モード でデプロイすることを想定しています。

👉 デプロイ手順は DEPLOY-RAILWAY.md にあります。


機能

Claude に Stripe を照会するための 17 のツールを提供します。顧客、請求、支払い、 サブスクリプション、請求書、カタログ、残高、取引、ペイアウト、イベント、 紛争 — さらに、任意のエンドポイントに到達する汎用ツール、任意のオブジェクトを ID で解決するツール、および収益の集計レポートも含まれます。

ツール

エンドポイント

stripe_whoami

キー、モード、権限を検証

stripe_request

任意のエンドポイント、任意のメソッド

stripe_get_object

任意の ID を解決(cus_、ch_、sub_...)

stripe_search

GET /v1/{リソース}/search

stripe_list_customers

GET /v1/customers

stripe_list_charges

GET /v1/charges

stripe_list_payment_intents

GET /v1/payment_intents

stripe_list_subscriptions

GET /v1/subscriptions

stripe_list_invoices

GET /v1/invoices

stripe_list_products

GET /v1/products

stripe_list_prices

GET /v1/prices

stripe_get_balance

GET /v1/balance

stripe_list_balance_transactions

GET /v1/balance_transactions

stripe_list_payouts

GET /v1/payouts

stripe_list_events

GET /v1/events

stripe_list_disputes

GET /v1/disputes

stripe_revenue_summary

ページングして総額/手数料/純額を合計


Related MCP server: Stripe MCP

環境変数

変数

必須

デフォルト

説明

STRIPE_API_KEY

はい

—

制限付きキー(rk_...)またはシークレットキー(sk_...)

STRIPE_MCP_TRANSPORT

Railway では

stdio

リモートサーバーでは http

MCP_AUTH_TOKEN

http の場合

—

エンドポイントを保護するシークレット。最小 32 文字

STRIPE_READ_ONLY

いいえ

下記参照

1 で全書き込みをブロック

STRIPE_ALLOW_LIVE_WRITES

いいえ

0

第二のゲート: ライブ キーでの書き込み

STRIPE_API_BASE

いいえ

https://api.stripe.com

モックを指す場合に使用

STRIPE_API_VERSION

いいえ

—

Stripe-Version ヘッダーを固定

STRIPE_ACCOUNT

いいえ

—

すべての呼び出しで使用する Connect アカウント(acct_...)

STRIPE_MAX_CHARS

いいえ

20000

レスポンスの切り詰め

STRIPE_TIMEOUT

いいえ

45

タイムアウト(秒)

PORT

いいえ

8000

Railway が自動的に注入


書き込みの三重のゲート

Stripe は実際の資金を動かします。誤った POST は顧客への返金、サブスクリプションのキャンセル、またはレコードの完全な削除につながります。そのため、独立した 3 つのロックがあり、書き込みはそのすべてを通過する必要があります。

1. STRIPE_READ_ONLY — デフォルトはトランスポートに依存

  • stdio(ローカル): デフォルトで書き込み 許可。信頼できる単一ユーザーが自分のマシンで使用。

  • http(リモート): デフォルトで書き込み ブロック。有効にするには意図的に STRIPE_READ_ONLY=0 を設定する必要があります。

公開デプロイで変数を忘れると、読み取り専用のままになり、開放されません。

2. STRIPE_ALLOW_LIVE_WRITES — ライブモードのゲート

読み取り専用をオフにしても、ライブ キーは STRIPE_ALLOW_LIVE_WRITES=1 を設定するまで書き込みを拒否し続けます。テストキー(sk_test_、rk_test_)はこのゲートを通過しません。テストデータでの実験に儀式は必要ありません。

3. confirm=true — エンドポイントごとのゲート

破壊的なエンドポイント(/v1/refunds、/v1/payouts、/v1/transfers、 サブスクリプションのキャンセル、顧客の削除、紛争のクローズ)は、上記すべてに加えて、呼び出しに confirm=true を要求します。誤って起動されたツールは、単独ではそこに到達できません。

各拒否は、どの 3 つのゲートがそれを停止したかを示します。


エンドポイントの認証

MCP プロトコルには独自の認証はありません。http モードでは、このサーバーは各リクエストで Authorization: Bearer <MCP_AUTH_TOKEN> を要求するか、Claude のコネクタ用にルートに埋め込まれたシークレット(/s/<シークレット>/mcp)を要求します。/healthz のみが公開ルートです。

サーバーは、MCP_AUTH_TOKEN が欠落しているか、32 文字未満の場合、起動を拒否します。これは意図的です。うっかり Stripe アカウントへのオープンゲートウェイを公開することを防ぎます。


ローカルでの実行

pip install -r requirements.txt

# stdio (para Claude Desktop)
STRIPE_API_KEY=rk_test_xxx python stripe_mcp.py

# http (como en Railway)
STRIPE_MCP_TRANSPORT=http \
STRIPE_API_KEY=rk_test_xxx \
MCP_AUTH_TOKEN=$(python3 -c "import secrets;print(secrets.token_urlsafe(48))") \
PORT=8000 python stripe_mcp.py

起動時に、どのモードになったかを出力します。

[stripe-mcp] streamable-http on 0.0.0.0:8000  mode=test  read_only=True  allow_live_writes=False  writes_enabled=False

Stripe API に関する注意事項

サーバーがすでに代わりに解決してくれること、およびレスポンスを読む際に知っておくべきこと:

  • Stripe はボディに JSON を受け付けません。 すべて application/x-www-form-urlencoded で、ブラケット表記を使用します: metadata[order]=6735、expand[]=customer、 items[0][price]=price_1。サーバーはネストされた dict とリストのみを変換します。

  • 金額は最小単位の整数です。 2500 と usd は $25.00 です。 また、ゼロ小数の通貨(JPY、KRW、CLP など)では、整数がそのまま金額になります。 そこで 100 で割るのは誤りです。フォーマットされた出力はこれを尊重します。

  • テストとライブは別々の世界です。 テストで作成された ID はライブキーで 404 を返し、その逆も同様です。これは、正しい ID で 404 が発生する最も一般的な原因です。

  • ページネーションはページ単位ではなくカーソルベースです。 最後の ID を取得し、starting_after として渡します。さらにデータがある場合、レスポンスには正確な値を持つ next_page_hint が含まれます。

  • PATCH や PUT はありません。 Stripe は作成と更新の両方に POST を使用します。GET、POST、DELETE のみです。

  • リストは charges や payment_intents で status によるフィルタリングをしません。 返されたレコードをフィルタリングするか、stripe_search を使用する必要があります。

  • stripe_list_subscriptions はデフォルトでキャンセル済みを省略します。 チャーンに関する質問には status='all' を渡す必要があります。そうしないと、レスポンスが静かに間違ったものになります。

  • 検索インデックスは、新しく作成されたオブジェクトを認識するまで最大 1 分かかります。 新しいオブジェクトの場合は、ID で検索してください。

  • イベントは 30 日間のみ保存されます。 それより前のものはオブジェクトにアクセスする必要があります。

  • 集計エンドポイントはありません。 そのため、stripe_revenue_summary は MCP サーバー側でページングして合計し、ページ上限でカウントが途切れた場合は complete=false で通知します。これらの合計は部分的なものであり、最終的なものとして報告してはなりません。

  • 各 POST には Idempotency-Key が付与されるため、再試行しても二重請求されません。Stripe はこれらを 24 時間記憶します。


セキュリティ

  • シークレットは環境変数に保存され、コードには決して保存されません。.gitignore は .env ファイルをブロックします。

  • シークレットキーではなく、制限付きキー(rk_...)を使用してください。 ダッシュボードで何度でも作成でき、リソースごとに権限を付与できます。このデプロイでは、すべて 読み取り、書き込み はなし。sk_live_ は、資金の移動を含むアカウントへの完全なアクセスを提供します。

  • 共有トークンが 1 つだけの場合、個人単位のトレーサビリティはゼロです。誰かが行ったすべての操作は、同じキーとして記録されます。

  • 独自のレート制限はありません。MCP_AUTH_TOKEN を持っている人は、Stripe の制限(ライブでの読み取りで約 100 req/s)に達するまで Stripe にアクセスできます。

  • アクセスを即座に遮断するには、https://dashboard.stripe.com/apikeys で制限付きキーを削除します。サーバーは即座に使用不能になります。

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Enables Claude to integrate with Stripe for creating payment links, processing payments, and managing products and customers.
    17
    33 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables integration with Stripe APIs through function calling, supporting operations on customers, products, invoices, subscriptions, and more.
    21,738 npm
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Enables querying MRR, churn, and revenue from Stripe, Gumroad, and Lemon Squeezy directly inside Claude, allowing natural language questions about business metrics.
    5
    13 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables Claude Code to securely interact with PostgreSQL, MySQL, SQLite, and SQL Server databases, featuring read-only mode, query validation, SSH tunneling, and field redaction for production-safe data access.
    4
    MIT