Example apps built on the Lumin MCP server.
KP astrology inside a product feature, not a chatbot.
| App | What it does | Birth data |
|---|---|---|
today-panel |
Panchang, choghadiya and hora for any city | No |
horary-desk |
Ask a question, pick a number 1 to 249, get a verdict | No |
weather-windows |
Outdoor windows for a place and date range | No |
muhurta-scheduler |
A date picker that knows what the date is for | Yes |
kundli-match |
Three compatibility systems, side by side | Two charts |
career-fit |
Vocational fit and timing, each rule reported separately | Yes |
wellness-matcher |
Ayurvedic products matched to a chart-derived constitution | Yes |
products-matcher |
Consumer personality, then products across categories | Yes |
health-risk-analyzer |
Constitutional risk across body systems | Yes |
Three need no personal data at all. 21 of the server's tools take only a place and a date, or only a number and a moment, so you can ship a real feature with no consent flow.
USE-CASES.md lists 98 more, with the tool chain for each.
Needs Bun 1.2 or newer.
bun install
cp apps/today-panel/.env.example apps/today-panel/.env.local
bun run --filter today-panel dev # http://localhost:3110Two keys. ANTHROPIC_API_KEY is yours, the model bill is yours.
LUMIN_API_KEY comes from app.lumin.guru/developer.
Top up any amount from $1 for 400 calls. A lookup is a few calls, a full reading is 25 to 40.
Bun is the package manager and task runner. Next itself still builds on Node, because Next 16 with Turbopack does not run under the Bun runtime yet.
Every app calls packages/lumin-client.
const result = await runLumin({
allowedTools: ALLOWED_TOOLS, // the model can call these and nothing else
system: buildSystemPrompt(),
user: buildUserPrompt(input),
maxTokens: 16000,
effort: "xhigh",
signal: req.signal,
});
const parsed = ensureShape(parseJsonBlock<MatchResponse>(result.text), validate);It handles what a bare messages.create does not: pause_turn resumption, refusals and
truncation mapped to real statuses, a check that some Lumin tool actually ran, and the rate
limit that arrives as tool-result text rather than an HTTP status.
CONTRIBUTING.md. Two rules matter most. Verify every tool name, because
bun run check:tools fails CI on one that does not exist. Label every non-KP tool, because a
third of the surface is Parashari, Jaimini or Tajik.
MIT. See LICENSE.