Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Esolat Cfworker

FreeNot checked

Port of esolat-mcp to Cloudflare Workers as a fully stateless MCP Streamable HTTP server. No Docker. No Python. No server to manage.

GitHubEmbed

About

Port of esolat-mcp to Cloudflare Workers as a fully stateless MCP Streamable HTTP server. No Docker. No Python. No server to manage.

README

CloudflareWorker

GitHub Repo stars Cloudflare Workers MCP M365 Copilot Buy

Port of esolat-mcp to Cloudflare Workers as a fully stateless MCP Streamable HTTP server.
No Docker. No Python. No server to manage. Runs on Cloudflare's global edge — free tier eligible.

Features

  • ✅ Full MCP Streamable HTTP protocol (JSON-RPC 2.0)
  • ✅ Compatible with M365 Copilot, Claude.ai, and any MCP HTTP client
  • ✅ Token-based auth in URL path (same pattern as Docker edition)
  • ✅ Health dashboard endpoint
  • ✅ All 3 original tools preserved:
    • get_monthly_prayer_times — JAKIM/e-Solat (Malaysia) or Aladhan (global)
    • find_nearest_mosques — e-Solat JAKIM (Malaysia) or OpenStreetMap (global)
    • get_yearly_islamic_events — JAKIM or Aladhan
  • ✅ CORS headers for browser-based clients
  • ✅ Batch JSON-RPC support

Endpoints

Path Description
/ Landing page with endpoint info
/mcp/<TOKEN>/mcp MCP endpoint — point your client here
/mcp/<TOKEN>/health Health dashboard (upstream API status)

Quick Deploy

1. Prerequisites

npm install -g wrangler
wrangler login

2. Clone & Install

git clone <this-repo>
cd esolat-cfworker
npm install

3. Set Your Secret Token

wrangler secret put MCP_WEBHOOK_TOKEN
# Enter a strong random token when prompted
# e.g.: openssl rand -hex 32

4. Deploy

npm run deploy

Your Worker will be live at:

https://esolat-mcp.<your-subdomain>.workers.dev

Local Development

npm run dev
# Worker runs at http://localhost:8787

Test with curl:

# Initialize
curl -X POST http://localhost:8787/mcp/<TOKEN>/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

# List tools
curl -X POST http://localhost:8787/mcp/<TOKEN>/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

# Get prayer times
curl -X POST http://localhost:8787/mcp/<TOKEN>/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_monthly_prayer_times","arguments":{"location_name":"Kajang"}}}'

Architecture

Claude.ai / M365 Copilot
        │
        │  HTTPS POST (JSON-RPC 2.0)
        ▼
Cloudflare Workers Edge
  ┌─────────────────────────────┐
  │  Token auth (path-based)    │
  │  MCP protocol handler       │
  │  Tool dispatcher            │
  └─────────────────────────────┘
        │
        ├──► api.waktusolat.app  (Malaysia prayer times)
        ├──► e-solat.gov.my      (JAKIM mosque + events)
        ├──► api.aladhan.com     (Global fallback)
        └──► nominatim.osm.org   (Geocoding)

Connecting to M365 Copilot

In Microsoft 365 Copilot Studio or Copilot extensibility settings:

  1. Add a new MCP connector
  2. Set the URL to:
    https://esolat-mcp.<your-subdomain>.workers.dev/mcp/<YOUR_TOKEN>/mcp
    
  3. Transport: Streamable HTTP
  4. No additional auth headers needed (token is in the path)

Credits

License

This project is licensed under the MIT License.

Disclaimer & Data Source

Important Notice & Reliability Disclaimer

This integration pulls data directly from the official e-Solat JAKIM (Department of Islamic Development Malaysia) portal. However, please note:

  • No Liability: This integration is a community-driven project provided "as is" without any guarantees. The maintainer is not solely or legally responsible for any discrepancies, inaccuracies, delays, or omissions in prayer times or calendar dates.
  • Verify Important Times: Users are strictly advised to regularly check and verify times against the official JAKIM eSolat Portal or official local announcements, especially for critical obligations (e.g., fasting, community prayers).
  • Network & Upstream Dependencies: Synchronization depends on upstream API availability and local network connectivity. Discrepancies caused by unexpected server updates from JAKIM or local server downtime are outside the control of this software.

By using this tool, you acknowledge and agree that the developer holds no liability for missed schedules or data inaccuracies.

from github.com/zubir2k/esolat-cfworker

Installing Esolat Cfworker

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/zubir2k/esolat-cfworker

FAQ

Is Esolat Cfworker MCP free?

Yes, Esolat Cfworker MCP is free — one-click install via Unyly at no cost.

Does Esolat Cfworker need an API key?

No, Esolat Cfworker runs without API keys or environment variables.

Is Esolat Cfworker hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Esolat Cfworker in Claude Desktop, Claude Code or Cursor?

Open Esolat Cfworker on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Esolat Cfworker with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs