
Chakudya Mcp Server
io.github.edisontaimu9-ui由 GitHub 账号 edisontaimu9-ui 发布v1.0.0更新于 Oct 24, 2026
MCP tools for Malawian food search, clinical nutrition calculators, and RAG-backed guidance.
概览
一个远程 MCP 服务器,用于检索马拉维食物数据、运行临床营养计算,并查询基于 RAG 的营养知识库。
- 可以做什么
- 搜索和查询食物、包装食品与条形码,读取每 100 克营养成分的食物详情,并支持按份量换算和多条目餐食分析。运行糖尿病与肾病交换份、肠内营养配方查询,以及 BMI、BMR、TDEE 计算。使用儿科液体、能量、蛋白质、生长速度和肠内喂养计算器,以及 IOM/DRI EER、MET 活动、酒精千卡、呼吸商和 Atwater 能量工具。计算 0 至 19 岁儿童的 WHO 生长 z 分数和百分位。查询 RAG 知识库以获取指南、证据、疾病概览和药物信息。
- 适用场景
- 适合处理马拉维食物或儿科与临床营养估算的营养师、营养专业学生和临床人员,也适合希望助手直接查询食物成分或运行标准营养公式而无需手工计算的人。
- 运行要求
- 远程 Streamable HTTP 端点;清单声明无需认证,但 README 说明生产环境需要 bearer 令牌(MCP_AUTH_TOKEN),通过 Authorization 请求头发送。需要能访问该端点及其调用的上游 Chakudya API。
安装
在 SourceWeft 中
- 打开 控制台中的 Chakudya Mcp Server,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
交给智能体安装
把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。
阅读 https://sourceweft.com/mcp/io.github.edisontaimu9-ui%2Fchakudya-mcp-server/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。其他 MCP 客户端
把它添加到你客户端的 mcpServers 配置中。
{
"mcpServers": {
"chakudya": {
"type": "http",
"url": "https://chakudya-mcp-server.onrender.com/mcp"
}
}
}README
Chakudya MCP Server
An MCP (Model Context Protocol) server that exposes the Chakudya Nutrition Registry (CNR) API as a set of MCP tools, so any MCP-compatible client (Claude, Claude Code, other LLM agents) can search Malawian food data, run clinical nutrition lookups, and query the RAG knowledge base directly.
This is a new, separate layer. It does not replace or modify the Chakudya Worker. It's a small Node/TypeScript HTTP service that sits in front of your existing API and translates MCP tool calls into plain HTTP requests against the routes your Worker already serves.
Why a separate server, not a Worker
The official MCP TypeScript SDK's StreamableHTTPServerTransport is built for Node's
http.IncomingMessage/ServerResponse. Cloudflare Workers use the Fetch API instead, and the SDK's
web-standard variant (WebStandardStreamableHTTPServerTransport) is newer and less battle-tested for
production session management. Running this as a plain Node service (Docker, Render, Fly.io, a VPS,
etc.) is the more standard, better-documented path today, and it keeps this concern fully decoupled from
your Worker's deploy cycle. Nothing stops you from porting it to the web-standard transport on Workers
later if you want a single-platform deploy — the tool logic in src/tools/* doesn't care which
transport wraps it.
Tools
All 31 tools either call your existing Chakudya Worker over HTTPS, or are pure in-process calculation/table
lookups — none of them touch Supabase, Cohere, or Groq directly, and none of them need ADMIN_API_KEY
(every route they use is public).
disease_information and medicine_information always return an educational disclaimer alongside the
answer and are prompted to avoid diagnosis/prescribing language — but they're still LLM-generated text
grounded on whatever's in your RAG knowledge base, not a verified medical reference. Treat them as a
starting point for a learner, same as the rest of the RAG-backed tools.
pediatric_* tools (source: BND 415 Clinical Nutrition — Paediatric Medicine Resources) and
iom_dri_eer_calculator/met_activity_energy_calculator/alcohol_kcal_calculator/
respiratory_quotient_interpreter (source: Nelms/Ireton-Jones, Nutrition Therapy and Pathophysiology,
Ch. 2) are pure calculation/lookup tools — no network call, no CNR data dependency. Same estimate-only
caveat applies: not a substitute for individualized clinical assessment or measured indirect calorimetry.
Project layout
Environment variables
Copy .env.example to .env and fill in:
Security considerations
- Auth is mandatory in production.
env.tsexits the process at startup ifNODE_ENV=productionandMCP_AUTH_TOKENis unset — this is a deliberate fail-closed check, not just a warning. - This server sits in front of your rate-limited RAG routes.
/rag/askon your Worker is capped at 15 req/min per IP — but that's per client IP as seen by the Worker, which would be this server's IP once deployed, shared across everyone using it. The MCP-level rate limiter (MCP_RATE_LIMIT_PER_MIN) exists so one misbehaving MCP client can't silently exhaust that budget for everyone else. Tune it down if you expect multiple concurrent MCP clients. - No admin key is embedded or required. Every tool calls a public CNR route. If you add an
admin-gated tool later, keep
CHAKUDYA_ADMIN_API_KEYserver-side only — never expose it to the MCP client. - Session state is in-memory, per-process. Fine for a single instance. If you ever scale to multiple
instances behind a load balancer, either enable sticky sessions (route by
Mcp-Session-Id) or swap thetransportsmap insrc/index.tsfor a shared store. - CORS is off by default. Only enable
MCP_ALLOWED_ORIGINSif you have a specific browser-based MCP client; server-to-server MCP clients (Claude Desktop, Claude Code, etc.) don't need it.
Running locally
Or for iterative dev with auto-reload:
Health check: curl http://localhost:8787/health
Connecting an MCP client
Point any Streamable-HTTP-capable MCP client at:
For Claude Desktop / Claude Code, add it as a remote MCP server pointing at that URL with the same
bearer token. Consult Anthropic's current docs for the exact config file syntax, since that's changed
over time — check https://docs.claude.com for the latest mcpServers remote-server format.
Deployment: Render (recommended — free, no credit card)
This repo includes render.yaml, so Render's Blueprint feature deploys it without any manual dashboard
configuration.
- Push this repo to GitHub (commands below).
- In the Render dashboard: New → Blueprint, connect your GitHub account, pick the
chakudya-mcp-serverrepo. Render readsrender.yamlautomatically. - Render provisions the service on the Free plan and auto-generates a random
MCP_AUTH_TOKEN(viagenerateValue: true). After the first deploy, go to the service's Environment tab to copy that generated token — you'll need it in your MCP client config. - Deploy. Your MCP endpoint will be
https://<your-service-name>.onrender.com/mcp(check the Render dashboard for your actual generated URL — it may include a random suffix if your chosen name is taken).
The free-tier sleep problem, and the fix
Render's free web services spin down after 15 minutes with no traffic, then take 30-60 seconds to wake
on the next request. That's fine for a health check, but it can drop an in-progress MCP session (session
state lives in memory — see src/index.ts) if the client goes quiet mid-conversation for too long.
Fix: keep it warm with a free uptime monitor pinging /health every 5-10 minutes.
- Sign up at uptimerobot.com (free plan, no card).
- Add a new HTTP(s) monitor:
- URL:
https://<your-service>.onrender.com/health - Interval: 5 minutes
- URL:
- Save.
/healthis unauthenticated by design, specifically so this monitor doesn't need yourMCP_AUTH_TOKEN.
This keeps the service warm 24/7 within the free plan's 750 hrs/month (well under the cap for one service pinged this way).
Updating after a code change
Render auto-redeploys on every push to your connected branch — no extra step needed:
Watch the deploy in the Render dashboard's Events tab; it typically finishes in 1-2 minutes for a project this size.
Other deployment options
Docker anywhere
Plain VPS with a process manager
Put it behind Nginx/Caddy for TLS termination if you're not already fronting it with something that handles HTTPS.
Updating via the command line
Then redeploy on whichever platform you chose (Render/Railway/Fly auto-redeploy on push if you connected the GitHub repo; otherwise trigger a manual redeploy or re-run the Docker/pm2 commands above on your host).
来源:README.md,提交 fe44680
工具
0版本历史
1- v1.0.0最新Sep 16, 2026
评分
已满足适用检查项的 85%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通必需25 分
- 已声明认证方式必需10 分
- 已列出工具必需15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分