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。
Related MCP Connectors
This MCP server provides seamless access to Malaysia's government open data, including datasets, w…
A Model Context Protocol server exposing real-time and historical Colombo Stock Exchange (CSE) data to AI agents and LLM applications. Provides quotes and OHLCV price history, full financial statements (income, balance sheet, cash flow), pre-computed technicals (moving averages, RS ratings, volume signals), macroeconomic indicators, corporate actions, and rule-based screening across CSE stocks and sector indices, everything needed to build CSE-aware trading assistants, research tools, and market-analysis agents. This is the official MCP server of www.ceyloncharts.com
Find and compare 41,000+ AI agents, MCP servers and APIs, with daily prices and the AEPI price index
Real, up-to-date prices and data for your AI: groceries, fuel, rent, stocks and the economy.
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.287 PyPI19MIT
- 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-
- FlicenseAqualityAmaintenanceA 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.7153 npm39-