ManaMurah MCP Server
manamurah-mcp-server
Удаленный сервер Model Context Protocol (MCP) для данных о потребительских ценах PriceCatcher в Малайзии. Развернут на Cloudflare Workers. 10 строго типизированных инструментов для ИИ-агентов.
Рабочая конечная точка: https://mcp.manamurah.com/mcp (POST, JSON-RPC 2.0)
Источник данных: data.gov.my PriceCatcher — ~3800 торговых точек × ~756 товаров во всех 16 штатах/территориях Малайзии, обновляется еженедельно. 100% публичные государственные данные. Никакие учетные данные в стеке не требуются.
Установка — Claude Desktop
Добавьте в ~/Library/Application Support/Claude/claude_desktop_config.json на macOS (или %APPDATA%\Claude\claude_desktop_config.json на Windows):
{
"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 (JSON-RPC через HTTP POST):
# 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 edge-кэш, поэтому повторные запросы практически бесплатны).
Пример диалога
Вы: 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")):Tembikai merah tanpa biji di Selangor для недели 2026-04-20: есть только 1 магазин, предоставивший данные PriceCatcher — Jaya Grocer D'Pulze Cyberjaya в районе Sepang по цене RM 5.20/kg. Другие данные в KL показывают, что NSK Seputeh/Cheras/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/*), переопределите базовый URL в wrangler.toml:
[vars]
MANAMURAH_API_BASE = "https://staging.manamurah.com"Примечания к протоколу
Транспорт: HTTP POST на
/mcp, JSON-RPC 2.0. CORS открыт, поэтому браузерные MCP-клиенты работают без прокси.Поддерживаемые методы:
initialize,tools/list,tools/call,prompts/list(пусто),resources/list(пусто),ping.Форма ответа инструмента: Блоки MCP
content: [{ type: "text", text: ... }]с необработанной JSON-полезной нагрузкой, также прикрепленной какstructuredContentдля клиентов, которые предпочитают такой формат.Обработка ошибок: бизнес-проблемы (неверные аргументы, отсутствие данных за эту неделю) возвращаются как
{ "status": "no_data", "reason": ... }с кодом HTTP 200, чтобы LLM могла их озвучить. Только сбои транспорта/инфраструктуры вызывают ошибки JSON-RPC.Вышестоящие ошибки: 5xx на
/api/v2/mcp/*всплывают как JSON-RPCcode: -32603со статусом вышестоящего сервера вdata. 4xx проходят без изменений (ошибка валидации клиента уже оформлена как JSON-конверт на стороне вышестоящего сервера).
См. также
manamurah-mcp-2026 — Python stdio MCP-сервер, охватывающий те же 10 инструментов. Используйте его, если вам нужен локальный MCP-бинарный файл (без Cloudflare, без Worker).
manamurah_20240322 — сайт SvelteKit на manamurah.com. Хостит как публичный веб-сайт, так и прокси-конечные точки
/api/v2/mcp/*, которые вызывает этот Worker.manamurah-data-2026 — Python ETL, который наполняет индексы, лежащие в основе всего остального. Ночной конвейер, источник истины PriceCatcher с data.gov.my.
Лицензия
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…
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
- XpondaOAuthcom.xponda
Real, up-to-date prices and data for your AI: groceries, fuel, rent, stocks and the economy.
Unlock the power of food transparency with our Open Food Facts MCP server. Easily look up any food
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.2185 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.27153 npm39-