Alchm Kitchen

io.github.gregcastro23由 GitHub 账号 gregcastro23 发布v1.1.1更新于 Oct 24, 2026

Live transits, ESMS ingredients, cosmic recipes, synastry & transit×natal overlays by alchm.kitchen

已验证STDIO仅桌面位置与生活媒体与设计

概览

AI 生成的概览

来自 alchm.kitchen 的占星主题 MCP 服务器,通过 stdio 让助手获取实时行运、食材元素分析、宇宙食谱搜索、合盘与行运叠加。

可以做什么
  • 读取天象:获取观测者的当前行星位置、元素平衡与实时行运。
  • 分析食材:为最多 100 种食材提供整理好的元素/ESMS 数据与热力学指标。
  • 搜索食谱:按关键词、元素、菜系和饮食方式检索整个食谱目录,支持分页。
  • 比较星盘:计算合盘叠加、天象对出生盘的叠加,以及三重共振报价。
  • 生成与记录:把行运、食材和候选食谱打包成证据快照,并提交食谱反思。
适用场景
适合占星、食材与元素搭配或“吃什么”类的探索场景,让助手从 alchm.kitchen 拉取实时行运、食材画像和食谱匹配。它属于主题性小众服务器,而非通用工具。
运行要求
通过 npx 或 bunx 以 stdio 在本地运行(需 Node 18+ 或 Bun)。星盘与行运请求会发往后端:打包版本默认 MCP_USER_API_KEY 用于按用户配额与遥测;可选 DATABASE_URL 供运营方校验密钥、计费和记录日志。
安装前请注意
付费工具会扣减 ESMS 额度:食谱搜索与证据快照共 10 点,反思 0.4 点;不带幂等键时每次重试都会再次扣费。反思会被写入并可能发布到信息流。API 密钥属于机密;原始幂等键会在遥测中保留七天。请求与星盘数据会发送到 alchm.kitchen 后端。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Alchm Kitchen,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Alchm.kitchen MCP Server

[Listed on MCP Registry] [npm]

Version 1.4.0 exposes eight tools over stdio: live transits, curated ingredient analysis, recipe search, natal overlays, triplicate pricing, evidence snapshots and recipe reflections. It uses the maintained MCP TypeScript SDK v1 line and supports existing MCP initialization handshakes. It does not expose an HTTP/SSE server.

Install or run

bash
bunx @alchm/mcp-server# Node.js alternative (Node 18+)npx -y @alchm/mcp-server
# From this repositorybun install --cwd mcp-serverbun run mcp-server/src/index.ts
# Distributable Node bundle and standalone Bun sidecarbun run --cwd mcp-server buildbun run --cwd mcp-server build:binary

The bundle is mcp-server/dist/index.js; the sidecar is mcp-server/bin/alchm-mcp. The binary build disables working-directory dotenv/bunfig autoloading and repairs/verifies its ad-hoc signature on macOS. Building prepares local artifacts; publishing npm, registry metadata and sidecar releases are separate release steps.

Tools

ToolAuthenticated costBehavior
get_live_sky_transitsFreeCurrent planetary positions and elemental balance for an observer.
alchemize_ingredientsFreeCurated elemental/ESMS data and thermodynamic indices for up to 100 ingredients. Missing ESMS quantities remain null.
generate_cosmic_recipe2.5 of each ESMS (10 total)Search the whole recipe catalog by keywords, element, cuisine and diet. Returns 5 matches by default; limit and offset (no maximum) page through every match. Charged only when the search succeeds.
compute_synastry_overlayFreeInter-chart aspects, scores and stance. cacheStrategy: "write" updates the optional database cache and requires a matching internal probe secret.
get_transit_natal_overlayFreeSky-to-natal aspects and continuous per-element boosts for one agent.
compute_triplicate_synastryFreeQuote resonance, potential rebates and a cooldown window key; does not execute a trade or pay a rebate.
create_evidence_snapshot2.5 of each ESMS (10 total)Bundle transits, optional ingredients and recipe candidates in one call. Charged only for a complete snapshot.
submit_recipe_reflection0.1 of each ESMS (0.4 total)Save a proposed reflection and its debit in one transaction, then attempt feed publication; requires an authenticated, non-synthetic caller.

Anonymous callers can use read tools in demo mode. Recipe search and evidence snapshots debit authenticated callers; reflection publication requires authentication. Invalid supplied credentials are rejected. An operator must configure DATABASE_URL to validate API keys and apply billing. An API key alone does not connect this stdio process to a hosted authentication service.

Tool annotations identify paid calls and reflection publication as mutations. The catalog declares bounded inputs; validation runs before authentication, billing and handler work. Coordinates must be within latitude/longitude bounds, ingredient lists contain 1–100 strings, reflections are 1–4000 characters (the stored column's limit), and natal charts/amounts/timestamps must match their published schema.

Billing and safe retries

Paid reads are charged on delivery: the tool runs first, and only a successful result is settled. A failed search or a partial snapshot (an error) is never charged, a caller that cancels before settlement is not charged, and a refused settlement withholds the result (QUOTA, or UNAVAILABLE when billing cannot be reached). A reflection's debit and its recipe_reflections row commit in one transaction, so a caller is never charged for a reflection that was not stored. Feed publication runs inside the same transaction behind a savepoint: if it fails, the reflection and its charge stand and the receipt reports published: false.

Without an idempotency key every call charges again and every reflection call stores another reflection. Pass _meta.idempotencyKey (1–200 characters from A-Z a-z 0-9 . _ : ~ -) to make a paid call safe to retry:

  • A retry with identical arguments within 24 hours is not charged again (billing.status: "replayed"). A recipe search or snapshot is recomputed, so a replayed snapshot carries a new snapshotId and observation time; a reflection retry returns the stored reflection (replayed: true) and re-attempts a feed publication that previously failed, unless the reflection has since been moderated (hidden, deleted or rejected).
  • Reusing a key with different arguments, or after 24 hours, returns CONFLICT. Credentials and correlation fields in _meta are not part of the comparison.
  • Keys are scoped to the paying account and tool, and concurrent retries of one key wait for the first attempt and then replay it. The ESMS ledger stores the key only as a hash; invocation telemetry keeps the raw key with the call's other arguments for its seven-day retention.

Once a paid call reaches settlement, its result reports what happened in a billing field (errors before that point, such as invalid arguments, authentication failures or BUSY, carry none): status (charged, replayed or not_charged, with a reason such as anonymous-caller, synthetic-probe-exempt or not-delivered), the amounts debited by this call, and the echoed idempotencyKey.

Results

Results include both structuredContent and the same JSON serialized in a text content block, with a correlationId. Every tool publishes an outputSchema that accepts its success payload or the shared error envelope, so clients that validate structured results (the TypeScript and Python SDK clients do) accept both. Failed evidence snapshots retain available data and component provenance under the error payload's data field. Tool failures set isError: true with a stable errorCode and message; RATE_LIMIT and BUSY include retryAfterSec. Diagnostic output goes to stderr; stdout contains JSON-RPC messages only. SIGINT, SIGTERM and stdin closure perform a bounded one-second telemetry drain before exit.

Configuration

bash
ALCHM_MCP_BACKEND_URL=https://alchm.kitchenMCP_USER_API_KEY=sk_alchm_...# ALCHM_MCP_USER_API_KEY is also accepted for sanitized Planetary Agents environments.DATABASE_URL=postgresql://...  # operator-only: key validation, billing, cache and telemetry

Chart/transit requests POST to <base>/api/astrologize. Explicit ALCHM_MCP_BACKEND_URL, NEXT_PUBLIC_SITE_URL, SITE_URL or Vercel URL settings take precedence. Bundled/compiled artifacts default to https://alchm.kitchen; source runs default to http://localhost:3000. Source development therefore needs the local app running or an explicit reachable backend URL.

Mint and revoke API keys at /profile/api-keys. Keys are stored as SHA-256 hashes; plaintext is shown once when created.

Every tool accepts _meta inside its arguments:

json
{  "name": "generate_cosmic_recipe",  "arguments": {    "prompt": "spicy",    "cuisine": "thai",    "_meta": {      "apiKey": "sk_alchm_live_REPLACE_ME",      "caller": "claude-desktop",      "correlationId": "dinner-plan-123",      "idempotencyKey": "dinner-plan-123-search"    }  }}

The environment key supplies a default for single-user installs. Legacy _meta.authKey, _authKey and _apiKey argument aliases remain supported. Synthetic probes supply _meta.internalSecret matching the server's INTERNAL_API_SECRET; SYNTHETIC_PROBE_USER_ID is optional attribution. Setting the server secret alone never authenticates an external call as a probe. Synthetic calls cannot publish reflections.

Connect Claude Desktop or Cursor

Use the same mcpServers configuration shape in Claude Desktop's claude_desktop_config.json or Cursor's .cursor/mcp.json:

json
{  "mcpServers": {    "alchm-kitchen": {      "command": "npx",      "args": ["-y", "@alchm/mcp-server"],      "env": {        "MCP_USER_API_KEY": "sk_alchm_live_REPLACE_ME"      }    }  }}

For a local source checkout use "command": "bun" and "args": ["run", "/absolute/path/to/WhatToEatNext-master/mcp-server/src/index.ts"]. Database configuration belongs to the operator running the server. See the source-run templates in claude-desktop.config.example.json and cursor.mcp.example.json.

Verification and operations

bash
bun run --cwd mcp-server typecheckbun run jest src/lib/mcp/__tests__/ --runInBandbun run --cwd mcp-server test:stdioMCP_E2E=1 MCP_E2E_ENTRY=mcp-server/dist/index.js bun test mcp-server/src/__tests__/MCP_E2E=1 MCP_E2E_ENTRY=mcp-server/bin/alchm-mcp bun test mcp-server/src/__tests__/

The stdio tests spawn real source/bundle/binary processes, initialize a session, send notifications/initialized, inspect all eight tools, call local tools, and exercise validation and errors. They reject any non-JSON-RPC stdout line and do not require a live database or production backend. sdkClient.test.ts repeats the calls through the official SDK client, which validates every result, errors included, against the advertised outputSchema.

Settlement has a real-PostgreSQL proof: src/lib/mcp/__tests__/settlement.postgres.test.ts runs the ledger, idempotent replay, concurrent retries and the reflection transaction (including recovery from a failed feed insert) against a disposable database holding every migration. Its header lists the setup; it is skipped unless MCP_TEST_DATABASE_URL names a loopback mcp_test* database.

Database-backed invocations feed mcp_invocations, the admin MCP status surface, agent telemetry and the synthetic MCP probe. Telemetry is best effort; calls still work when logging is unavailable. Retention is seven days via the observability prune job. Per-key rate limits and a four-call process concurrency cap bound workload; calls receive a cancellation signal after 20 seconds and receive MCP cancellation signals. A timeout does not guarantee that already-started downstream side effects have rolled back.

See ARCHITECTURE.md for ownership and data flow.

来源:mcp-server/README.md,提交 e6af29d

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.1.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分