Skip to main content

MCP Server for NewebPay (藍新金流) — AI-callable payment tools via Model Context Protocol

Project description

MCP NewebPay

Model Context Protocol server for NewebPay (藍新金流) — Taiwan's leading payment gateway. Exposes 8 payment APIs as AI-callable tools.

繁體中文

Part of the Asgard AI Platform open-source ecosystem.

Features

  • 8 payment tools covering payment creation, transaction queries, refunds, and recurring payment management
  • AES-256-CBC encryption built-in — handles NewebPay's encryption/decryption protocol automatically
  • Test/Production switch — single env var to toggle between sandbox and live environments
  • stdio JSON-RPC 2.0 — standard MCP transport

Tools

Payment (NDNF — Online Transaction)

Tool API Description
create_mpg_payment NPA-F01 Create a payment and return encrypted form data for browser redirect
query_trade NPA-B02 Query single transaction status, payment and refund details
cancel_authorization NPA-B01 Cancel credit card authorization
close_refund NPA-B031~34 Request close, refund, cancel close, or cancel refund
ewallet_refund NPA-B06 Refund e-wallet payments (LINE Pay, Taiwan Pay, etc.)

Recurring Payment (NDNP — Credit Card Periodic Payment)

Tool API Description
create_period_payment NPA-B05 Create a recurring mandate and return encrypted form data for browser redirect
alter_period_status NPA-B051 Suspend, terminate, or restart a recurring mandate
alter_period_content NPA-B052 Modify mandate amount, billing cycle, or expiry

Quick Start

Install from PyPI

pip install mcp-newebpay

Or clone and install locally

git clone https://github.com/asgard-ai-platform/mcp-newebpay.git
cd mcp-newebpay
uv venv && source .venv/bin/activate
uv pip install -e .

Configure

cp .env.example .env
# Edit .env with your NewebPay credentials

Environment variables (configure only what you need):

Variable Description
NEWEBPAY_ENV test (default) or production
NDNF — Online Transaction
NEWEBPAY_NDNF_MERCHANT_ID Merchant ID for payment APIs
NEWEBPAY_NDNF_HASH_KEY Hash Key (32 chars)
NEWEBPAY_NDNF_HASH_IV Hash IV (16 chars)
NDNP — Recurring Payment
NEWEBPAY_NDNP_MERCHANT_ID Merchant ID for recurring APIs
NEWEBPAY_NDNP_HASH_KEY Hash Key (32 chars)
NEWEBPAY_NDNP_HASH_IV Hash IV (16 chars)

NDNF and NDNP may use different merchant accounts. Only configure the set you need — tools for unconfigured APIs will report a clear error if called.

Run

python mcp_server.py

Claude Code Integration

This project includes .mcp.json for auto-discovery. Add to your Claude Code config:

{
  "mcpServers": {
    "newebpay": {
      "command": "python",
      "args": ["mcp_server.py"],
      "cwd": "/path/to/mcp-newebpay",
      "env": {
        "NEWEBPAY_ENV": "test",
        "NEWEBPAY_NDNF_MERCHANT_ID": "your_ndnf_merchant_id",
        "NEWEBPAY_NDNF_HASH_KEY": "your_ndnf_hash_key",
        "NEWEBPAY_NDNF_HASH_IV": "your_ndnf_hash_iv",
        "NEWEBPAY_NDNP_MERCHANT_ID": "your_ndnp_merchant_id",
        "NEWEBPAY_NDNP_HASH_KEY": "your_ndnp_hash_key",
        "NEWEBPAY_NDNP_HASH_IV": "your_ndnp_hash_iv"
      }
    }
  }
}

Usage Examples

Once the MCP server is running and connected to your AI assistant, you can interact with NewebPay using natural language:

Create Payment

You: "Help me create a credit card payment for order A20250403001, amount NT$350, item: Annual membership"

AI: I've generated the payment form for order A20250403001. Here are the details:

  • Amount: NT$350
  • Payment page URL: https://ccore.newebpay.com/MPG/mpg_gateway

Please open the following URL in a browser to complete the payment. The customer will be redirected to NewebPay's secure payment page to enter their card details.

Raw API Response
{
  "url": "https://ccore.newebpay.com/MPG/mpg_gateway",
  "form_data": {
    "MerchantID": "MS358668323",
    "TradeInfo": "04ac744434c76218dd6ba52b78da433f...",
    "TradeSha": "EFCFC9E418A8DCBE49370897FA4FCFFA...",
    "Version": "2.0"
  }
}

Query Transaction

You: "Has order mcp1775195782 been paid? The amount was NT$100"

AI: Yes, order mcp1775195782 has been paid successfully. Here's a summary:

Item Detail
Status Paid (TradeStatus: 1)
Amount NT$100
Payment Method Credit Card (CREDIT)
Card 400022******1111
Auth Code 114493
Acquiring Bank KGI (凱基銀行)
Close Status Settled (3)
Refund Status None (0)
Trade No 26040313563142518
Raw API Response
{
  "Status": "SUCCESS",
  "Message": "查詢成功",
  "Result": {
    "MerchantID": "MS358668323",
    "Amt": 100,
    "TradeNo": "26040313563142518",
    "MerchantOrderNo": "mcp1775195782",
    "TradeStatus": "1",
    "PaymentType": "CREDIT",
    "RespondCode": "00",
    "Auth": "114493",
    "Card6No": "400022",
    "Card4No": "1111",
    "AuthBank": "KGI",
    "CloseStatus": "3",
    "BackStatus": "0"
  }
}

Close (Settle)

You: "Request a close for order demo1775199586, amount NT$200"

AI: Done! The close (settle) request for order demo1775199586 has been submitted successfully.

  • Amount: NT$200
  • Trade No: 26040315000942606
  • The funds will be settled to your account on the next business cycle.
Raw API Response
{
  "Status": "SUCCESS",
  "Message": "請款資料新增成功_模擬信用卡請款成功",
  "Result": {
    "MerchantID": "MS358668323",
    "Amt": 200,
    "MerchantOrderNo": "demo1775199586",
    "TradeNo": "26040315000942606"
  }
}

Cancel Authorization

You: "Cancel the credit card authorization for order canc1775199618, amount NT$150"

AI: The credit card authorization for order canc1775199618 has been cancelled.

  • Amount: NT$150
  • Trade No: 26040315002642607
  • The hold on the customer's credit card has been released.
Raw API Response
{
  "Status": "SUCCESS",
  "Message": "放棄授權成功",
  "Result": {
    "MerchantID": "MS358668323",
    "Amt": 150,
    "MerchantOrderNo": "canc1775199618",
    "TradeNo": "26040315002642607"
  }
}

Modify Recurring Payment

You: "Change the recurring amount to NT$149 for mandate P260403144725zl3MVV"

AI: The recurring mandate P260403144725zl3MVV has been updated:

  • New amount per period: NT$149
  • Next billing date: 2026-04-05
  • The updated amount will take effect starting from the next billing cycle.
Raw API Response
{
  "Status": "SUCCESS",
  "Message": "定期定額委託單修改成功!",
  "Result": {
    "MerOrderNo": "per1775198836",
    "PeriodNo": "P260403144725zl3MVV",
    "AlterAmt": "149",
    "NewNextAmt": "149",
    "NewNextTime": "2026-04-05"
  }
}

Suspend Recurring Payment

You: "Pause the recurring mandate P260403144725zl3MVV"

AI: The recurring mandate P260403144725zl3MVV has been paused. No further charges will be made until you resume it.

To resume, just say: "Resume mandate P260403144725zl3MVV"

Raw API Response
{
  "Status": "SUCCESS",
  "Message": "定期定額委託單暫停成功",
  "Result": {
    "MerOrderNo": "per1775198836",
    "PeriodNo": "P260403144725zl3MVV",
    "AlterType": "suspend"
  }
}

Project Structure

mcp-newebpay/
├── app.py                       # MCPServer singleton
├── mcp_server.py                # Entry point (stdio transport)
├── config/settings.py           # Endpoints, URL builder, env switch
├── connectors/
│   └── newebpay_client.py       # AES encrypt/decrypt + Form POST
├── auth/
│   └── newebpay.py              # Merchant ID + Hash Key/IV credentials
├── tools/
│   ├── payment_tools.py         # NDNF: query, cancel, close/refund, e-wallet refund
│   └── periodic_tools.py        # NDNP: alter status, alter content
├── tests/test_all_tools.py      # E2E test runner
└── reference/                   # NewebPay official API docs (PDF)

Testing

# Test connection with NewebPay API
python scripts/auth/test_connection.py

# Run all tool E2E tests
python tests/test_all_tools.py

NewebPay API Reference

License

MIT License — see LICENSE for details.

Part of the Asgard Ecosystem

This server is part of the Asgard AI Platform, connecting AI to real-world services across e-commerce, finance, government data, and more.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_newebpay-0.1.0.tar.gz (16.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_newebpay-0.1.0-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file mcp_newebpay-0.1.0.tar.gz.

File metadata

  • Download URL: mcp_newebpay-0.1.0.tar.gz
  • Upload date:
  • Size: 16.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mcp_newebpay-0.1.0.tar.gz
Algorithm Hash digest
SHA256 49f6043a26a01885577755052710ce998dab70b7fc720f1947390131689880fe
MD5 c1fbc3545b9c7fb83341363329e0fd0d
BLAKE2b-256 a23bae14b36458dee5644614e8e3426b8118e7c70088e6901233b0a4089cb76e

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_newebpay-0.1.0.tar.gz:

Publisher: publish.yml on asgard-ai-platform/mcp-newebpay

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcp_newebpay-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mcp_newebpay-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mcp_newebpay-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 40b8f8661d0376b0ec71af5bed6f67a6d4e5fc3b78fe5eedb1923fa03c49d100
MD5 8621d58b13d945371317ed8c1b6dabc0
BLAKE2b-256 86fdd41eea55944e352fb1ddc6e4b2937690c49fac15290df3257916a41ecff9

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_newebpay-0.1.0-py3-none-any.whl:

Publisher: publish.yml on asgard-ai-platform/mcp-newebpay

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page