npm paypay-mcpstdioMITupdated 27d ago
Model Context Protocol server for the PayPay Open Payment API.
paypay mcp で何ができる?
paypay-mcp
Model Context Protocol server for the PayPay Open Payment API.
Works with Claude Desktop, Claude Code, Cursor, Windsurf, Zed, ChatGPT Apps SDK, and any other MCP-compatible client. Tool descriptions are provided in English and Japanese.
Status
v0.2.x — production-capable, not yet battle-tested at scale.
The server runs cleanly against PayPay's production Open Payment API once PAYPAY_ENV=production is set with approved merchant credentials. It has not yet processed meaningful real-world volume. If you are routing real payments through it, pin the version and review the source first.
Tools
| Tool | Description |
|---|---|
create_qr_code |
Create a dynamic PayPay QR code. Returns the payment URL, deeplink, and a rendered PNG. |
get_payment_details |
Fetch the current status of a payment. |
wait_for_payment |
Poll until a payment reaches a terminal state. |
delete_qr_code |
Invalidate a QR code before payment. |
refund_payment |
Full or partial refund. Disabled unless PAYPAY_ENABLE_REFUNDS=true. |
cancel_payment |
Cancel a payment when its state is unclear (timeout or error). Disabled unless PAYPAY_ENABLE_CANCELS=true. |
Prompts
accept_single_payment, refund_last_payment, debug_stuck_payment.
Resources
| URI | Description |
|---|---|
paypay://docs/opa-reference |
Endpoint map, auth scheme, and status vocabulary for the PayPay OPA API. |
paypay://docs/payment-states |
Payment lifecycle and the cancel-vs-refund decision rule. |
paypay://config/current |
Non-secret view of the active config (env, merchantId, baseUrl, transport). |
Install
One-click:
Or via npm:
npm install -g paypay-mcp
Configuration
Credentials come from the PayPay Developer Dashboard.
| Variable | Required | Description |
|---|---|---|
PAYPAY_API_KEY |
yes | OPA API Key ID |
PAYPAY_API_SECRET |
yes | OPA API Key Secret |
PAYPAY_MERCHANT_ID |
yes | Merchant ID |
PAYPAY_ENV |
no | sandbox (default) or production |
PAYPAY_ENABLE_REFUNDS |
no | Set to true to expose refund_payment. Disabled by default. |
PAYPAY_ENABLE_CANCELS |
no | Set to true to expose cancel_payment. Disabled by default. |
MCP_TRANSPORT |
no | stdio (default) or http |
MCP_HTTP_PORT |
no | Port when MCP_TRANSPORT=http. Default 3000. |
MCP_HTTP_HOST |
no | Bind address. Default 127.0.0.1. Public binds require MCP_AUTH_TOKEN. |
MCP_AUTH_TOKEN |
no | Bearer token required on inbound HTTP requests when set. Mandatory for non-loopback binds. |
MCP_HTTP_ALLOWED_ORIGINS |
no | Comma-separated CORS allowlist. Default: none. |
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"paypay": {
"command": "npx",
"args": ["-y", "paypay-mcp"],
"env": {
"PAYPAY_API_KEY": "a_...",
"PAYPAY_API_SECRET": "...",
"PAYPAY_MERCHANT_ID": "...",
"PAYPAY_ENV": "sandbox"
}
}
}
}
Claude Code
claude mcp add paypay -e PAYPAY_API_KEY=... -e PAYPAY_API_SECRET=... -e PAYPAY_MERCHANT_ID=... -- npx -y paypay-mcp
Cursor
Add to ~/.cursor/mcp.json with the same shape as Claude Desktop.
Remote hosting
Run in HTTP mode. Public binds require MCP_AUTH_TOKEN; the server refuses to start otherwise.
MCP_TRANSPORT=http \
MCP_HTTP_HOST=0.0.0.0 \
MCP_AUTH_TOKEN="$(openssl rand -hex 32)" \
MCP_HTTP_ALLOWED_ORIGINS="https://claude.ai,https://your-app.example.com" \
PAYPAY_ENV=sandbox \
PAYPAY_API_KEY=... PAYPAY_API_SECRET=... PAYPAY_MERCHANT_ID=... \
npx paypay-mcp
Endpoint: POST http(s)://<host>:3000/mcp (Streamable HTTP transport). Clients send Authorization: Bearer <MCP_AUTH_TOKEN>. CORS is closed by default.
For local testing the auth token can be omitted; the server binds to 127.0.0.1 and only accepts loopback connections.
Environments
Sandbox is the default. Production requires PayPay merchant onboarding (business verification and a contract) and must be enabled by explicitly setting PAYPAY_ENV=production.
Constraints
- Amounts are integer JPY.
- A payment can be canceled until 00:14:59 JST the day after the payment attempt. After that, use a refund.
- A single order can receive multiple partial refunds, each with a unique
merchantRefundId, up to the merchant-configured cap. - TLS 1.2+ required (Node 20+).
Development
git clone https://github.com/mrslbt/paypay-mcp.git
cd paypay-mcp
npm install
cp .env.example .env
npm run dev
npm test
npm run smoke
npm run build
Roadmap
v0.2: PreAuth + Capture, ContinuousPayments, DirectDebit, AccountLink QR, webhook signature verification, reconciliation tools.
v0.3: Native Payment (App Invoke + user JWT auth), Visa-partnership endpoints, OpenTelemetry tracing.
Safety
This server can move real money through the PayPay OPA API. Key safeguards:
- Refund and cancel tools are disabled by default.
refund_paymentandcancel_paymentare only registered whenPAYPAY_ENABLE_REFUNDS=trueorPAYPAY_ENABLE_CANCELS=true. Only enable them in trusted agent contexts where tool inputs cannot be influenced by untrusted content. - Sandbox is the default. Production requires an explicit
PAYPAY_ENV=production, plus completed PayPay merchant onboarding. Always test against sandbox first. - Unique merchantPaymentId and merchantRefundId per call. PayPay deduplicates by these IDs, so reusing one will either fail or target an older payment. Generate a fresh ID for each new payment or refund.
- Tools carry MCP safety annotations. Read-only tools (
get_payment_details,wait_for_payment) are flaggedreadOnlyHint; money-moving and destructive tools (refund_payment,cancel_payment,delete_qr_code) are flaggeddestructiveHintso compatible clients can warn you before the call. These are advisory hints — the real guard is the gating above.
Even with these gates on, review any money-moving request before approving the tool call. Treat tool inputs derived from model output as untrusted.
Disclaimer
This is an unofficial, community-built MCP server. Not affiliated with, endorsed by, or sponsored by PayPay Corporation. PayPay is a registered trademark of its respective owners. Use at your own risk. The author accepts no liability for funds lost through misuse, prompt injection, or bugs.
License
インストール
paypay mcp をクライアントに追加します。お使いのものを選んでください。
claude mcp add paypay-mcp -- npx -y paypay-mcpcodex mcp add paypay-mcp -- npx -y paypay-mcpamp mcp add paypay-mcp -- npx -y paypay-mcp{
"mcpServers": {
"paypay-mcp": {
"command": "npx",
"args": [
"-y",
"paypay-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"paypay-mcp": {
"command": "npx",
"args": [
"-y",
"paypay-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"paypay-mcp","command":"npx","args":["-y","paypay-mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"paypay-mcp": {
"command": "npx",
"args": [
"-y",
"paypay-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"paypay-mcp": {
"command": "npx",
"args": [
"-y",
"paypay-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"paypay-mcp": {
"command": "npx",
"args": [
"-y",
"paypay-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"paypay-mcp": {
"type": "local",
"command": "npx",
"args": [
"-y",
"paypay-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"paypay-mcp": {
"command": {
"path": "npx",
"args": [
"-y",
"paypay-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y paypay-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
6 個のツール
paypay mcp は接続したエージェントに 6 個のツールを提供します。
- create_qr_code
- Create a dynamic PayPay QR code. Returns the payment URL, deeplink, and a rendered PNG.
- get_payment_details
- Fetch the current status of a payment.
- wait_for_payment
- Poll until a payment reaches a terminal state.
- delete_qr_code
- Invalidate a QR code before payment.
- refund_payment
- Full or partial refund. **Disabled unless `PAYPAY_ENABLE_REFUNDS=true`.**
- cancel_payment
- Cancel a payment when its state is unclear (timeout or error). **Disabled unless `PAYPAY_ENABLE_CANCELS=true`.**
スコア
84 / 100
優秀
- ドキュメント25/25
- メンテナンス25/25
- 信頼性13/20
- 機能9/15
- 導入のしやすさ12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 20 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 6 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
バージョン履歴
| バージョン | 公開日 |
|---|---|
| 0.2.1最新 | 2026年8月16日 |
| 0.2.0 | 2026年8月2日 |
| 0.1.3 | 2026年6月22日 |