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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49f6043a26a01885577755052710ce998dab70b7fc720f1947390131689880fe
|
|
| MD5 |
c1fbc3545b9c7fb83341363329e0fd0d
|
|
| BLAKE2b-256 |
a23bae14b36458dee5644614e8e3426b8118e7c70088e6901233b0a4089cb76e
|
Provenance
The following attestation bundles were made for mcp_newebpay-0.1.0.tar.gz:
Publisher:
publish.yml on asgard-ai-platform/mcp-newebpay
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_newebpay-0.1.0.tar.gz -
Subject digest:
49f6043a26a01885577755052710ce998dab70b7fc720f1947390131689880fe - Sigstore transparency entry: 1223868794
- Sigstore integration time:
-
Permalink:
asgard-ai-platform/mcp-newebpay@7e472f96aa5bdc7261db05d59ec2f70522c15878 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/asgard-ai-platform
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7e472f96aa5bdc7261db05d59ec2f70522c15878 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40b8f8661d0376b0ec71af5bed6f67a6d4e5fc3b78fe5eedb1923fa03c49d100
|
|
| MD5 |
8621d58b13d945371317ed8c1b6dabc0
|
|
| BLAKE2b-256 |
86fdd41eea55944e352fb1ddc6e4b2937690c49fac15290df3257916a41ecff9
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_newebpay-0.1.0-py3-none-any.whl -
Subject digest:
40b8f8661d0376b0ec71af5bed6f67a6d4e5fc3b78fe5eedb1923fa03c49d100 - Sigstore transparency entry: 1223868866
- Sigstore integration time:
-
Permalink:
asgard-ai-platform/mcp-newebpay@7e472f96aa5bdc7261db05d59ec2f70522c15878 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/asgard-ai-platform
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7e472f96aa5bdc7261db05d59ec2f70522c15878 -
Trigger Event:
release
-
Statement type: