价格数据远程MCP服务器

一个部署在Cloudflare Workers上的远程MCP服务器,提供马来西亚PriceCatcher消费者价格数据,包含15种强类型工具供AI代理使用。

  • by manamurah
  • TypeScript
  • 混合部署
  • 更新于
在 GitHub 查看 manamurah/mcp-server

使用说明

manamurah mcp服务器

远程 模型上下文协议 (MCP) 马来西亚PriceCatcher消费者价格数据服务器。部署于 Cloudflare员工。15个用于AI代理的强类型工具。

实时端点: https://mcp.manamurah.com/mcp (帖子,JSON-RPC 2.0)

数据来源: data.gov.my 价格捕捉器-- 马来西亚16个州/地区约3800处房产×约756件物品, 每日收集并作为每周平均值发布。100%公共政府 数据。堆栈中的任何地方都不需要凭据。


安装

服务器在以下位置使用可流式传输的HTTP https://mcp.manamurah.com/mcp. 为您的客户选择区块:

克劳德桌面版

增添 ~/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只会说stdio,所以 mcp-remote 垫片是桥梁。重新启动应用程序——您将在下面看到15个工具 这🔌 偶像。问 “香蕉的价格?” 或 “那是什么 本周吉隆坡最便宜的鸡肉?" 克劳德会被锁住 search_items → find_cheapest 自动。

克劳德代码(CLI)

一个命令,原生流式HTTP——无填充:

claude mcp add manamurah --transport http https://mcp.manamurah.com/mcp

确认 claude mcp list。下次工具可用 您启动了一个Claude Code会话。添加 --scope user 成功 适用于每个项目。

光标

用户级别(每个项目):创建或编辑 ~/.cursor/mcp.json. 项目级别: <project-root>/.cursor/mcp.json.

{
  "mcpServers": {
    "manamurah": {
      "url": "https://mcp.manamurah.com/mcp"
    }
  }
}

光标0.46+支持远程MCP url 直接。重新加载 窗户(Cmd-Shift-P → 开发者:重新加载窗口)以及 manamurah 行显示在“设置”下→ 配备所有15个工具的MCP 上市的。

Cline(VS代码扩展)

打开Cline的侧边栏→ ⚙️ → MCP服务器 → 添加服务器 → 选择 远程 → paste https://mcp.manamurah.com/mcp → 命名它 manamurah.Cline将配置写入其VS Code全局存储 自身;不需要JSON编辑。

对于无头设置,Claude Desktop也使用相同的JSON形状 作品在Cline cline_mcp_settings.json.

ChatGPT(自定义连接器)

对于ChatGPT Pro/团队/企业: chatgpt.com/connectors → 添加自定义连接器 → MCP服务器URL https://mcp.manamurah.com/mcp → 无需身份验证(公共只读)。 批准后,连接器显示在消息输入⊕菜单中。

对于OpenAI Apps SDK/程序化使用( codex_apps.manamurah_* Codex中的工具系列):应用程序清单中的服务器URL字段位于 platform.openai.com/apps 必须精确 https://mcp.manamurah.com/mcp — 不 https://manamurah.com (其中 将使HTTP 403的流式传输探测失败,因为 消费者站点而不是MCP端点)。

其他MCP客户端

任何支持流式HTTP MCP传输点的客户端 直接在 https://mcp.manamurah.com/mcp.Stdio专用客户端垫片 通过 mcp-remote 使用 与上面的Claude Desktop相同的配方。

任何外壳的快速烟雾测试:

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个工具名称——11个KPDN PriceCatcher工具 (每周节奏)加上三个FAMA Panduan Harga Harian工具(每日 节奏、三个价格水平)。越富有 自我描述清单 (完整输入 模式+版本控制策略)也是一个简单的GET。

工具

所有15个工具都是只读的、公开的,并且对响应大小有限制 保持LLM上下文紧凑。每个工具都有详细的描述

  • JSON模式输入,以便LLM在不猜测的情况下选择正确的模式。

KPDN价格捕捉器(每周平均值)

仅零售价。约3800处房产×约756件物品,每天收集 以每周平均值的形式发布 data.gov.my价格捕捉器数据集.

工具 目的
search_items 按马来语/英语/中文/泰米尔语名称查找项目
find_cheapest 本周一件商品最多10个最便宜的场所
price_history 全国/州/地区/连锁店/城市的每周价格趋势
nearby_premises 坐标地理半径内的房屋
compare_prices 全国+州+地区+更多商品价格
list_chains 零售连锁目录+店铺数量+覆盖范围
price_change 本周与1/3/6/12个月前的差值
top_movers 每周最大的上升者+下降者
category_trends 在窗口上按类别移动
basket_watch 1-20件篮子随时间变化的总成本
region_gap Semenanjung vs Borneo top-N价格差距,双向

FAMA每日价格(Panduan Harga Harian)

三个价格水平-- 运行 (零售), 硼 (批发), 拉丹 (农场大门)——每天独立跟踪。~46个项目 (新鲜农产品、鸡蛋、家禽)。FAMA的目录独立于 价格捕捉器: item_id 这是FAMA自己的1..46,而不是KPDN item_code.

工具 目的
fama_price_history 所选级别的一个项目的每日系列+地理谷物
fama_margin 拉丹→ 硼→ RUNCIT价值链每日价差
fama_top_movers 每个级别的每日移动者,以最新指数日期为基准

fama_margin 和 fama_top_movers 拒绝 grain='daerah' 因为 LADONG/BORONG对县粮食的报道太少,不适合诚实的人 切。 fama_price_history 接受daerah仅限零售呼叫者。

除上述MCP配置外,所有工具都需要零设置。无API 钥匙。客户端没有速率限制(上游有12小时KV 边缘缓存,因此重复查询基本上是免费的)。

示例对话

你: 这个星期在雪兰没有种子的红瓜价格是多少?

克劳德 (电话 search_items(query="tembikai") → 获取项目代码21 → calls find_cheapest(item_code=21, state="Selangor")):

2026-04-20周雪兰无无种红瓜: 只有 1 家商店报告了 PriceCatcher 数据 — Jaya Grocer D'Pulze 网络 在 Sepang 地区 5.20马来西亚令吉/公斤. 其他数据显示NSK Seputeh/Cheras/Kepong出售陶器 类似于 RM 1.69/kg — 如果您在 雪兰莪州雪兰莪。

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

指向上游的暂存副本(在以下情况下有用 马纳穆拉赫_20240322 新船 /api/v2/mcp/* endpoints),覆盖中的基本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, prompts/get, resources/list, resources/read, resources/templates/list, completion/complete, ping.
  • 工具响应形状: 主控程序 content: [{ type: "text", text: ... }] 还附加了原始JSON有效负载的块 structuredContent 对于喜欢它的客户。
  • 错误处理: 业务级别问题(参数无效,无数据 本周)回来作为 { "status": "no_data", "reason": ... } 在HTTP 200中,LLM可以叙述它们。仅交通/基础设施 失败会引发JSON-RPC错误。
  • 上游错误: 5xx上 /api/v2/mcp/* 以JSON-RPC的形式出现 code: -32603 上游状态为 data.4x传球 通过未更改(客户端验证错误已形成为 上游侧的JSON信封)。

相关

  • 马纳穆拉-mcp-2026 --Python stdio MCP服务器涵盖了相同的15个工具。使用此 相反,如果你想要一个仅本地的MCP二进制文件(没有Cloudflare,没有 工人跳)。
  • 马纳穆拉赫_20240322 --SvelteKit网站manamurah.com。同时面向公众 网站和 /api/v2/mcp/* 此Worker调用的代理端点。
  • 马纳穆拉-2026年 --填充所有内容背后的索引的Python ETL 其他。每晚管道,data.gov.my PriceCatcher真相来源。

许可证

MIT。看 许可证.