ManaMurah MCP Server について
ManaMurah MCP Serverは、マレーシアの価格データを検索するAIエージェント向けのリモートMCPサービスです。政府のPriceCatcher週平均価格とFAMAの日次価格を読み取り専用ツールで扱います。
主な機能
- 01読み取り専用の価格ツール15種
- 02商品と最安価格の検索
- 03価格履歴と変動の確認
- 04地域・小売チェーン間の比較
- 05FAMAの価格水準の分析
活用シーン
- 01今週の商品の最安店舗を探す
- 02週次・日次の価格推移を追跡する
- 03農場出荷・卸売・小売価格を比較する
- 04地域ごとの価格差を確認する
MCP 対応
streamable HTTPでMCPインターフェースを提供し、マレーシアのPriceCatcherとFAMAの価格データを検索する読み取り専用ツール15種を公開します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.manamurah.com/sseclaude mcp add --transport http manamurah https://mcp.manamurah.com/sse{"mcpServers":{"manamurah":{"type":"http","url":"https://mcp.manamurah.com/sse"}}}Cursor で開く{"servers":{"manamurah":{"type":"http","url":"https://mcp.manamurah.com/sse"}}}VS Code で開く{"mcpServers":{"manamurah":{"type":"http","url":"https://mcp.manamurah.com/sse"}}}{"mcpServers":{"manamurah":{"serverUrl":"https://mcp.manamurah.com/sse"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
manamurah-mcp-server
マレーシアのPriceCatcher消費者価格データを提供するリモートModel Context Protocol(MCP) サーバーです。Cloudflare Workersにデプロイされています。AIエージェント向けの、型が厳密に定義された15個のツールを提供します。
ライブエンドポイント: https://mcp.manamurah.com/mcp(POST、JSON-RPC 2.0)
データソース: data.gov.myのPriceCatcher — マレーシアの全16州・地域にまたがる約3,800の販売施設と約756品目を対象に、 毎日収集し、週平均として公開しています。100%政府の公開データです。 スタックのどの部分でも認証情報は不要です。
インストール
サーバーはhttps://mcp.manamurah.com/mcpでストリーミング可能なHTTPを提供します。
お使いのクライアントに対応する設定を選んでください。
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はstdioにしか対応していないため、mcp-remote
シムが橋渡しをします。アプリを再起動すると、🔌アイコンの下に15個のツールが表示されます。
*「セランゴール州のスイカの価格は?」や「今週、KLで最も安い鶏肉は?」*と尋ねると、
Claudeはsearch_items → find_cheapestを自動的に連携して実行します。
Claude Code(CLI)
コマンドを1つ実行するだけで、ネイティブのストリーミング可能なHTTPを利用できます。シムは不要です。
claude mcp add manamurah --transport http https://mcp.manamurah.com/mcp
claude mcp listで確認してください。ツールは次回のClaude Codeセッション開始時に利用可能になります。
すべてのプロジェクトで利用できるようにするには、--scope userを追加してください。
Cursor
ユーザーレベル(すべてのプロジェクト):~/.cursor/mcp.jsonを作成または編集します。
プロジェクトレベル:<project-root>/.cursor/mcp.json。
{
"mcpServers": {
"manamurah": {
"url": "https://mcp.manamurah.com/mcp"
}
}
}
Cursor 0.46以降は、urlによるリモートMCPに直接対応しています。ウィンドウを再読み込みすると
(Cmd-Shift-P → Developer: Reload Window)、Settings → MCPにmanamurahの行が表示され、
15個すべてのツールが一覧表示されます。
Cline(VS Code拡張機能)
Clineのサイドバーを開き → ⚙️ → MCP Servers → Add Server →
Remoteを選択 → https://mcp.manamurah.com/mcpを貼り付け → 名前に
manamurahを指定します。Clineが設定をVS Codeのグローバルストレージに直接書き込むため、
JSONを編集する必要はありません。
ヘッドレスで設定する場合は、Claude Desktopと同じJSON形式をClineの
cline_mcp_settings.jsonでも使用できます。
ChatGPT(カスタムコネクター)
ChatGPT Pro/Team/Enterpriseの場合:chatgpt.com/connectors →
Add custom connector → MCPサーバーURL
https://mcp.manamurah.com/mcp → 認証不要(公開読み取り専用)。
承認後、コネクターはメッセージ入力欄の⊕メニューに表示されます。
OpenAI Apps SDK/プログラムからの利用(Codexのcodex_apps.manamurah_*
ツールファミリー)の場合、アプリマニフェストにあるサーバーURL欄(platform.openai.com/apps)には、
必ずhttps://mcp.manamurah.com/mcpを指定してください。https://manamurah.comでは
ありません(こちらは消費者向けサイトでありMCPエンドポイントではないため、ストリーミング可能なトランスポートのプローブが
HTTP 403で失敗します)。
その他のMCPクライアント
ストリーミング可能なHTTPのMCPトランスポートに対応するクライアントであれば、
https://mcp.manamurah.com/mcpに直接接続できます。stdioのみ対応のクライアントは、
上記のClaude Desktopと同じ手順でmcp-remoteを使って接続します。
任意のシェルから実行できる簡単なスモークテスト:
curl -sS -X POST https://mcp.manamurah.com/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq '.result.tools[].name'
ツール名が14個表示されるはずです。内訳は、KPDN PriceCatcherのツールが11個(週次)、 FAMA Panduan Harga Harianのツールが3個(日次、価格水準は3段階)です。 より詳細な自己記述型マニフェスト(入力スキーマ全体+バージョン管理ポリシー)も、 GETリクエスト1回で取得できます。
ツール
15個のツールはすべて読み取り専用で公開されており、LLMのコンテキストをコンパクトに保てるよう、レスポンスサイズに上限があります。 各ツールには詳細な説明とJSON Schema形式の入力定義が付属しているため、LLMは推測せずに適切なツールを選択できます。
KPDN PriceCatcher(週次平均)
小売価格のみです。約3,800か所の販売店舗 × 約756品目の価格を毎日収集し、 data.gov.my PriceCatcher datasetから週次平均として 公開しています。
| ツール | 目的 |
|---|---|
search_items | マレー語/英語/中国語/タミル語の商品名で商品を検索します |
find_cheapest | 今週、ある商品を最も安く販売している最大10か所の店舗を検索します |
price_history | 全国/州/地区/チェーン/都市部別の週次価格推移を確認します |
nearby_premises | 指定した座標から地理的な半径内にある店舗を検索します |
compare_prices | 全国+州+地区などで、1商品の価格を比較します |
list_chains | 小売チェーンの一覧+店舗数+カバー範囲を確認します |
price_change | 今週と1/3/6/12か月前の価格差を確認します |
top_movers | 週ごとの値上がり幅・値下がり幅が最大の商品を確認します |
category_trends | 期間ごとのカテゴリ別の価格変動を確認します |
basket_watch | 1~20品目の買い物かごの合計金額を時系列で確認します |
region_gap | 半島マレーシアとボルネオの上位N品目の価格差を両方向で確認します |
FAMAの日次価格(Panduan Harga Harian)
3つの価格レベル — RUNCIT(小売)、BORONG(卸売)、
LADANG(農場出荷時)—を毎日、個別に追跡します。約46品目
(生鮮農産物、卵、家禽)を対象としています。FAMAのカタログは
PriceCatcherとは独立しています。ここでのitem_idはFAMA独自の
1~46の番号で、KPDNのitem_codeとは異なります。
| ツール | 目的 |
|---|---|
fama_price_history | 選択したレベル+地理的な粒度で、1商品の日次系列を確認します |
fama_margin | 日ごとのLADANG → BORONG → RUNCITのバリューチェーン価格差を確認します |
fama_top_movers | 最新のインデックス日を基準に、レベルごとの日次価格変動を確認します |
fama_marginとfama_top_moversでは、地区粒度のLADANG/BORONGの
カバー率が低すぎて適切な分析ができないため、grain='daerah'は
受け付けません。fama_price_historyでは、小売価格のみを対象とする場合に
daerahを指定できます。
上記のMCP設定以外に、すべてのツールでセットアップは不要です。API キーも必要ありません。クライアント側のレート制限もありません(上流には12時間のKV エッジキャッシュがあるため、繰り返しのクエリは実質的に無料です)。
会話例
あなた: セランゴール州では今週、種なし赤スイカはいくらですか?
Claude (
search_items(query="tembikai")を呼び出してitem_code 21を取得 →find_cheapest(item_code=21, state="Selangor")を呼び出します):2026-04-20週のセランゴール州における種なし赤スイカ: PriceCatcherにデータを報告した店舗はJaya Grocer D'Pulze Cyberjayaの 1店舗のみで、Sepang地区にあり、価格は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()を
扱います。ビジネスロジック、認証情報、データベースバインディングはありません。
各ツール呼び出しは、上流の/api/v2/mcp/<tool>エンドポイントを1つだけ呼び出し、
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、prompts/get、resources/list、resources/read、resources/templates/list、completion/complete、ping。 - ツールのレスポンス形式: MCP の
content: [{ type: "text", text: ... }]ブロックに加え、JSON 生データのペイロードもstructuredContentとして添付します。 - エラー処理: ビジネスレベルの問題(無効な引数、今週のデータがないなど)は、LLM が説明できるよう、HTTP 200 で
{ "status": "no_data", "reason": ... }として返されます。トランスポート/インフラの障害のみ、JSON-RPC エラーを発生させます。 - 上流エラー:
/api/v2/mcp/*の 5xx は、上流のステータスをdataに含めて JSON-RPC のcode: -32603として返されます。4xx はそのまま引き継がれます(クライアントの検証エラーは、上流側ですでに JSON エンベロープ形式になっています)。
関連項目
- manamurah-mcp-2026 — 同じ 15 個のツールを提供する 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 を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。