ManaMurah MCP Server
manamurah-mcp-server
远程 模型上下文协议 (MCP) 服务器,用于马来西亚 PriceCatcher 消费价格数据。部署在 Cloudflare Workers 上。为 AI 代理提供 10 个强类型工具。
实时端点: https://mcp.manamurah.com/mcp (POST, JSON-RPC 2.0)
数据源: data.gov.my PriceCatcher — 涵盖马来西亚所有 16 个州/地区的约 3,800 个场所和约 756 种商品,每周更新。100% 公共政府数据。整个堆栈无需任何凭据。
安装 — Claude Desktop
添加到 macOS 上的 ~/Library/Application Support/Claude/claude_desktop_config.json(或 Windows 上的 %APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"manamurah": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.manamurah.com/mcp"]
}
}
}重启 Claude Desktop。你应该能在 🔌 图标下看到列出的 10 个工具。尝试询问诸如 "harga tembikai di Selangor?"(雪兰莪的西瓜价格?)或 "what's the cheapest chicken in KL this week?"(本周吉隆坡最便宜的鸡肉在哪里?)之类的问题 — LLM 将自动串联 search_items → find_cheapest。
Related MCP server: Azure Pricing MCP Server
安装 — Claude Code / 其他 MCP 客户端
任何支持远程 MCP(通过 HTTP POST 的 JSON-RPC)的客户端:
# One-shot tool listing:
curl -sS -X POST https://mcp.manamurah.com/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq .支持原生远程 MCP 的客户端可以直接指向 https://mcp.manamurah.com/mcp。仅支持 stdio 的客户端(例如旧版 MCP 工具)可以使用 mcp-remote 作为垫片。
工具
所有 10 个工具均为只读、公开,并限制了响应大小以保持 LLM 上下文紧凑。每个工具都带有详细的描述和 JSON-Schema 输入,以便 LLM 无需猜测即可选择正确的工具。
工具 | 用途 |
| 按马来语/英语/中文/泰米尔语名称查找商品 |
| 本周某商品最便宜的 10 个场所 |
| 全国/州/区/连锁店/城市级别的每周价格趋势 |
| 坐标地理半径内的场所 |
| 商品在全国 + 州 + 区 + 其他范围的价格对比 |
| 零售连锁店目录 + 场所数量 + 覆盖范围 |
| 当前周与 1 / 3 / 6 / 12 个月前的价格差值 |
| 每周涨幅最大 + 跌幅最大的商品 |
| 特定时间窗口内各品类的变动 |
| 1–20 种商品购物篮随时间的总成本 |
所有工具无需除上述 MCP 配置外的任何设置。无需 API 密钥。客户端侧无速率限制(上游有 12 小时的 KV 边缘缓存,因此重复查询基本免费)。
对话示例
你: Berapa harga tembikai merah tanpa biji di Selangor minggu ini?(本周雪兰莪无籽红西瓜的价格是多少?)
Claude (调用
search_items(query="tembikai")→ 获取 item_code 21 → 调用find_cheapest(item_code=21, state="Selangor")):2026-04-20 当周雪兰莪的无籽红西瓜: 只有 1 家商店报告了 PriceCatcher 数据 — 位于雪邦区的 Jaya Grocer D'Pulze Cyberjaya,价格为 RM 5.20/kg。 吉隆坡的其他数据显示,NSK Seputeh/Cheras/Kepong 的同类西瓜售价为 RM 1.69/kg — 如果你在雪兰莪南部,去 PJ/KL 购买可能更划算。
LLM 基于此结构化响应进行工作:
{
"item_code": 21,
"item_name": "TEMBIKAI MERAH TANPA BIJI",
"weekdate": "2026-04-20",
"results": [
{
"weekdate": "2026-04-20",
"price": 5.20,
"premise_name": "JAYA GROCER D`PULZE CYBERJAYA",
"chain": "JAYA GROCER",
"chain_type": "SUPERMARKET",
"state": "Selangor",
"district": "Sepang"
}
],
"scope": { "state": "Selangor", "district": null, "chain": null, "chain_type": null },
"status": "ok",
"reason": null,
"warnings": []
}架构
Claude Desktop ─ stdio ─ mcp-remote ─ HTTPS ─ mcp.manamurah.com
│
(Cloudflare Worker, this repo)
│
fetch
▼
manamurah.com/api/v2/mcp/*
│
(SvelteKit site +
Cloudflare KV edge cache,
12h TTL)
│
▼
public price data此 Worker 是一个轻量级的协议垫片 — 它一端使用 MCP JSON-RPC,另一端使用标准 fetch()。没有业务逻辑,没有凭据,没有数据库绑定。每个工具调用都精确发送到一个上游 /api/v2/mcp/<tool> 端点,并将 JSON 响应透传。
保持垫片轻量意味着:
这里的约 400 行代码几乎全是工具描述 JSON。
查询/缓存/索引逻辑位于上游,与数据层共存。
更新工具行为几乎不需要重新部署 Worker。
自托管 / 分叉
git clone https://github.com/manamurah/mcp-server
cd mcp-server
pnpm install
# Local dev — hot-reloads on src/ changes, binds to 127.0.0.1:8787
pnpm dev
# Exercise it:
curl -sS -X POST http://127.0.0.1:8787/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq '.result.tools[].name'
# Deploy to your own Cloudflare account:
pnpm deploy要指向上游的暂存副本(在 manamurah_20240322 发布新的 /api/v2/mcp/* 端点时很有用),请在 wrangler.toml 中覆盖基础 URL:
[vars]
MANAMURAH_API_BASE = "https://staging.manamurah.com"协议说明
传输:
/mcp上的 HTTP POST,JSON-RPC 2.0。CORS 开放,因此基于浏览器的 MCP 客户端无需代理即可工作。支持的方法:
initialize,tools/list,tools/call,prompts/list(空),resources/list(空),ping。工具响应格式: MCP
content: [{ type: "text", text: ... }]块,原始 JSON 有效负载也作为structuredContent附加,供偏好此格式的客户端使用。错误处理: 业务级问题(无效参数、本周无数据)以 HTTP 200 返回
{ "status": "no_data", "reason": ... },以便 LLM 可以叙述它们。只有传输/基础设施故障才会引发 JSON-RPC 错误。上游错误:
/api/v2/mcp/*上的 5xx 错误会作为 JSON-RPCcode: -32603冒泡,并在data中包含上游状态。4xx 错误原样通过(客户端验证错误在上游侧已格式化为 JSON 信封)。
相关项目
manamurah-mcp-2026 — 涵盖相同 10 个工具的 Python stdio MCP 服务器。如果你想要一个仅限本地的 MCP 二进制文件(无需 Cloudflare,无需 Worker 跳转),请使用此项目。
manamurah_20240322 — manamurah.com 的 SvelteKit 站点。托管公共网站以及此 Worker 调用的
/api/v2/mcp/*代理端点。manamurah-data-2026 — 为其他所有内容提供索引的 Python ETL。每日管道,data.gov.my PriceCatcher 的事实来源。
许可证
MIT。请参阅 LICENSE。
This server cannot be deployed
Maintenance
Related MCP Connectors
This MCP server provides seamless access to Malaysia's government open data, including datasets, w…
Unlock the power of food transparency with our Open Food Facts MCP server. Easily look up any food
Price benchmarks, alternatives & daily price history across 17,000+ AI agents and MCP servers.
Hosted MCP server exposing US hospital procedure cost data to AI assistants
Related MCP Servers
- AlicenseCqualityCmaintenanceA Model Context Protocol server enabling product searches across e-commerce platforms, price history tracking, and product specification-based searches using natural language prompts.218MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables programmatic querying of Azure resource pricing information from the Azure Retail Prices API through a structured four-step workflow.8-
- FlicenseBqualityDmaintenanceA Model Context Protocol server that provides real-time cryptocurrency price fetching capabilities using the CoinGecko API. It enables LLMs to retrieve and process the latest price for any coin by its name or symbol.2-
- AlicenseAqualityCmaintenanceA Model Context Protocol server for real-time Swiss grocery shopping that searches and compares products across 8 major Swiss retailers (Migros, Coop, Aldi, Denner, Lidl, Farmy, Volgshop, Otto’s), normalizes per-unit prices, surfaces promotions, computes optimal multi-store shopping plans, and works with any MCP-compatible client without API keys or accounts.782 npm30AGPL 3.0