[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80307":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":15,"starSnapshotCount":15,"syncStatus":14,"lastSyncTime":27,"discoverSource":28},80307,"JazzCashMCP","TehreemArbab\u002FJazzCashMCP","TehreemArbab","Open-source Model Context Protocol (MCP) server for JazzCash — Pakistan's largest mobile-money platform. Hosted Checkout, Mobile Wallet charges, inquiries, and refunds for AI agents.",null,"TypeScript",71,13,70,2,0,1,3,3.44,"MIT License",false,"main",true,[],"2026-06-12 02:04:00","# mcp-jazzcash\n\n[![npm version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fnpm-mcp--jazzcash-cb3837?logo=npm)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fmcp-jazzcash)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](.\u002FLICENSE)\n[![Node](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fnode-%E2%89%A518.17-339933?logo=node.js&logoColor=white)](https:\u002F\u002Fnodejs.org)\n[![MCP](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FModel_Context_Protocol-1.0-7c3aed)](https:\u002F\u002Fmodelcontextprotocol.io)\n[![Status](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstatus-alpha-orange)]()\n\nAn open-source [Model Context Protocol](https:\u002F\u002Fmodelcontextprotocol.io) server for **JazzCash** — Pakistan's largest mobile-money platform. Plug it into Claude Desktop, Cursor, Cline, or any MCP-aware agent and let it create checkouts, charge mobile wallets, look up transactions, and issue refunds against the JazzCash REST API.\n\n> **Sandbox-by-default. Bring your own merchant credentials. No secrets bundled.**\n\n---\n\n## Table of contents\n\n- [Why this exists](#why-this-exists)\n- [Tools](#tools)\n- [Quick start](#quick-start)\n- [Configuration](#configuration)\n- [Wire it into Claude Desktop](#wire-it-into-claude-desktop)\n- [Use it from any MCP client](#use-it-from-any-mcp-client)\n- [How the signature works](#how-the-signature-works)\n- [Endpoint overrides](#endpoint-overrides)\n- [Security model](#security-model)\n- [Roadmap](#roadmap)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Why this exists\n\nThe Pakistani payments stack is fragmented and English-language documentation for AI agents is thin. This MCP gives any agent a stable, typed interface to JazzCash so you don't have to teach it the signature scheme, field names, and gotchas every time. Prompt your agent in plain English; let the server do the cryptography and HTTP.\n\n## Tools\n\n| Tool | Purpose |\n|---|---|\n| `jazzcash_create_hosted_checkout` | Builds a signed Hosted Checkout (Page Redirection) form. Returns the action URL, hidden fields, and a ready-to-use HTML snippet your app can serve. |\n| `jazzcash_charge_mobile_wallet` | Server-to-server MWALLET charge. Customer authorizes via MPIN on their phone. |\n| `jazzcash_inquire_transaction` | Status lookup by `pp_TxnRefNo`. |\n| `jazzcash_refund_transaction` | Full or partial refund (requires merchant role). |\n| `jazzcash_environment_info` | Reports active environment, endpoint URLs, and which credentials are present. **Never returns secrets.** |\n\nAll amounts are passed as **PKR paisa** (rupees × 100) to avoid float rounding.\n\n## Quick start\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FTehreemArbab\u002FJazzCashMCP.git\ncd JazzCashMCP\nnpm install\ncp .env.example .env       # then edit .env with your sandbox credentials\nnpm run build\nnpm start\n```\n\nThe server speaks MCP over stdio, so `npm start` is most useful when launched by an MCP client (see below). To verify the build alone:\n\n```bash\nnpm run typecheck\n```\n\n## Configuration\n\nCopy `.env.example` to `.env` and fill in credentials from your JazzCash merchant portal:\n\n```bash\nJAZZCASH_MERCHANT_ID=MC...\nJAZZCASH_PASSWORD=...\nJAZZCASH_INTEGRITY_SALT=...\nJAZZCASH_ENV=sandbox\nJAZZCASH_RETURN_URL=https:\u002F\u002Fyourapp.example.com\u002Fjazzcash\u002Fcallback\n```\n\nSandbox credentials are issued at \u003Chttps:\u002F\u002Fsandbox.jazzcash.com.pk>. To go live, switch `JAZZCASH_ENV=production` and swap in your live merchant credentials — no code changes required.\n\n| Variable | Required | Notes |\n|---|---|---|\n| `JAZZCASH_MERCHANT_ID` | yes | From the merchant portal. |\n| `JAZZCASH_PASSWORD` | yes | API password, not your portal login. |\n| `JAZZCASH_INTEGRITY_SALT` | yes | HMAC key for `pp_SecureHash`. |\n| `JAZZCASH_ENV` | yes | `sandbox` or `production`. |\n| `JAZZCASH_RETURN_URL` | only for hosted checkout | Where JazzCash redirects the customer post-payment. |\n| `JAZZCASH_LANGUAGE` | no | Default `EN`. |\n| `JAZZCASH_CURRENCY` | no | Default `PKR`. |\n| `JAZZCASH_VERSION` | no | Default `1.1`. |\n| `JAZZCASH_*_URL` | no | Per-endpoint URL override; see [Endpoint overrides](#endpoint-overrides). |\n\n## Wire it into Claude Desktop\n\nAdd this to `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"jazzcash\": {\n      \"command\": \"node\",\n      \"args\": [\"C:\u002Fpath\u002Fto\u002Fmcp-jazzcash\u002Fdist\u002Findex.js\"],\n      \"env\": {\n        \"JAZZCASH_MERCHANT_ID\": \"MC...\",\n        \"JAZZCASH_PASSWORD\": \"...\",\n        \"JAZZCASH_INTEGRITY_SALT\": \"...\",\n        \"JAZZCASH_ENV\": \"sandbox\",\n        \"JAZZCASH_RETURN_URL\": \"https:\u002F\u002Fyourapp.example.com\u002Fjazzcash\u002Fcallback\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop, then try:\n\n> *\"Using the JazzCash MCP, create a hosted checkout for PKR 1500 with description 'Order #1023' and bill reference 'INV1023'.\"*\n\nClaude will call `jazzcash_create_hosted_checkout` and hand back the form HTML.\n\n## Use it from any MCP client\n\nThe server uses stdio transport, so it works with anything that speaks MCP — Cursor, Cline, Continue, Zed, and custom agents built on the [MCP TypeScript SDK](https:\u002F\u002Fgithub.com\u002Fmodelcontextprotocol\u002Ftypescript-sdk). Point the client at `node \u002Fpath\u002Fto\u002Fdist\u002Findex.js` and pass the same env vars shown above.\n\n## How the signature works\n\nJazzCash uses **HMAC-SHA256** over alphabetically sorted, non-empty `pp_*` fields, joined with `&`, with the merchant's Integrity Salt as both the HMAC key and a prepended salt:\n\n```text\nmessage = integritySalt + \"&\" + sortedField1Value + \"&\" + sortedField2Value + ...\nhash    = hex(HMAC_SHA256(key=integritySalt, message))\n```\n\n`pp_SecureHash` itself is excluded from the message. Empty values are skipped. The implementation lives in [`src\u002Fsignature.ts`](.\u002Fsrc\u002Fsignature.ts) — small enough to audit in 30 seconds.\n\n## Endpoint overrides\n\nDefault endpoint URLs ship for both sandbox and production. If JazzCash rotates a path, override the relevant variable without changing code:\n\n```bash\nJAZZCASH_HOSTED_CHECKOUT_URL=https:\u002F\u002Fsandbox.jazzcash.com.pk\u002F...\u002FHostedCheckout\nJAZZCASH_MOBILE_WALLET_URL=https:\u002F\u002Fsandbox.jazzcash.com.pk\u002F...\u002FDoMWalletTransaction\nJAZZCASH_INQUIRY_URL=https:\u002F\u002Fsandbox.jazzcash.com.pk\u002F...\u002FStatusInquiry\nJAZZCASH_REFUND_URL=https:\u002F\u002Fsandbox.jazzcash.com.pk\u002F...\u002FDoRefundTransaction\n```\n\n## Security model\n\n- **No bundled secrets.** Credentials are read from environment variables only.\n- **No secrets in tool output.** `jazzcash_environment_info` returns only booleans for which credentials are configured.\n- **Sandbox is the default.** Production requires explicitly setting `JAZZCASH_ENV=production`.\n- **Stdio transport.** The server has no network listener; it talks only to the parent MCP client process.\n- **Audit-friendly.** Signature logic is isolated in one short file. No vendored crypto.\n\nIf you find a security issue, please open a private advisory on GitHub rather than a public issue.\n\n## Roadmap\n\n- [ ] Card \u002F Tokenization tools (Authorize, Capture, Retrieve\u002FDelete Token)\n- [ ] IPN webhook signature-verification helper\n- [ ] Voucher \u002F OTC payment flow\n- [ ] CLI (`mcp-jazzcash inspect`) for hash debugging\n- [ ] Published npm package + automated releases\n\n## Contributing\n\nIssues and PRs welcome. A few ground rules:\n\n- Don't paste real merchant credentials into bug reports — use the placeholder `JAZZCASH_*` names.\n- Keep new tools framework-agnostic; the server should remain usable from any MCP client.\n- Run `npm run typecheck` before opening a PR.\n\n## License\n\n[MIT](.\u002FLICENSE). Not affiliated with or endorsed by JazzCash, Mobilink Microfinance Bank, or VEON.\n","该项目是一个开源的Model Context Protocol (MCP)服务器，专为巴基斯坦最大的移动支付平台JazzCash设计。它支持通过AI代理进行托管结账、手机钱包充值、交易查询及退款等操作。使用TypeScript编写，核心功能包括创建托管结账页面、执行钱包充值、查询交易状态以及处理退款请求，并且所有金额均以PKR派萨（卢比×100）形式传递以避免浮点数舍入误差。适用于需要与JazzCash API集成但希望简化开发流程的应用场景，如电子商务网站或金融服务应用，尤其适合那些希望利用AI代理简化支付流程的企业。","2026-06-11 04:00:15","CREATED_QUERY"]