觅食者
MCP(模型上下文协议)服务器,为Claude提供对Wegmans产品库存、价格、过道位置和营养信息的可查询访问。
特性
- 产品搜索:查询每家店约29000种产品,包括价格、过道位置和营养数据
- 多店铺支持:每个商店都有自己的数据库-查询隔离可防止跨商店混淆
- 位置发现:按城市、州或坐标查找Wegmans商店
- 离线功能:数据在SQLite中本地缓存,用于快速离线查询
- 自动刷新:目录数据过时时(>24小时)会自动刷新
快速开始
cd forager
./install.sh这将安装依赖项,构建服务器并将其添加到Claude Code中。
然后重新启动Claude Code并尝试:“查找我附近的Wegmans商店”
手动安装
npm install
npm run build
claude mcp add --transport stdio forager -- node $PWD/dist/src/index.js卸载
claude mcp remove forager更新中
更新仓库时,重新生成以获取最新更改:
git pull
npm install # In case dependencies changed
npm run build # Rebuild TypeScriptMCP服务器指向构建的文件,因此更改将在下次重新启动Claude Code时生效。无需重新运行 claude mcp add.
数据位置
数据按照XDG基本目录规范存储:
~/.local/share/forager/ # or $XDG_DATA_HOME/forager/
settings.db # API keys, active store setting
stores.db # Store locations (from Wegmans API)
stores/
74.db # Store 74's products, nutrition, etc.
101.db # Store 101's products覆盖: XDG_DATA_HOME=/custom/path
工具
query
对商店数据库或活动商店的产品数据库执行只读SQL查询。
参数:
sql(必需):SQL SELECT语句database(可选):"stores"或"products"(默认值:"products")
示例:
-- Find stores in New York (database="stores")
SELECT store_number, name, city, state
FROM stores
WHERE state = 'NY'
-- Search products by name (database="products", requires setStore first)
SELECT name, brand, price_in_store, aisle
FROM products
WHERE name LIKE '%yogurt%'
ORDER BY price_in_store
-- Find high-protein products under $5
SELECT p.name, p.price_in_store, nf.quantity as protein_g
FROM products p
JOIN nutrition_facts nf ON p.product_id = nf.product_id
WHERE nf.nutrient = 'Protein'
AND nf.quantity > 20
AND p.price_in_store Milk > Whole Milk"
tags_filter TEXT, -- JSON array: ["Organic", "Gluten Free"]
tags_popular TEXT, -- JSON array: ["Wegmans Brand"]
-- Store-specific fields
price_in_store REAL,
price_in_store_loyalty REAL, -- Shoppers Club price
price_delivery REAL,
price_delivery_loyalty REAL,
unit_price TEXT, -- e.g., "$2.99/lb"
aisle TEXT,
shelf TEXT,
is_available INTEGER,
is_sold_at_store INTEGER,
last_updated TEXT
);
CREATE TABLE servings (
product_id TEXT PRIMARY KEY,
serving_size TEXT,
serving_size_unit TEXT,
servings_per_container TEXT,
household_measurement TEXT
);
CREATE TABLE nutrition_facts (
product_id TEXT NOT NULL,
nutrient TEXT NOT NULL, -- e.g., "Calories", "Protein", "Vitamin D"
quantity REAL,
unit TEXT,
percent_daily REAL,
category TEXT, -- "general" or "vitamin"
PRIMARY KEY (product_id, nutrient)
);
CREATE TABLE categories (
path TEXT PRIMARY KEY, -- e.g., "Dairy > Milk > Whole Milk"
name TEXT NOT NULL, -- e.g., "Whole Milk"
level INTEGER NOT NULL, -- 0-4 (depth in hierarchy)
product_count INTEGER
);
CREATE TABLE tags (
name TEXT NOT NULL,
type TEXT NOT NULL, -- "filter" or "popular"
product_count INTEGER,
PRIMARY KEY (name, type)
);
-- Views for convenient queries
CREATE VIEW product_categories AS ...;
CREATE VIEW product_tags AS ...;发展
npm test # Run tests
npm run build # Build TypeScript
npm run start # Start MCP server视窗
在本机Windows上,使用 cmd /c 包装:
claude mcp add --transport stdio forager -- cmd /c node /path/to/forager/dist/src/index.js建筑
看 docs/architecture.md 有关多数据库设计的详细信息。
许可证
麻省理工学院
