npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@theyahia/fawaterak-mcp

v1.1.0

Published

MCP server for Fawaterak (Egypt) — 8 tools: invoice creation, payment methods, status, refunds. Aggregates Fawry, cards, wallets, Meeza.

Readme

@theyahia/fawaterak-mcp

MCP server for Fawaterak (Egypt) — payment aggregator covering Fawry, cards, wallets, Meeza in a single API. 8 tools. Bearer auth. Stdio + Streamable HTTP transports.

npm License: MIT


Tools (8)

Invoices

| Tool | Description | |------|-------------| | create_invoice_link | Create a hosted checkout invoice link — customer opens it to pay via any enabled method. | | send_payment | Initiate a payment with a specific payment_method_id (e.g. force Fawry only). | | get_invoice_data | Get full invoice details by invoice ID. | | list_invoices | List invoices with pagination + optional status filter. | | cancel_invoice | Cancel an unpaid invoice. | | refund_payment | Refund a paid invoice (full or partial — depends on method). |

Account

| Tool | Description | |------|-------------| | get_payment_methods | List all enabled payment methods (Fawry, cards, wallets, Meeza) with commission rates. | | get_balance | Get merchant balance — settled and pending amounts. |


Quick Start

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "fawaterak": {
      "command": "npx",
      "args": ["-y", "@theyahia/fawaterak-mcp"],
      "env": {
        "FAWATERAK_API_KEY": "your_api_key",
        "FAWATERAK_SANDBOX": "true"
      }
    }
  }
}

Set FAWATERAK_SANDBOX=true for staging endpoint; remove or set to false for production.

Cursor / Windsurf

Same configuration block under mcpServers.

VS Code (Copilot)

Add to .vscode/mcp.json:

{
  "servers": {
    "fawaterak": {
      "command": "npx",
      "args": ["-y", "@theyahia/fawaterak-mcp"],
      "env": { "FAWATERAK_API_KEY": "your_key", "FAWATERAK_SANDBOX": "true" }
    }
  }
}

Streamable HTTP transport

HTTP_PORT=3000 FAWATERAK_API_KEY=your_key npx @theyahia/fawaterak-mcp

Endpoints:

  • POST /mcp — MCP requests
  • GET /mcp — SSE event stream (per session)
  • DELETE /mcp — session termination
  • GET /health{ status: "ok", version, tools, uptime, memory_mb }

Environment Variables

| Variable | Required | Description | |----------|----------|-------------| | FAWATERAK_API_KEY | yes | Bearer API key from your Fawaterak merchant panel. | | FAWATERAK_SANDBOX | no | Set to "true" to use staging.fawaterk.com. Default: production app.fawaterk.com. | | HTTP_PORT | no | If set, server runs in HTTP mode on this port. |


Authentication

  1. Sign up at fawaterk.com and verify your business.
  2. Generate an API key from the merchant panel.
  3. Use the key as FAWATERAK_API_KEY.
  4. Test against staging.fawaterk.com first by setting FAWATERAK_SANDBOX=true.

Docs: fawaterak-api.readme.io


Demo Prompts

Try these natural-language prompts in your MCP client:

"List Fawaterak payment methods on my account — I want to know if Fawry, cards, and Meeza are all enabled."

"Create an invoice link for 250 EGP, customer Mohammad Hamza ([email protected], phone 01234567890), 1 product called 'Premium subscription' at 250 EGP. Success URL https://mystore.com/ok, fail https://mystore.com/fail."

"Get invoice data for invoice 12345 — what's its current status?"

"List the last 50 paid invoices."

"Cancel invoice 12345 — customer changed their mind before paying."

"Refund invoice 67890 partially — return 100 EGP."

"What's my Fawaterak balance? How much has been settled?"


Development

pnpm install
pnpm --filter @theyahia/fawaterak-mcp build
pnpm --filter @theyahia/fawaterak-mcp test
pnpm --filter @theyahia/fawaterak-mcp dev   # tsx watch mode

Project layout:

servers/fawaterak/
├── src/
│   ├── index.ts          — bin entry, runServer
│   ├── server.ts         — createServer factory + 8 tools (inline definitions)
│   └── client.ts         — BaseHttpClient + ApiKeyStrategy + sandbox/prod URL switching
└── tests/
    ├── client.test.ts    — auth headers + sandbox/prod URLs + body shape + missing-key error
    └── server.test.ts    — createServer factory smoke

License

MIT — see LICENSE.