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…
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