kairos-lang-mcp
Evaluate (list/next) and validate Kairos schedule definitions; look up the descriptor reference
- 01Stars
- 0
- 02Version
- 1.0.10
- 03License
- Apache-2.0
- 04Review
- Passed
- Language
- TypeScript
- Last commit
- 1h ago
- Forks
- 0
- Open issues
- 3
- Registry update
- Oct 16, 2026
Connect
npm$claude mcp add kairos-lang-mcp \ -- npx -y [email protected]
Environment variables
Nothing to configure — it works as is.
Security review
Review passedReviewed 12m ago.
- metadata
- scanned
- packages
- 1 checked
No findings.
Tools
This server runs on your machine, so its tool list is not fetched before install — the README below describes what it offers.
kairos-lang-mcp
An MCP server for Kairos, the schedule definition language (https://kairos-lang.org). It lets an AI client evaluate a schedule definition deterministically — every firing in a range, or the next N — validate a definition, and read the descriptor reference.
The server is a thin wrapper over the reference implementation's CLI: the tools return exactly what
kairos list --json / kairos next --json print (the CliReport, schema at
https://kairos-lang.org/schema/cli-report.schema.json). Points are epoch milliseconds and are the
identity; dates are one-to-one civil labels. Out-of-coverage intervals come back as annotations,
never as silently dropped points.
日本語: README.ja.md
Install
Node.js 20 or later. The server speaks MCP over stdio.
npx -y kairos-lang-mcp # start on stdio (what an MCP client runs for you)
npx -y kairos-lang-mcp --version
Claude Code
claude mcp add kairos-lang -- npx -y kairos-lang-mcp
Claude Desktop (claude_desktop_config.json) and other stdio clients:
{
"mcpServers": {
"kairos-lang": { "command": "npx", "args": ["-y", "kairos-lang-mcp"] }
}
}
Tools
| tool | input | output |
|---|---|---|
kairos_list | source, from, to, tz, supply?, explain? | CliReport for [from, to) — all firings, interval annotations, coverage summary |
kairos_next | source, tz, from? (default: today in tz), n? (default 1), horizonYears? (default 10), supply?, explain? | CliReport for the next n firings; found < requested means fewer than n exist within the horizon (the CLI's exit code 2) |
kairos_validate | source, tz, supply? | {ok, version, diagnostics: [{kind, message}], expressions} — lexing, syntax, static rules and premise resolution, without evaluating a range |
kairos_reference | word, lang? | the reference page for one descriptor (roll, within, nth, segmentBy, …; README lists them) |
Resources: kairos://llms.txt (the language overview for AI readers) and
kairos://reference/{ja|en}/{word} (the same pages as kairos_reference).
tz is required
The CLI defaults to the machine's time zone; an AI caller has no machine, so every evaluating tool
takes tz (an IANA name such as Asia/Tokyo). It decides how labels and the [from, to) endpoints
are read. If the definition's premise declares tz:, evaluation uses that zone — tz still labels
the output.
Recommended practice: define your premise once and keep it. A premise names the calendar system, the zone, the week start and the holiday tables:
premise JP {
calendar-system: Gregorian; tz: "Asia/Tokyo"; wkst: Mon
national = [2026-01-01, 2026-01-12, 2026-02-11, 2026-02-23, 2026-03-20, 2026-04-29, 2026-05-03..2026-05-06,
2026-07-20, 2026-08-11, 2026-09-21..2026-09-23, 2026-10-12, 2026-11-03, 2026-11-23] covering: 2026..2026
satSun = everyDay |> filter(d => weekday(d) == Sat or weekday(d) == Sun)
bizDay = everyDay \ (satSun | national)
}
@JP
everyDay |> within(month) |> last |> roll(Preceding, on: bizDay)
Keeping that text next to your schedules turns tacit knowledge ("our business days") into explicit
knowledge that every call reuses — and the covering: clause makes the table's expiry visible in the
output (runwayDays) instead of letting it rot silently.
Supply
supply resolves external(kind: dates | instants) bindings with a static bundle, exactly like the
CLI's --supply: { "binding" | "Premise.binding": { "dates": ["YYYY-MM-DD", …] | "instants": [ms, …], "covering": "2026-01-01..2026-12-31", "asof": "2026-10-01" } } — schema at
https://kairos-lang.org/schema/supply.schema.json.
Errors
Errors are returned as data, not as protocol errors, so the model can read and fix them.
kairos_list / kairos_next: {command, version, error: {kind: "usage" | "supply" | "static", message}}
with isError: true. kairos_validate: {ok: false, version, diagnostics: [{kind, message}]} (a finding, not
an error — no isError). kairos_reference: {error: {kind: "usage", message}, words} with isError: true
for an unknown descriptor. usage is the shape of the call (bad zone, window over 10 years, source over 64 KB),
supply a violation of the supply contract, static anything the language reports about the definition
(lexing, syntax, static rules, evaluation). Diagnostics are in Japanese — the reference implementation's
canonical output language; the report itself is language-neutral JSON (the same as the CLI's --json).
The spec in English (https://kairos-lang.org/en/spec/) defines what each diagnostic means.
Limits
Evaluation window at most 10 years; n at most 1000; horizonYears at most 10; source at most
64 KB. These guard against accidents, not against adversaries.
Name
This package is kairos-lang-mcp — the MCP server for the schedule definition language at https://kairos-lang.org.
It is unrelated to other npm packages that carry the name Kairos (such as kairos-mcp or kairos-mcp-server), which
serve other projects that happen to share the word.
Versioning
The server's version tracks kairos-lang (same number, same contract); it depends on
kairos-lang for evaluation and on @modelcontextprotocol/sdk for the protocol.
License
Apache-2.0. The bundled reference pages and llms.txt are copies from the same repository.
From the server's repository — third-party content, read it before running anything it suggests.
More in Productivity
AiNecto
io.github.codelives
AiNecto MCP connector for workspace, document, ERD, diagram, task, and attachment workflows.
Filelayer
dev.filelayer
User files for a SaaS, under one person's authority: list, share with an expiry, revoke.
Nothing.gripe
io.github.AmithKumar1
Funded one-off task marketplace: list open tasks, read, estimate, post and fund.
twitterapi-io-mcp
io.github.dorukardahan
Offline access to TwitterAPI.io docs for AI assistants. 67 endpoints, 32 pages, 24 blog posts.
Toggl 2.0
io.github.toggl
Toggl 2.0 MCP server for tasks, projects, time entries, and workspace operations.
kordoc
io.github.chrisryugj
Parse Korean documents (HWP, HWPX, PDF, XLSX, DOCX, PPTX) to Markdown; fill forms, diff, render.
Listing from the official MCP Registry · repository facts from GitHub, 15m ago.