hebrew-il-mcp
Deterministic Israeli/Hebrew validation and conversion utilities for AI agents, exposed as MCP tools.
Validate Israeli ID, company (ח.פ), amuta, and Osek Murshe numbers using the official check digit and detect entity type.
Normalize Israeli phone numbers into E.164 and national display formats, identifying mobile, landline, VoIP, or toll-free lines.
Calculate Israeli VAT on net or VAT-inclusive amounts using the rate in force on a given date, and look up the VAT rate for any date.
Convert Gregorian dates to the Hebrew calendar, including traditional Hebrew letter form.
Strip niqqud/cantillation from Hebrew text and compute standard gematria.
Convert positive integers into Hebrew numerals.
Validate or build Israeli IBANs, splitting them into bank, branch, and account details.
Note: the README lists additional tools (plates, postal codes, cities, business days, holidays) that are not present in this server schema.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hebrew-il-mcp is 515555555 a valid Israeli company number?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| 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, …). |
| Parses |
| 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. |
| 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. |
| Validates and formats Israeli vehicle licence plates, both the 7-digit |
| Validates a 7-digit Israeli postal code (מיקוד) and formats it as |
| Resolves Hebrew/English city names (aliases, niqqud-stripped) against a curated table of ~70 major localities with representative postal prefixes. |
| Maps a 7-digit mikud to the best-matching curated locality via longest-prefix match (approximation — not a full Israel Post dump). |
| 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. |
| Returns the first Israeli bank business day strictly after a given date. |
| Lists Israeli bank full-closure holidays (excl. weekly Shabbat) in a Gregorian year. |
| Returns the standard VAT rate for a given date. |
| Converts a Gregorian date to the Hebrew calendar, including the traditional form ( |
| Writes numbers as Hebrew numerals with correct ט״ו / ט״ז handling and gershayim. |
| 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 stdioOver 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.examplePORT, 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 --> LLayout
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 HTTPPure core, thin adapter. All logic lives in
src/libwith 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.DateTimeFormatwithca-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 buildRoadmap
Publish to npm so
npx hebrew-il-mcpworks without the GitHub shorthandIsraeli 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 toolscalculate_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
Scored across 8 tools
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.
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.
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).
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
Related MCP Connectors
Live Israeli public data for AI agents: alerts, prices, open data, FX rates, Shabbat times.
Build and run AI voice agents for phone calls: agents, numbers, campaigns, calls. Hebrew, English.
500+ deterministic tools for AI agents: math, conversion, validation, hashing, encoding, date/time.
Send SMS, verify phone numbers with one-time codes (OTP) and manage contacts in Israel.
Related MCP Servers
- AlicenseAqualityDmaintenanceVerified 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.7Apache 2.0
- AlicenseBqualityCmaintenanceEnables 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.141MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to validate Albanian NIPT/NUIS identifiers, perform TVSH/VAT math, compute fiscal invoice totals, and calculate 2026 payroll and profit-tax figures without network calls.7 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables 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