Paypay Mcp

io.github.mrslbtPublished by GitHub account mrslbtv0.2.1Updated Oct 24, 2026

PayPay QR payments for AI agents: QR codes, status, refunds, cancels. Bilingual JP/EN.

VerifiedSTDIODesktop onlyFinanceBusiness & Commerce

Overview

AI-generated overview

Local MCP server that lets an AI assistant create PayPay QR payments, check payment status, and optionally refund or cancel payments.

What you can do
Create dynamic PayPay QR codes and return the payment URL, deeplink and a rendered PNG image, plus invalidate a QR code before payment is made. Fetch payment details and poll until a payment reaches a terminal state. Issue full or partial refunds and cancel payments whose state is unclear, both only when explicitly enabled. Read bundled reference resources on the PayPay OPA API, payment lifecycle and the active non-secret configuration. Use built-in prompts for accepting a single payment, refunding the last payment and debugging a stuck payment.
When to use it
Useful when a merchant with PayPay Open Payment API credentials wants an assistant to take QR payments, monitor their status, or handle refunds and cancellations from a chat or agent workflow. Test against the sandbox first before routing real payments.
Requirements
Runs locally via npm (Node.js 20+ with TLS 1.2+). Requires PAYPAY_API_KEY, PAYPAY_API_SECRET and PAYPAY_MERCHANT_ID from the PayPay Developer Dashboard. PAYPAY_ENV defaults to sandbox; production needs completed PayPay merchant onboarding. Optional HTTP mode uses MCP_TRANSPORT, MCP_HTTP_PORT, MCP_HTTP_HOST, MCP_AUTH_TOKEN and MCP_HTTP_ALLOWED_ORIGINS.
Before you install
It can move real money through the PayPay API. Refund and cancel tools stay disabled unless PAYPAY_ENABLE_REFUNDS or PAYPAY_ENABLE_CANCELS is set to true; enable them only where tool inputs cannot be influenced by untrusted content. Review every money-moving call before approving it. Production requires PAYPAY_ENV=production. Public HTTP binds require MCP_AUTH_TOKEN. The server is unofficial and not affiliated with PayPay; the author accepts no liability for lost funds.

Installation

In SourceWeft

  1. Open Paypay Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

paypay-mcp

[npm version] [npm downloads] [MCP Badge] [License: MIT]

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

ToolDescription
create_qr_codeCreate a dynamic PayPay QR code. Returns the payment URL, deeplink, and a rendered PNG.
get_payment_detailsFetch the current status of a payment.
wait_for_paymentPoll until a payment reaches a terminal state.
delete_qr_codeInvalidate a QR code before payment.
refund_paymentFull or partial refund. Disabled unless PAYPAY_ENABLE_REFUNDS=true.
cancel_paymentCancel 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

URIDescription
paypay://docs/opa-referenceEndpoint map, auth scheme, and status vocabulary for the PayPay OPA API.
paypay://docs/payment-statesPayment lifecycle and the cancel-vs-refund decision rule.
paypay://config/currentNon-secret view of the active config (env, merchantId, baseUrl, transport).

Install

One-click:

[Install in Cursor] [Install in VS Code]

Or via npm:

bash
npm install -g paypay-mcp

Configuration

Credentials come from the PayPay Developer Dashboard.

VariableRequiredDescription
PAYPAY_API_KEYyesOPA API Key ID
PAYPAY_API_SECRETyesOPA API Key Secret
PAYPAY_MERCHANT_IDyesMerchant ID
PAYPAY_ENVnosandbox (default) or production
PAYPAY_ENABLE_REFUNDSnoSet to true to expose refund_payment. Disabled by default.
PAYPAY_ENABLE_CANCELSnoSet to true to expose cancel_payment. Disabled by default.
MCP_TRANSPORTnostdio (default) or http
MCP_HTTP_PORTnoPort when MCP_TRANSPORT=http. Default 3000.
MCP_HTTP_HOSTnoBind address. Default 127.0.0.1. Public binds require MCP_AUTH_TOKEN.
MCP_AUTH_TOKENnoBearer token required on inbound HTTP requests when set. Mandatory for non-loopback binds.
MCP_HTTP_ALLOWED_ORIGINSnoComma-separated CORS allowlist. Default: none.

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

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

bash
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.

bash
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

bash
git clone https://github.com/mrslbt/paypay-mcp.gitcd paypay-mcpnpm installcp .env.example .envnpm run devnpm testnpm run smokenpm 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_payment and cancel_payment are only registered when PAYPAY_ENABLE_REFUNDS=true or PAYPAY_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 flagged readOnlyHint; money-moving and destructive tools (refund_payment, cancel_payment, delete_qr_code) are flagged destructiveHint so 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

MIT

Source: README.md at commit 36eea75

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.2.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts