/ 目录 / 演练场 / Stripe
● 官方 stripe 🔑 需要你的密钥

Stripe

作者 stripe · stripe/agent-toolkit

官方 Stripe MCP —— 查询客户、费用、订阅、退款。从对话中创建测试发票和支付链接。

Stripe 官方 MCP,Agent Toolkit 的一部分。封装了 Stripe API:客户、产品、价格、发票、订阅、支付链接、退款、余额和搜索。测试模式是安全的;实时模式下每次写入都是真实金钱——要谨慎控制访问。

为什么要用

核心特性

实时演示

实际使用效果

stripe.replay ▶ 就绪
0/0

安装

选择你的客户端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "stripe": {
      "command": "npx",
      "args": [
        "-y",
        "@stripe/mcp",
        "--tools=all"
      ]
    }
  }
}

打开 Claude Desktop → Settings → Developer → Edit Config。保存后重启应用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "stripe": {
      "command": "npx",
      "args": [
        "-y",
        "@stripe/mcp",
        "--tools=all"
      ]
    }
  }
}

Cursor 使用与 Claude Desktop 相同的 mcpServers 格式。项目级配置优先于全局。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "stripe": {
      "command": "npx",
      "args": [
        "-y",
        "@stripe/mcp",
        "--tools=all"
      ]
    }
  }
}

点击 Cline 侧栏中的 MCP Servers 图标,然后选 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "stripe": {
      "command": "npx",
      "args": [
        "-y",
        "@stripe/mcp",
        "--tools=all"
      ]
    }
  }
}

格式与 Claude Desktop 相同。重启 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "stripe",
      "command": "npx",
      "args": [
        "-y",
        "@stripe/mcp",
        "--tools=all"
      ]
    }
  ]
}

Continue 使用服务器对象数组,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "stripe": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "@stripe/mcp",
          "--tools=all"
        ]
      }
    }
  }
}

加入 context_servers。Zed 保存后热重载。

claude mcp add stripe -- npx -y @stripe/mcp --tools=all

一行命令搞定。用 claude mcp list 验证,claude mcp remove 卸载。

使用场景

实战用法: Stripe

调查客户的费用为什么失败了

👤 支持工程师、首线创始人 ⏱ ~10 min beginner

何时使用: 客户说'我的卡被拒了 3 次'。你想看看 Stripe 这边实际发生了什么。

前置条件
  • Stripe 受限 API key,对费用/客户有读权限 — dashboard.stripe.com/apikeys → Restricted keys → 授予对 Customers、Charges、Payment intents 的读权限
步骤
  1. 查找客户
    查找邮箱为 '[email protected]' 的 Stripe 客户。展示他们的默认支付方式和总支出。✓ 已复制
    → 带有支付方式详情的客户记录
  2. 拉取最近失败的费用
    列出该客户过去 30 天内状态不是 'succeeded' 的费用。对于每一个,展示失败代码和消息。✓ 已复制
    → 包含 card_declined/expired_card 等代码的失败列表
  3. 解释并推荐行动
    实际问题是什么?推荐告诉客户的内容(例如,'卡已过期——请更新',或'欺诈阻止——尝试另一张卡')。✓ 已复制
    → 清晰的客户可见的解释

结果: 已解决的支持票,有实际原因,而不是'稍后再试'。

注意事项
  • 仅查看费用——遗漏了从未成为费用的 Payment Intents — 同时检查状态为 'requires_payment_method' 或 'canceled' 的 Payment Intents
  • 客户说'被拒'但实际是 3DS 放弃 — 用户关闭的 3DS 挑战显示为 requires_action 然后过期;检查时间线

为交易创建测试发票和支付链接

👤 销售和运营人员完成自定义交易 ⏱ ~5 min beginner

何时使用: 你和客户达成了一次性定制价格协议,需要快速生成发票或支付链接。

前置条件
  • TEST 模式 key(sk_test_...) — 总是以测试模式开始。只有在流程验证后才切换到实时 key。
步骤
  1. 查找或创建客户
    查找邮箱为 '[email protected]' 的 Stripe 客户。如果没有,创建一个名为 'BigCo Inc' 的。✓ 已复制
    → 返回的客户 ID
  2. 创建一次性价格 + 发票项目
    创建一次性发票项目:$4,500,描述 'Q2 onboarding services'。附加到该客户。然后创建并最终确定一份发票。✓ 已复制
    → 带有 hosted_invoice_url 的发票
  3. 确认可交付物
    给我 hosted invoice URL 和创建内容的总结。不要发邮件——我会手动转发。✓ 已复制
    → URL + 总结;没有意外的邮件发送

结果: 一份你可以在 90 秒内发送给客户的发票。

注意事项
  • 从对话自动向客户发邮件是个大坑 — 使用 auto_advance: false 并跳过 send_invoice 直到你审核;MCP 不应该在没有明确确认的情况下向生产客户发邮件
  • 测试/实时模式混淆意味着真实金钱为'测试'流动 — 在任何修改前总是检查 API key 前缀(sk_test_ vs sk_live_);让 MCP 回显它
搭配使用: supabase

从 Stripe 订阅计算当前 MRR 和流失率

👤 进行财务运营的创始人 ⏱ ~15 min intermediate

何时使用: 月度审查;你想从源头快速获得 MRR/流失率数据。

步骤
  1. 拉取活跃订阅
    列出所有活跃 Stripe 订阅(status='active' 或 'trialing')。按 price_id 分组,求和 MRR 等效值。✓ 已复制
    → 每个价格的总计 + 总计
  2. 拉取本月取消的
    列出过去 30 天内取消的订阅。对于每一个,展示开始日期、贡献的 MRR 和客户。✓ 已复制
    → 带有收入影响的流失列表
  3. 计算净新增 MRR
    净新增 MRR = 本月新增 - 本月流失。计算并写一个 3 行总结。✓ 已复制
    → 单个数字和计算细分

结果: 一份准确的 MRR 快照,你可以粘贴到月度审查中。

注意事项
  • 年度计划需要月度标准化 — 求和 MRR 时将年度价格除以 12;MCP 不会为你做这个
  • 折扣和抵扣扭曲了总额对比净额 — 决定 MRR 约定(折扣前总额或折扣后净额)并一致应用
搭配使用: filesystem

以适当的防护措施处理退款

👤 有退款权限的支持主管 ⏱ ~5 min beginner

何时使用: 客户请求退款;你想验证费用并干净地处理它。

前置条件
  • 具有 refunds:write 的 API key — 受限 key,仅授予最小范围
步骤
  1. 查找并验证费用
    查找 Stripe 费用 ch_xxx。展示金额、客户、状态以及是否已退款(部分或全部)。✓ 已复制
    → 费用详情 + 退款历史
  2. 预览退款
    我想从 $200 中退款 $50(部分)。给我看退款调用会是什么样的。还不要执行。✓ 已复制
    → API 调用的干运行预览
  3. 确认后执行
    继续部分退款。返回退款 ID 和更新的费用状态。✓ 已复制
    → 退款已创建,费用标记为 partially_refunded

结果: 已干净处理退款并带有审计跟踪。

注意事项
  • 退款超过原始费用会失败并造成混淆 — 请求前总是检查剩余可退款余额;MCP 会回显限制
  • 退款触发了你的应用的 webhook——可能会重复更新内部状态 — 与维护 webhook 处理器的人协调退款流

在季度结束前审计余额和最近的支付

👤 财务、创始人 ⏱ ~10 min intermediate

何时使用: 季度末,你想确切知道 Stripe 中有什么以及什么即将到达银行。

步骤
  1. 获取当前余额细分
    展示当前 Stripe 余额:可用、待处理、在途。按货币分类。✓ 已复制
    → 按货币的余额三元组
  2. 列出最近的支付
    列出过去 90 天的支付,包含日期、金额、状态和到账日期。按日期降序排序。✓ 已复制
    → 带有总计的支付时间表
  3. 与你的账簿对账
    该期间的总支付金额是多少?告诉我接下来 7 天内预期到账的金额。✓ 已复制
    → 汇总期间总计 + 短期预测

结果: 一份可用于对账的总结。

注意事项
  • 准备金和有争议的资金不在'可用'中 — 不要认为 balance.available + balance.pending = 总现金;分别检查持有的余额
搭配使用: filesystem

组合

与其他 MCP 搭配,撬动十倍杠杆

stripe + supabase

Stripe webhook → Supabase Edge Function → Stripe MCP 查询以丰富事件处理

当 Stripe webhook 'invoice.payment_failed' 触发时,Edge Function 调用 Stripe MCP 获取客户的最近费用,并将摘要粘贴到我们的 Slack ops 频道。✓ 已复制
stripe + postgres

将 Stripe 费用与你的内部订单数据库对账

对于昨天的每个成功 Stripe 费用,通过 stripe_payment_intent_id 在我们的 orders 表中查找匹配行。标记不匹配。✓ 已复制
stripe + filesystem

将 Stripe 数据导出为 CSV 给财务团队

将上季度的所有发票导出到 /reports/invoices-Q1-2026.csv,包含客户邮箱、金额、状态和日期。✓ 已复制

工具

此 MCP 暴露的能力

工具输入参数何时调用成本
list_customers / retrieve_customer / create_customer / update_customer Stripe customer params 客户 CRUD free Stripe API
list_products / create_product / update_product product params 产品目录操作 free
list_prices / create_price price params 价格操作(一次性或经常性) free
list_invoices / create_invoice / finalize_invoice / pay_invoice invoice params 发票生命周期 free
create_invoice_item customer, amount, currency, description 向草稿发票添加一行 free
list_payment_intents / retrieve_payment_intent PI params 检查支付流状态 free
list_charges / retrieve_charge charge params 费用检查 free
create_refund charge: str, amount?: int 发起全额或部分退款——在实时模式下是破坏性的 free Stripe API; refund itself moves money
create_payment_link line_items, after_completion? 生成托管支付 URL 发送给客户 free
list_subscriptions / cancel_subscription / update_subscription subscription params 订阅生命周期 free
retrieve_balance none 当前可用/待处理余额 free
list_payouts limit, created? 查看最近和即将进行的支付 free
search_* query: str (Stripe Search syntax) 通过 Search API 对资源进行强大的过滤 free

成本与限制

运行它的成本

API 配额
Stripe API 有慷慨的速率限制(实时模式下 100 req/s 读取,测试模式下默认 25 req/s)
每次调用 Token 数
Stripe 对象是 token 重的(丰富的嵌套数据)。仅在需要时使用 expand;限制列表大小
费用
MCP 免费;Stripe 按处理的支付收费,而不是按 API 调用
提示
在测试模式下,成本为零。在实时模式下,唯一重要的'成本'是意外发行的退款或发票——用 --tools= 过滤来控制写入。

安全

权限、密钥、影响范围

最小权限: 受限 key,每个工作流的最小范围(例如支持的 Customers:read + Charges:read)
凭据存储: API key 在环境变量 STRIPE_SECRET_KEY 中。从不提交。使用受限 key,而不是根密钥。
数据出站: 所有调用到 api.stripe.com(TLS,由 Stripe 处理 PCI)
切勿授予: 向长期运行的 agents 提供根密钥 向没有 HITL 的自动工作流提供具有 Refunds:write 或 Subscriptions:write 的 API key

故障排查

常见错误与修复

401 Invalid API Key

Key 错误、已撤销或测试/实时不匹配。在仪表板中验证。确认环境变量导出到 MCP 客户端进程。

验证: curl https://api.stripe.com/v1/balance -u $STRIPE_SECRET_KEY:
Permission denied: this key has no access to ...

受限 key 缺少相关范围。在仪表板中编辑 key 以授予所需权限。

Refund: amount exceeds remaining refundable

费用已部分退款。首先检索费用,检查 amount_refunded,仅退款剩余部分。

Search returns 0 results despite the object existing

Stripe Search 有传播延迟(新创建对象约 1 分钟)。对于最近的项目使用 list/retrieve。

替代方案

Stripe 对比其他方案

替代方案何时用它替代权衡
通过 shell 的 Stripe CLI你想要 webhook 转发、fixture 生成或本地测试流没有 agent 人体工程学;为开发工作流设计
通过 fetch MCP 的直接 REST API你需要官方 MCP 没有暴露的功能认证、分页和类型都是手动的;容易出错得多

更多

资源

📖 阅读 GitHub 上的官方 README

🐙 查看未解决的 issue

🔍 浏览全部 400+ MCP 服务器和 Skills