Malaysia Payments MCP
README.md
<!-- mcp-name: app.wishpool/malaysia-payments-mcp -->
# Malaysia Payments MCP — let AI agents accept FPX & DuitNow payments in Malaysia
<!-- install-cta -->
## Use it in 60 seconds
Paste this into your MCP client config (Claude Desktop, Cursor, Windsurf, or any MCP-capable agent):
```json
{
"mcpServers": {
"malaysia-payments": {
"type": "http",
"url": "https://mcp-my.wishpool.app/mcp"
}
}
}
```
Nothing to install. Credentials, when you need them, travel as HTTP headers on each request and are never stored — see the [threat model](https://mcp.wishpool.app/trust).
### Or run it yourself
Would you rather not send production credentials to a server you do not control? Deploy this identical code to your own account and point your agent at your own URL:
[](https://vercel.com/new/clone?repository-url=https://github.com/junter1989k-ai/malaysia-payments-mcp)
```bash
git clone https://github.com/junter1989k-ai/malaysia-payments-mcp && cd malaysia-payments-mcp && npx vercel --prod
```
MIT-licensed. Self-hosting removes us from the picture entirely, at no cost and with no loss of function.
---
> **Live** · MCP endpoint: `https://mcp-my.wishpool.app/mcp` · Listed on the [official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers?search=wishpool) as `app.wishpool/malaysia-payments-mcp` · Part of a 9-country family: [Taiwan](https://github.com/junter1989k-ai/taiwan-payments-mcp) · [Japan](https://github.com/junter1989k-ai/japan-payments-mcp) · [Korea](https://github.com/junter1989k-ai/korea-payments-mcp) · [Indonesia](https://github.com/junter1989k-ai/indonesia-payments-mcp) · [India](https://github.com/junter1989k-ai/india-payments-mcp) · [Brazil](https://github.com/junter1989k-ai/brazil-payments-mcp) · [Philippines](https://github.com/junter1989k-ai/philippines-payments-mcp) · [Thailand](https://github.com/junter1989k-ai/thailand-payments-mcp)
A remote **MCP server** that lets any AI agent (Claude, ChatGPT, Cursor…) accept payments in **Malaysia**:
- 🏦 **FPX online banking** — every major Malaysian bank, the rail Malaysia actually uses
- 📱 **DuitNow QR / cards**
- ✉️ **Bill delivery** — Billplz emails the bill to the buyer automatically
- 🔍 **Payment status check** — pull-based, no webhook needed; **no confirm step**
v0.1 routes through **[Billplz](https://www.billplz.com)**, a popular Malaysian payment gateway with hosted bill pages. The provider registry is built for aggregation.
> ⚖️ **Stateless translation layer**: funds always flow buyer → Billplz → merchant directly. This server never holds, moves, or stores funds or credentials — no database at all.
## Quick start
MCP endpoint: `https://mcp-my.wishpool.app/mcp` (Streamable HTTP, stateless JSON-RPC)
| Header | Value |
|---|---|
| `x-billplz-api-key` | Your Billplz API key (dashboard → Settings → Keys). |
| `x-billplz-collection-id` | The collection to bill under (create one in the dashboard). |
| `x-billplz-mode` | `sandbox` for [billplz-sandbox.com](https://www.billplz-sandbox.com) test accounts (no real money); omit for production. |
## Tools
| Tool | What it does |
|---|---|
| `create_payment_link` | Create a MYR bill (ringgit, min RM2; buyer name+email required). Returns hosted bill URL + `bill_id`. |
| `query_payment_status` | Check by `bill_id`: DUE / PAID. |
## Develop
```bash
node test/serve.js # local server (http://localhost:3219/mcp)
node test/e2e.js # protocol + validation suite (probes real Billplz auth errors)
```
Zero runtime dependencies; Node ≥ 18. MIT license.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing