Skip to main content
Glama
hebrew-il-mcp

hebrew-il-mcp

by Shtibel1

CI version license TypeScript MCP

Deterministic Israeli & Hebrew tools for AI agents — ת״ז, IBAN, מע״מ, מיקוד, bank days, Hebrew dates, gematria.

A Model Context Protocol server that gives AI agents reliable, deterministic tools for Israeli and Hebrew data — the things LLMs routinely get wrong when they try to do them "in their head":

Tools

Tool

What it does

validate_israeli_id

Validates Teudat Zehut / ח.פ / amuta / Osek Murshe numbers with the official check digit and detects the entity type from the registry prefix (51 company, 58 amuta, 55 partnership, …).

normalize_israeli_phone

Parses 050-1234567, +972 (0)54 765 4321, 00972-3-…, 1-800-… into E.164 plus a national display format and line type (mobile / landline / VoIP / toll-free).

calculate_israeli_vat

Adds or splits מע"מ using the rate in force on the transaction date (17% → 18% on 2025‑01‑01, with history back to 2012), rounded to agorot.

israeli_iban

Validates an Israeli IBAN (ISO 7064 MOD 97-10), splits it into bank / branch / account and names the bank, or builds the IBAN from the domestic details printed on a cheque.

normalize_israeli_plate

Validates and formats Israeli vehicle licence plates, both the 7-digit NN-NNN-NN and the 8-digit NNN-NN-NNN formats.

normalize_israeli_postal_code

Validates a 7-digit Israeli postal code (מיקוד) and formats it as XX-XXX-XX.

lookup_israeli_city

Resolves Hebrew/English city names (aliases, niqqud-stripped) against a curated table of ~70 major localities with representative postal prefixes.

israeli_city_from_postal

Maps a 7-digit mikud to the best-matching curated locality via longest-prefix match (approximation — not a full Israel Post dump).

israeli_business_day

Checks whether a Gregorian date is an Israeli bank/clearing business day (Shabbat + full-closure Jewish holidays + Independence Day with civil postponement rules). Friday is still a business day.

next_israeli_business_day

Returns the first Israeli bank business day strictly after a given date.

israeli_holidays

Lists Israeli bank full-closure holidays (excl. weekly Shabbat) in a Gregorian year.

israeli_vat_rate

Returns the standard VAT rate for a given date.

hebrew_date

Converts a Gregorian date to the Hebrew calendar, including the traditional form (כ״א בחשוון תשפ״ז).

hebrew_numeral

Writes numbers as Hebrew numerals with correct ט״ו / ט״ז handling and gershayim.

hebrew_text_tools

Strips niqqud and cantillation marks and computes standard gematria.

Every tool returns both human-readable text and structuredContent, and invalid input produces an MCP isError result instead of crashing the session.

Related MCP server: mquickcalc-utility

Why

Agents that handle Israeli invoices, CRM leads or bookkeeping keep tripping over the same things: an ID number that "looks fine" but fails the checksum, phone numbers stored in five formats, VAT computed at last year's rate, Hebrew dates hallucinated. These are pure, well-defined functions — so they belong in a tool, not in a prompt.

Quick start

Claude Desktop / Cursor / any MCP client

{
  "mcpServers": {
    "hebrew-il": {
      "command": "npx",
      "args": ["-y", "github:Shtibel1/hebrew-il-mcp"]
    }
  }
}

Or from a local clone:

npm install && npm run build
node dist/cli.js   # speaks MCP over stdio

Over HTTP (Streamable HTTP, stateless)

Run it as a hosted endpoint for remote agents, or behind a load balancer — every request gets a fresh server, so there are no sessions to pin:

node dist/cli.js --http --port 3000                      # POST http://127.0.0.1:3000/mcp, GET /healthz
node dist/cli.js --http --host 0.0.0.0 --allowed-origin https://app.example

PORT, HOST and ALLOWED_ORIGINS (comma-separated) are read when the flags are omitted. It binds to 127.0.0.1 by default, rejects browser requests from origins not on the allow-list (DNS-rebinding protection), and caps request bodies at 1 MB. Point any Streamable HTTP MCP client at /mcp.

As a library

import { validateIsraeliId, calculateVat, toHebrewDate, buildIsraeliIban, israeliBusinessDay, normalizeIsraeliPostalCode, lookupIsraeliCity } from "hebrew-il-mcp";

validateIsraeliId("515555555", "corporate"); // { valid, normalized, kind: "company", ... }
calculateVat(1180, true, "2026-03-01");      // { rate: 0.18, net: 1000, vat: 180, gross: 1180 }
toHebrewDate("2026-11-01").formatted;        // "כ״א בחשוון תשפ״ז"
buildIsraeliIban(10, 800, 99999999);         // "IL620108000000099999999"
israeliBusinessDay("2026-04-22").businessDay; // false — Independence Day
normalizeIsraeliPostalCode("12-345-67");     // { valid: true, formatted: "12-345-67", ... }
lookupIsraeliCity("Hadera");                 // { found: true, he: "חדרה", ... }

Architecture

flowchart LR
  C["MCP client<br/>(Claude Desktop, Cursor, agents)"] -- stdio --> CLI[cli.ts]
  R["Remote agent"] -- "Streamable HTTP /mcp" --> HTTP["http.ts<br/>stateless · origin guard"]
  CLI --> S
  HTTP --> S["server.ts<br/>zod schemas · isError results"]
  S --> L
  subgraph L["src/lib — pure domain core"]
    ID[id] --- PH[phone] --- VAT[vat] --- IB[iban] --- PL[plate] --- PO[postal] --- HE[hebrew] --- HO[holidays]
  end
  APP["Your TS app"] -- import --> L

Layout

src/
  lib/        pure, dependency-free domain functions (id, phone, vat, iban, plate, postal, hebrew, holidays)
  server.ts   MCP wiring: zod input schemas + uniform JSON / isError results
  http.ts     stateless Streamable HTTP transport (/mcp, /healthz, origin guard, body cap)
  cli.ts      entry point: stdio by default, --http for the HTTP transport
test/
  lib.test.ts     unit tests for each domain module
  server.test.ts  end-to-end tests through a real MCP client (in-memory transport)
  http.test.ts    end-to-end tests through a real MCP client over HTTP
  • Pure core, thin adapter. All logic lives in src/lib with no MCP dependency, so it is reusable as a plain TypeScript library and trivially testable.

  • Date-aware VAT. Rates are a dated table, not a constant, so historical invoices are computed correctly.

  • Hebrew calendar via ICU. Conversion uses Intl.DateTimeFormat with ca-hebrew (no hand-rolled calendar math); only the letter-numeral formatting is custom.

  • Curated postal / city table. ~70 major localities with prefix ranges — honest approximation, not a national Israel Post dump.

Development

npm test          # vitest
npm run typecheck
npm run build

Roadmap

  • Publish to npm so npx hebrew-il-mcp works without the GitHub shorthand

  • Israeli bank-holiday / business-day calendar tool

  • Postal code and city-name normalization

  • Hosted (Streamable HTTP) transport option

Contributing

Issues and PRs are welcome. Every tool should stay a pure function in src/lib with unit tests, plus an end-to-end case in test/server.test.ts.

License

MIT © Nadav Shtibel

Available Tools

8 tools
calculate_israeli_vatCalculate Israeli VAT (מע"מ)A

Add VAT to a net amount or split a VAT-inclusive amount, using the Israeli VAT rate that was in force on the given date (defaults to today).

Inputs: amount (required), includesVat (required), date.

hebrew_dateGregorian to Hebrew dateA

Convert a Gregorian date (YYYY-MM-DD) to the Hebrew calendar, including the traditional letter form (e.g. כ״א בחשוון תשפ״ז).

Inputs: date (required).

hebrew_numeralNumber to Hebrew numeralA

Write a positive integer as a Hebrew numeral (e.g. 15 -> ט״ו, 5787 -> תשפ״ז).

Inputs: number (required), keepThousands.

hebrew_text_toolsHebrew text utilitiesC

Strip niqqud and cantillation from Hebrew text and compute its standard gematria value.

Inputs: text (required).

israeli_ibanValidate or build an Israeli IBANA

Validate an Israeli IBAN (MOD 97 check digits) and split it into bank, branch and account, or build the IBAN from domestic bank details (bank code, branch, account number). Pass either iban or bank+branch+account.

Inputs: bank, iban, branch, account.

israeli_vat_rateIsraeli VAT rate on a dateA

Return the standard Israeli VAT rate in force on a date (YYYY-MM-DD).

Inputs: date (required).

normalize_israeli_phoneNormalize Israeli phone numberA

Parse an Israeli phone number in any common format and return E.164 (+972...), a national display format and the line type (mobile, landline, VoIP, toll-free).

Inputs: phone (required).

validate_israeli_idValidate Israeli ID / company numberA

Validate an Israeli Teudat Zehut, company (ח.פ), amuta or Osek Murshe number using the official check digit. Returns the zero-padded number and the detected entity kind.

Inputs: number (required), expect.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 8 tools

    Disambiguation4/5

    Most tools target clearly distinct resources: phone normalization, ID validation, IBAN handling, Hebrew calendar, gematria, and numerals are separable. The only real friction is the VAT pair (calculate_israeli_vat vs israeli_vat_rate) and the numeral family (hebrew_numeral, hebrew_text_tools gematria, hebrew_date letter form), but descriptions make the boundaries clear enough.

    Naming Consistency3/5

    Half the tools use verb_noun (normalize_israeli_phone, validate_israeli_id, calculate_israeli_vat) while the other half are bare nouns (israeli_vat_rate, hebrew_date, hebrew_numeral, israeli_iban, hebrew_text_tools). Mixed verb style versus noun style, but all snake_case and readable, so it lands in the middle.

    Tool Count5/5

    Eight tools for a focused Israeli/Hebrew localization utility set is well-scoped, with no obvious filler or redundancy. Each tool covers a distinct everyday need (phone, ID, VAT, dates, gematria, numerals, IBAN).

    Completeness3/5

    Coverage is broad but several conversions are one-directional: Hebrew date to Gregorian and Hebrew numeral to integer are missing, and gematria/numerals are split across tools without a clear inverse path. Core validations are solid, but agents hitting reverse conversions or needing holiday/currency context will dead-end.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Verified locale data for AI agents: dates, phone numbers, currency formatting, VAT/sales-tax by date, public holidays, and addresses (UK & US). Returns checked answers and flags impossible inputs instead of guessing.
      7
      Apache 2.0
    • A
      license
      B
      quality
      C
      maintenance
      Enables AI agents to perform 22 unit conversions and common calculations such as length, weight, temperature, volume, tip, percentage, date difference, age, currency, cooking, and fuel consumption.
      14
      1
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI agents to verify Israeli companies and assess supplier invoice and payment risk before sending funds, exposing registry-backed evidence, company-change events, invoice gates, and x402 payee-trust checks with deterministic PAY/HOLD/BLOCK and ALLOW/REVIEW/DENY outcomes. It also provides free previews and schema/service discovery tools over remote MCP.
      MIT