ManaMurah MCP Server
manamurah-mcp-server
マレーシアのPriceCatcher消費者物価データのためのリモートModel Context Protocol (MCP) サーバー。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スキーマ入力が含まれており、LLMが推測なしで適切なツールを選択できるようになっています。
ツール | 用途 |
| マレー語/英語/中国語/タミル語で品目を検索 |
| 今週の特定品目の最安値店舗を最大10件まで取得 |
| 全国/州/地区/チェーン/都市別の週次価格推移 |
| 指定座標の半径内にある店舗 |
| 全国+州+地区などでの特定品目の価格比較 |
| 小売チェーンのディレクトリ、店舗数、カバレッジ |
| 現在の週と1/3/6/12ヶ月前との価格差 |
| 週次の価格上昇・下落率トップ |
| 指定期間におけるカテゴリ別の変動 |
| 1〜20品目の買い物かごの合計コストの推移 |
すべてのツールは、上記のMCP設定以外にセットアップは不要です。APIキーも不要です。クライアント側でのレート制限もありません(アップストリームには12時間のKVエッジキャッシュがあるため、繰り返しクエリは実質無料です)。
会話例
あなた: Berapa harga tembikai merah tanpa biji di Selangor minggu ini? (今週、セランゴール州の種なし赤スイカの価格はいくらですか?)
Claude (calls
search_items(query="tembikai")→ gets item_code 21 → callsfind_cheapest(item_code=21, state="Selangor")):2026年4月20日の週のセランゴール州における種なし赤スイカ: PriceCatcherのデータを報告している店舗は1つのみです — セパン地区の Jaya Grocer D'Pulze Cyberjaya で RM 5.20/kg です。 KLの他のデータでは、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() を行います。ビジネスロジック、認証情報、データベースバインディングはありません。すべてのツール呼び出しは、正確に1つのアップストリーム /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として添付されます。エラーハンドリング: ビジネスレベルの問題(無効な引数、今週のデータなし)は、LLMが説明できるようにHTTP 200で
{ "status": "no_data", "reason": ... }として返されます。トランスポート/インフラの障害のみがJSON-RPCエラーを発生させます。アップストリームエラー:
/api/v2/mcp/*での5xxエラーは、アップストリームのステータスをdataに含めたJSON-RPCcode: -32603としてバブルアップされます。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