ManaMurah MCP Server
manamurah-mcp-server
Servidor remoto de Protocolo de Contexto de Modelo (MCP) para datos de precios de consumo de PriceCatcher en Malasia. Desplegado en Cloudflare Workers. 10 herramientas con tipado fuerte para agentes de IA.
Endpoint en vivo: https://mcp.manamurah.com/mcp (POST, JSON-RPC 2.0)
Fuente de datos: data.gov.my PriceCatcher — ~3,800 establecimientos × ~756 artículos en los 16 estados/territorios de Malasia, actualizados semanalmente. Datos gubernamentales 100% públicos. No se necesitan credenciales en ninguna parte de la pila.
Instalación — Claude Desktop
Añadir a ~/Library/Application Support/Claude/claude_desktop_config.json
en macOS (o %APPDATA%\Claude\claude_desktop_config.json en Windows):
{
"mcpServers": {
"manamurah": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.manamurah.com/mcp"]
}
}
}Reinicia Claude Desktop. Deberías ver las 10 herramientas listadas bajo el icono 🔌. Pregunta algo como "harga tembikai di Selangor?" o "what's the cheapest chicken in KL this week?" — el LLM encadenará search_items → find_cheapest automáticamente.
Related MCP server: Azure Pricing MCP Server
Instalación — Claude Code / otros clientes MCP
Cualquier cliente que soporte MCP remoto (JSON-RPC sobre 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 .Los clientes que hablan MCP remoto nativo pueden apuntar directamente a
https://mcp.manamurah.com/mcp. Los clientes que solo hablan stdio
(p. ej., herramientas MCP antiguas) pueden usar mcp-remote
como un shim.
Herramientas
Las 10 herramientas son de solo lectura, públicas y tienen un límite en el tamaño de respuesta para mantener compactos los contextos del LLM. Cada herramienta incluye una descripción detallada
Entrada JSON-Schema para que el LLM elija la correcta sin adivinar.
Herramienta | Propósito |
| Buscar artículos por nombre en malayo / inglés / chino / tamil |
| Hasta 10 establecimientos más baratos para un artículo esta semana |
| Tendencia de precios semanal a nivel nacional/estado/distrito/cadena/urbano |
| Establecimientos dentro de un radio geográfico de una coordenada |
| Precio de un artículo a nivel nacional + estado + distrito + más |
| Directorio de cadenas minoristas + recuento de establecimientos + cobertura |
| Delta entre la semana actual y hace 1 / 3 / 6 / 12 meses |
| Mayores subidas y bajadas semanales |
| Movimiento por categoría en un periodo de tiempo |
| Coste total de una cesta de 1–20 artículos a lo largo del tiempo |
Todas las herramientas no requieren configuración más allá de la configuración MCP anterior. Sin claves API. Sin límites de tasa en el lado del cliente (el upstream tiene una caché de borde KV de 12h, por lo que las consultas repetidas son esencialmente gratuitas).
Ejemplo de conversación
Tú: Berapa harga tembikai merah tanpa biji di Selangor minggu ini?
Claude (llama a
search_items(query="tembikai")→ obtiene item_code 21 → llama afind_cheapest(item_code=21, state="Selangor")):Tembikai merah tanpa biji di Selangor para la semana 2026-04-20: solo hay 1 tienda que reporta datos de PriceCatcher — Jaya Grocer D'Pulze Cyberjaya en el distrito de Sepang a RM 5.20/kg. Otros datos en KL muestran que NSK Seputeh/Cheras/Cheras/Kepong venden sandía similar a RM 1.69/kg — quizás valga la pena salir de PJ/KL si estás en Selangor Sur.
La respuesta estructurada con la que trabajó el 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": []
}Arquitectura
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 dataEste Worker es un shim de protocolo ligero — habla MCP JSON-RPC por un
lado y fetch() estándar por el otro. Sin lógica de negocio, sin credenciales, sin vinculación a bases de datos. Cada llamada a herramienta va exactamente a un endpoint upstream /api/v2/mcp/<tool> y pasa la respuesta JSON a través.
Mantener el shim ligero significa:
Las ~400 líneas aquí son casi todas JSON de descripción de herramientas.
La lógica de consulta/caché/índice vive en el upstream donde está co-ubicada con la capa de datos.
Actualizar el comportamiento de una herramienta rara vez requiere un redepliegue del Worker.
Auto-alojamiento / fork
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 deployPara apuntar a una copia de prueba del upstream (útil cuando
manamurah_20240322
lanza nuevos endpoints /api/v2/mcp/*), sobrescribe la URL base en
wrangler.toml:
[vars]
MANAMURAH_API_BASE = "https://staging.manamurah.com"Notas del protocolo
Transporte: HTTP POST en
/mcp, JSON-RPC 2.0. CORS abierto para que los clientes MCP basados en navegador funcionen sin proxy.Métodos soportados:
initialize,tools/list,tools/call,prompts/list(vacío),resources/list(vacío),ping.Forma de respuesta de la herramienta: Bloques MCP
content: [{ type: "text", text: ... }]con el payload JSON crudo también adjunto comostructuredContentpara clientes que lo prefieran.Manejo de errores: problemas a nivel de negocio (argumentos inválidos, sin datos para esta semana) regresan como
{ "status": "no_data", "reason": ... }en HTTP 200 para que el LLM pueda narrarlos. Solo los fallos de transporte/infraestructura generan errores JSON-RPC.Errores de upstream: 5xx en
/api/v2/mcp/*burbujean como JSON-RPCcode: -32603con el estado del upstream endata. 4xx pasan sin cambios (el error de validación del cliente ya tiene forma de sobre JSON en el lado del upstream).
Relacionado
manamurah-mcp-2026 — Servidor MCP stdio en Python que cubre las mismas 10 herramientas. Úsalo en su lugar si quieres un binario MCP solo local (sin Cloudflare, sin salto de Worker).
manamurah_20240322 — el sitio SvelteKit en manamurah.com. Aloja tanto el sitio web público como los endpoints proxy
/api/v2/mcp/*que llama este Worker.manamurah-data-2026 — el ETL de Python que popula los índices detrás de todo lo demás. Pipeline nocturno, fuente de verdad de PriceCatcher de data.gov.my.
Licencia
MIT. Ver 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