它是由 Stainless 生成的。
你可以通过 npx 直接运行 MCP 服务器:
export DODO_PAYMENTS_API_KEY="My Bearer Token"
export DODO_PAYMENTS_WEBHOOK_KEY="My Webhook Key"
export DODO_PAYMENTS_ENVIRONMENT="live_mode"
npx -y dodopayments-mcp@latest
在 modelcontextprotocol.io 上有一个现有的客户端列表。如果你已经有一个客户端,请查阅其文档以安装 MCP 服务器。
对于具有配置 JSON 的客户端,可能看起来像这样:
{
"mcpServers": {
"dodopayments_api": {
"command": "npx",
"args": ["-y", "dodopayments-mcp", "--client=claude", "--tools=dynamic"],
"env": {
"DODO_PAYMENTS_API_KEY": "My Bearer Token",
"DODO_PAYMENTS_WEBHOOK_KEY": "My Webhook Key",
"DODO_PAYMENTS_ENVIRONMENT": "live_mode"
}
}
}
}
如果你使用 Cursor,可以通过下面的按钮安装 MCP 服务器。你需要在 Cursor 的 mcp.json 中设置环境变量,该文件可以在 Cursor 设置 > 工具 & MCP > 新 MCP 服务器中找到。
如果你使用 MCP,可以通过点击下面的链接来安装 MCP 服务器。你需要在 VS Code 的 mcp.json 中设置环境变量,该文件可以通过命令面板 > MCP: 打开用户配置找到。
如果你使用 Claude Code,可以通过在终端中运行以下命令来安装 MCP 服务器。你需要在 Claude Code 的 .claude.json 中设置环境变量,该文件可以在你的主目录中找到。
claude mcp add --transport stdio dodopayments_api --env DODO_PAYMENTS_API_KEY="Your DODO_PAYMENTS_API_KEY here." DODO_PAYMENTS_WEBHOOK_KEY="Your DODO_PAYMENTS_WEBHOOK_KEY here." -- npx -y dodopayments-mcp
有三种方式可以将端点作为工具暴露在 MCP 服务器上:
你可以在命令行上运行包以发现并过滤 MCP 服务器暴露的一组工具。这对于大型 API 非常有用,在这种情况下,一次性包含所有端点可能会超出 AI 的上下文窗口。
你可以按多个方面进行过滤:
--tool 按名称包含特定工具--resource 包含特定资源下的所有工具,可以使用通配符,例如 my.resource*--operation 只包括读取(获取/列出)或写入操作如果你指定 --tools=dynamic 到 MCP 服务器,而不是在 API 中每个端点暴露一个工具,它将暴露以下工具:
list_api_endpoints - 发现可用端点,可选地通过搜索查询进行过滤get_api_endpoint_schema - 获取特定端点的详细模式信息invoke_api_endpoint - 使用适当的参数执行任何端点这使你可以将完整的 API 端点集提供给你的 MCP 客户端,而无需一次性加载所有模式到上下文中。相反,LLM 将自动使用这些工具一起搜索、查找和动态调用端点。然而,由于模式的间接性,它可能比显式导入工具时更难以提供正确的属性。因此,你可以选择显式工具、动态工具或两者。
更多信息请参阅 --help。
所有这些命令行选项都可以重复、组合,并且有相应的排除版本(例如 --no-tool)。
使用 --list 查看可用工具列表,或者查看下面的内容。
如果你指定 --tools=code 到 MCP 服务器,它将仅暴露两个工具:
search_docs - 搜索 API 文档并返回 Markdown 结果列表execute - 对 TypeScript 客户端运行代码这允许 LLM 通过串联许多 API 调用来实现更复杂的逻辑,而无需将其中间结果加载到其上下文窗口中。
代码执行本身发生在具有网络访问权限仅限于 API 基础 URL 的 Deno 沙箱中。
不同的客户端有不同的能力来处理任意工具和模式。
你可以使用 --client 参数指定你正在使用的客户端,MCP 服务器将自动提供与该客户端更兼容的工具和模式。
--client=<type>:基于已知的 MCP 客户端设置所有功能
openai-agents, claude, claude-code, cursor--client=cursor此外,如果你的客户端不在上述列表中,或者随着时间推移变得更好,你可以手动启用或禁用某些功能:
--capability=<name>:指定单个客户端功能
top-level-unions:支持工具模式中的顶级联合valid-json:支持参数的 JSON 字符串解析refs:支持模式中的 $ref 指针unions:支持模式中的联合类型(anyOf)formats:支持模式中的格式验证(如 date-time, email)tool-name-length=N:将最大工具名称长度设置为 N 个字符--capability=top-level-unions --capability=tool-name-length=40--capability=top-level-unions,tool-name-length=40--resource=cards --operation=read
--resource=cards --no-tool=create_cards
--client=cursor --capability=tool-name-length=40
--resource=cards,accounts --operation=read --tag=kyc --no-tool=create_cards
使用 --transport=http 启动客户端会将服务器作为远程服务器启动,使用流式 HTTP 传输。--port 设置可以选择运行的端口,--socket 设置允许在 Unix 套接字上运行。
授权可以通过 Authorization 标头使用 Bearer 方案提供。
此外,授权还可以通过以下标头提供:
| 标头 | 等效客户端选项 | 安全方案 |
|---|---|---|
x-dodo-payments-api-key | bearerToken | API_KEY |
此服务器的配置 JSON 可能如下所示,假设服务器托管在 http://localhost:3000:
{
"mcpServers": {
"dodopayments_api": {
"url": "http://localhost:3000",
"headers": {
"Authorization": "Bearer <auth value>"
}
}
}
}
用于过滤工具和指定客户端的命令行参数也可以作为 URL 中的查询参数使用。 例如,为了排除特定工具同时包含其他工具,使用以下 URL:
http://localhost:3000?resource=cards&resource=accounts&no_tool=create_cards
或者,为了配置 Cursor 客户端并自定义最大工具名称长度,使用以下 URL:
http://localhost:3000?client=cursor&capability=tool-name-length%3D40
// 导入服务器、生成的端点或初始化函数
import { server, endpoints, init } from "dodopayments-mcp/server";
// 导入特定工具
import createCheckoutSessions from "dodopayments-mcp/tools/checkout-sessions/create-checkout-sessions";
// 初始化服务器和所有端点
init({ server, endpoints });
// 手动启动服务器
const transport = new StdioServerTransport();
await server.connect(transport);
// 或者使用特定工具初始化自己的服务器
const myServer = new McpServer(...);
// 定义自己的端点
const myCustomEndpoint = {
tool: {
name: 'my_custom_tool',
description: '我的自定义工具',
inputSchema: zodToJsonSchema(z.object({ a_property: z.string() })),
},
handler: async (client: client, args: any) => {
return { myResponse: 'Hello world!' };
})
};
// 使用自定义端点初始化服务器
init({ server: myServer, endpoints: [createCheckoutSessions, myCustomEndpoint] });
以下工具在此 MCP 服务器中可用。
checkout_sessions:create_checkout_sessions (write):retrieve_checkout_sessions (read):payments:create_payments (write):retrieve_payments (read):list_payments (read):retrieve_line_items_payments (read):subscriptions:create_subscriptions (write):
retrieve_subscriptions (read):
update_subscriptions (write):
list_subscriptions (read):
change_plan_subscriptions (write):
charge_subscriptions (write):
retrieve_usage_history_subscriptions (read):获取订阅的详细使用历史记录,包括基于用量计费(计量组件)。
此端点提供了客户使用模式和随时间变化的计费计算的洞察。
?start_date=2024-01-01T00:00:00Z&end_date=2024-03-31T23:59:59Z?meter_id=mtr_api_requests?page_size=20&page_number=1?start_date=2024-03-01T00:00:00Z(从 3 月 1 日到现在)update_payment_method_subscriptions (write):
invoices.payments:retrieve_invoices_payments (read):retrieve_refund_invoices_payments (read):licenses:activate_licenses (write):deactivate_licenses (write):validate_licenses (write):license_keys:retrieve_license_keys (read):update_license_keys (write):list_license_keys (read):license_key_instances:retrieve_license_key_instances (read):update_license_key_instances (write):list_license_key_instances (read):customers:create_customers (write):retrieve_customers (read):update_customers (write):list_customers (read):retrieve_payment_methods_customers (read):customers.customer_portal:create_customers_customer_portal (write):customers.wallets:list_customers_wallets (read):customers.wallets.ledger_entries:create_wallets_customers_ledger_entries (write):list_wallets_customers_ledger_entries (read):refunds:create_refunds (write):retrieve_refunds (read):list_refunds (read):disputes:retrieve_disputes (read):list_disputes (read):payouts:list_payouts (read):products:create_products (write):retrieve_products (read):update_products (write):list_products (read):archive_products (write):unarchive_products (write):update_files_products (write):products.images:update_products_images (write):misc:list_supported_countries_misc (read):discounts:create_discounts (write):POST /discounts
如果省略或为空 code,则生成一个随机的 16 位大写字母代码。retrieve_discounts (read):GET /discounts/{discount_id}update_discounts (write):PATCH /discounts/{discount_id}list_discounts (read):GET /discountsdelete_discounts (write):DELETE /discounts/{discount_id}addons:create_addons (write):retrieve_addons (read):update_addons (write):list_addons (read):update_images_addons (write):brands:create_brands (write):retrieve_brands (read):薄处理程序只是调用 get_brand 并包装在 Json(...) 中update_brands (write):list_brands (read):update_images_brands (write):webhooks:create_webhooks (write):创建新的 webhookretrieve_webhooks (read):通过 id 获取 webhookupdate_webhooks (write):通过 id 更新 webhooklist_webhooks (read):列出所有 webhookdelete_webhooks (write):通过 id 删除 webhookretrieve_secret_webhooks (read):通过 id 获取 webhook 秘密webhooks.headers:retrieve_webhooks_headers (read):通过 id 获取 webhookupdate_webhooks_headers (write):通过 id 更新 webhookusage_events:retrieve_usage_events (read):使用唯一的事件 ID 获取单个事件的详细信息。此端点适用于: