{
  "markdown": "# easypaydirect-mcp\n\n[![npm](https://img.shields.io/npm/v/easypaydirect-mcp.svg)](https://www.npmjs.com/package/easypaydirect-mcp)\n[![CI](https://github.com/praveendias1180/easypaydirect-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/praveendias1180/easypaydirect-mcp/actions/workflows/ci.yml)\n[![docs](https://img.shields.io/badge/docs-online-1f6feb.svg)](https://praveendias1180.github.io/easypaydirect-mcp/)\n[![good first issues](https://img.shields.io/github/issues/praveendias1180/easypaydirect-mcp/good%20first%20issue?color=7057ff&label=good%20first%20issues)](https://github.com/praveendias1180/easypaydirect-mcp/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22)\n[![license: MIT](https://img.shields.io/npm/l/easypaydirect-mcp.svg)](LICENSE)\n\n📖 **Documentation:** <https://praveendias1180.github.io/easypaydirect-mcp/>\n\n> **Unofficial, read-only [Model Context Protocol](https://modelcontextprotocol.io) server for the [Easy Pay Direct](https://easypaydirect.com) (EPD) / NMI-family payment gateway.**\n\nGive an AI assistant (Claude Desktop, Claude Code, or any MCP client) safe, **read-only** access to your gateway's transactions, subscriptions, recurring plans, and Customer Vault records — so you can ask questions like *\"find the failed transactions for this customer last week\"* or *\"is this subscription still active?\"* in plain language.\n\nEasy Pay Direct is built on the **NMI / Network Merchants** gateway platform, so this server works with **any NMI white-label gateway** — just point it at your gateway's host. EPD is the headline example, not the limit.\n\n> ⚠️ **Not affiliated with, endorsed by, or sponsored by Easy Pay Direct or NMI.** \"Easy Pay Direct\", \"EPD\", and \"NMI\" are trademarks of their respective owners. This is an independent open-source client for their public [Query API](https://docs.nmi.com/reference/query).\n\n---\n\n## Why read-only?\n\nThis server talks **only** to the gateway's [Query API](https://docs.nmi.com/reference/query) (`/api/query.php`) — the reporting endpoint. It has **no code path** to the transaction endpoint (`transact.php`), so it **cannot** charge a card, issue a refund, void a transaction, or modify the vault. An LLM connected to this server can look, but it cannot touch money. See [`docs/security.md`](docs/security.md).\n\nWrite operations may arrive in a future major version — always **opt-in, off by default, and loudly gated**.\n\n---\n\n## Install & run\n\nRequires **Node.js 18+**.\n\n```bash\n# no install needed — run straight from npm\nnpx easypaydirect-mcp\n```\n\nThe server speaks MCP over **stdio** and expects two environment variables:\n\n| Variable | Required | Description |\n|---|---|---|\n| `NMI_SECURITY_KEY` | ✅ | Your gateway API **security key** (a **read-only** key is recommended). Merchant portal → Settings → Security Keys. |\n| `NMI_API_URL` | — | Gateway API base URL. Defaults to `https://secure.nmi.com`. For EPD/white-labels, set this to your gateway's host. |\n\nSee [`docs/configuration.md`](docs/configuration.md) for how to find your key and host.\n\n## Connect it to Claude\n\n**Claude Desktop** — add to `claude_desktop_config.json` (see [`examples/claude-desktop-config.json`](examples/claude-desktop-config.json)):\n\n```json\n{\n  \"mcpServers\": {\n    \"easypaydirect\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"easypaydirect-mcp\"],\n      \"env\": {\n        \"NMI_SECURITY_KEY\": \"your_read_only_security_key\",\n        \"NMI_API_URL\": \"https://secure.nmi.com\"\n      }\n    }\n  }\n}\n```\n\n**Claude Code:**\n\n```bash\nclaude mcp add easypaydirect \\\n  -e NMI_SECURITY_KEY=your_read_only_security_key \\\n  -e NMI_API_URL=https://secure.nmi.com \\\n  -- npx -y easypaydirect-mcp\n```\n\nFull walkthrough: [`docs/getting-started.md`](docs/getting-started.md).\n\n## Tools\n\nAll tools are **read-only**. Full reference in [`docs/tools.md`](docs/tools.md).\n\n| Tool | What it does |\n|---|---|\n| `get_transaction` | Fetch one transaction by gateway transaction ID. |\n| `search_transactions` | Search transactions by date range + filters (condition, action type, payment type, source, email, order id). |\n| `get_subscription` | Fetch one recurring subscription by ID. |\n| `list_subscriptions` | List recurring subscriptions, optionally by created/updated date range. |\n| `list_recurring_plans` | List recurring billing plans (or one by `plan_id`). |\n| `get_customer_vault_record` | Fetch one stored Customer Vault record by ID. |\n| `list_customer_vault` | List stored Customer Vault records, optionally by date range. |\n\n## Develop\n\n```bash\ngit clone https://github.com/praveendias1180/easypaydirect-mcp.git\ncd easypaydirect-mcp\nnpm install\nnpm run build      # compile TypeScript to dist/\nnpm run typecheck  # type-check only\n```\n\nLocal run against the MCP Inspector:\n\n```bash\nnpx @modelcontextprotocol/inspector node dist/index.js\n```\n\nArchitecture and how tools map to the Query API: [`docs/nmi-api-mapping.md`](docs/nmi-api-mapping.md).\n\n## Roadmap\n\nPlanned / under consideration — contributions welcome (see [open issues](https://github.com/praveendias1180/easypaydirect-mcp/issues)):\n\n- **Tests** — unit suite with recorded Query API fixtures ([#1](https://github.com/praveendias1180/easypaydirect-mcp/issues/1))\n- **Friendlier dates** — accept ISO-8601 in date filters ([#2](https://github.com/praveendias1180/easypaydirect-mcp/issues/2))\n- **More filters** — merchant-defined fields on `search_transactions` ([#3](https://github.com/praveendias1180/easypaydirect-mcp/issues/3))\n- **Better errors** — map NMI response codes to actionable messages ([#4](https://github.com/praveendias1180/easypaydirect-mcp/issues/4))\n- **Distribution** — a Docker image ([#7](https://github.com/praveendias1180/easypaydirect-mcp/issues/7)) and publish-on-release automation ([#8](https://github.com/praveendias1180/easypaydirect-mcp/issues/8))\n- **Docs** — response-field reference ([#9](https://github.com/praveendias1180/easypaydirect-mcp/issues/9))\n\nRead-only stays the default posture — any write support would be a separate, opt-in, gated **major** version.\n\nSee the [changelog](CHANGELOG.md) for released changes.\n\n## Contributing\n\nContributions are welcome — this aims to be a small, dependable, **read-only** MCP server. See [`CONTRIBUTING.md`](CONTRIBUTING.md) for the ground rules and dev setup.\n\n**New here?** Start with a [**good first issue**](https://github.com/praveendias1180/easypaydirect-mcp/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) — each one has context, a task checklist, file pointers, and acceptance criteria. Have a question? Open a [Discussion](https://github.com/praveendias1180/easypaydirect-mcp/discussions).\n\n## License\n\n[MIT](LICENSE) © the easypaydirect-mcp contributors.\n",
  "bytes": 6688,
  "sha": "bb0988e5ba363b256f766aabbf00e21f4bd3f2a9b363d4503aa609ae82c39237",
  "repo_slug": "praveendias1180/easypaydirect-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_praveendias1180_easypaydirect__b4eb34db/readme"
}