CookLikeHOC MCP
This server provides read-only access to a local CookLikeHOC repository of Chinese home-cooking recipes via three MCP tools, with upstream GitHub source links for traceability.
search_recipes: Search by dish name, ingredient, or keywords; supports optional category filter and a result limit of 1–20. Returns matched recipes with source links.
get_recipe: Retrieve the full recipe content by providing the relative path from search results; always includes the original upstream source link.
list_categories: List all recipe categories and their counts in the local repository.
All operations are local, no API keys needed. Chinese ingredient synonyms (e.g., 土豆/马铃薯) are supported. Note: the find_recipes_by_ingredients tool mentioned in the README is not available.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CookLikeHOC MCPSearch for recipes with chicken and scallion and include source links."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CookLikeHOC MCP
一个轻量、只读、来源可追溯的 MCP 适配器,让 Codex、Claude、Cursor 等 MCP 客户端检索本地 Gar-b-age/CookLikeHOC 菜谱。
本项目是独立社区适配器,不是 CookLikeHOC 官方项目,也不内置、镜像或发布任何上游菜谱、图片或索引。用户必须自行取得上游仓库,并遵守其内容与来源材料的权利声明。项目仍在等待上游维护者确认合作意愿。
为什么做这个项目
CookLikeHOC 已经拥有结构清晰的中文家常菜资料。本项目只负责把用户本地取得的 Markdown 检出转换为四个低风险 MCP 工具;菜单规划、人数换算和采购决策仍由连接它的 AI 客户端完成。
本地读取:运行时不依赖菜谱 API、账号或密钥。
默认只读:不会修改、删除或上传菜谱。
来源可追溯:每项结果都返回对应的上游 GitHub 文件链接。
中文搜索:支持常见食材同义词,例如土豆/马铃薯、番茄/西红柿。
结构化提取:从常见 Markdown 标题中解析配料、步骤和营养成分。
Related MCP server: cookwith-mcp
MCP 工具
工具 | 用途 |
| 按菜名、食材、分类或多个关键词搜索,支持 |
| 根据已有食材排序菜谱,并返回配料覆盖率、已匹配和仍缺少的配料。 |
| 按搜索结果中的路径读取完整菜谱和来源链接。 |
| 列出本地检出中的菜谱分类与数量。 |
快速开始
要求 Node.js 20 或更高版本。
git clone https://github.com/Gar-b-age/CookLikeHOC.git
git clone https://github.com/gaopengbin/cooklikehoc-mcp.git
cd cooklikehoc-mcp
npm ci
npm run buildCodex
将下面的路径替换成你的绝对路径:
codex mcp add cooklikehoc \
--env COOKLIKEHOC_DIR=/absolute/path/to/CookLikeHOC \
-- node /absolute/path/to/cooklikehoc-mcp/dist/index.jsWindows PowerShell 示例:
codex mcp add cooklikehoc `
--env "COOKLIKEHOC_DIR=D:\gpb\CookLikeHOC" `
-- node "D:\gpb\cooklikehoc-mcp\dist\index.js"运行 codex mcp get cooklikehoc 检查配置,然后重启本地客户端或新开会话。
通用 MCP 配置
{
"mcpServers": {
"cooklikehoc": {
"command": "node",
"args": ["/absolute/path/to/cooklikehoc-mcp/dist/index.js"],
"env": {
"COOKLIKEHOC_DIR": "/absolute/path/to/CookLikeHOC"
}
}
}
}可以这样问
我有鸡肉、土豆和葱。先用 CookLikeHOC 找出最匹配的菜,列出还缺少的配料,再读取第一道菜的完整做法和来源。
搜索包含西红柿或鸡蛋的炒菜,最多返回 5 道,并保留每道菜的原始来源链接。
配置
环境变量 | 必填 | 说明 |
| 是 | 本地 CookLikeHOC 仓库的绝对路径。 |
| 否 | 来源链接前缀,默认是上游仓库 |
目录扫描会忽略 .git、docs、docker_support、images、node_modules 和所有 README.md,避免把说明文件误当成菜谱。
开发与验证
npm ci
npm run check跨平台单元测试使用临时菜谱夹具,不依赖开发者电脑上的固定路径。若要验证真实上游数据:
COOKLIKEHOC_DIR=/absolute/path/to/CookLikeHOC npm run smokePowerShell:
$env:COOKLIKEHOC_DIR = "D:\gpb\CookLikeHOC"
npm run smokeCI 在 Windows、Linux 和 Node.js 20/22 上执行构建、单元测试及真实 MCP 冒烟测试。
设计边界
不把 CookLikeHOC 菜谱、图片或生成索引提交到本仓库。
不声称本项目得到 CookLikeHOC 或老乡鸡官方认可。
不替上游内容添加许可证;本仓库的 MIT License 只适用于适配器代码。
不默认提供写入、删除、账户同步或远程上传能力。
食材覆盖率来自 Markdown 配料列表的文本匹配,不应视为营养、医疗或过敏原建议。
License
MIT,仅适用于本适配器代码。CookLikeHOC 内容及其引用素材不包含在本许可证中。
Available Tools
3 toolsget_recipe读取 CookLikeHOC 菜谱A
按 search_recipes 返回的路径读取完整菜谱;始终返回原始上游来源链接。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | search_recipes 返回的 relativePath,例如:蒸菜/葱油鸡.md |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It discloses two key behaviors: it retrieves the full recipe and always includes the original upstream source link. This is meaningful context, though it does not address error cases or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the core purpose and a key behavioral guarantee. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and no output schema, the description sufficiently covers how to invoke it (using search_recipes path) and what to expect (full recipe plus source link). It is nearly complete, though it omits mention of failure handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single 'path' parameter, including its source (search_recipes' relativePath). The description repeats this usage without adding new semantic details, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a complete recipe using the path returned by search_recipes, distinguishing it from sibling tools search_recipes (which searches) and list_categories (which lists categories). The verb '读取' (read) and resource '菜谱' (recipe) are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use the path from search_recipes, implying the proper sequence: first search, then get. It does not explicitly mention alternatives or exclusions but provides clear context for when this tool should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categories列出 CookLikeHOC 分类A
列出本地 CookLikeHOC 检出中的菜谱分类和数量。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides the key behavioral context that the tool operates on a local checkout, and that it returns categories with counts. It conveys a read-only listing operation, though it does not detail error behavior or output formatting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and states the scope and result. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the tool's purpose and output for a zero-parameter, no-output-schema tool. It specifies the local context and the information returned (categories and counts), making it complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the schema is trivially complete. The description adds no parameter-level details because none exist. The baseline score of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: listing recipe categories and counts from a local CookLikeHOC checkout. This distinguishes it from sibling tools like search_recipes and get_recipe, which focus on searching and fetching individual recipes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool over alternatives. It implies that for category overviews you would use this tool, but no explicit usage conditions or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_recipes搜索 CookLikeHOC 菜谱A
按菜名、食材或关键词检索本地 CookLikeHOC 菜谱,并返回上游来源链接。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | 菜名、食材或多个关键词,例如:鸡腿 土豆 | |
| category | No | 可选分类,例如:蒸菜、炒菜、饮品 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds that the search returns upstream source links and is scoped to local recipes, but it does not disclose result limits, ordering, error behavior, or whether the search is fuzzy/case-sensitive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that immediately states the search target and return value with no filler. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description gives some return information (source links) but lacks details on the result format, how limit affects the response, and how this tool relates to get_recipe. It is acceptable for a simple search tool but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (query and category have descriptions, limit does not). The description reiterates the query semantics but adds no additional detail about limit defaults or category usage beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: searching local CookLikeHOC recipes by name, ingredient, or keyword, and returning source links. This distinguishes it from siblings like get_recipe and list_categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you have a search term) via '按菜名、食材或关键词检索', providing clear context. However, it does not explicitly mention when not to use it or reference sibling alternatives such as get_recipe for fetching a specific recipe.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
get_recipe - First observed
list_categories - First observed
search_recipes
TDQS
Scored across 3 tools
Each tool has a clearly distinct role: search_recipes finds recipes via query, get_recipe retrieves a specific recipe by path, and list_categories provides an overview of categories and counts. No functional overlap exists.
All tool names follow a consistent verb_noun pattern with snake_case: search_recipes, get_recipe, list_categories. This is uniform and predictable.
With only 3 tools, the set is well-scoped for a read-only recipe lookup server. Each tool provides a core function (search, retrieve, browse categories) without unnecessary bloat.
The core read workflows (search, get full recipe, list categories) are covered. A minor gap is the inability to list all recipes in a category directly, but the search tool may partially compensate through keyword search.
Maintenance
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Search and install 4,000+ security-scanned MCP servers from inside any MCP-aware AI client.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that transforms AI assistants into personal chefs by providing recipe recommendations and meal planning features based on the HowToCook repository.52,917 npm770ISC
- AlicenseBqualityDmaintenanceAn MCP server that enables AI-powered recipe generation and transformation using natural language, supporting dietary restrictions, allergies, and nutritional goals.28 npmMIT
- FlicenseAqualityDmaintenanceMCP server that provides cooking recipe lookup, classification, and weekly meal planning based on dietary restrictions and allergies.5-
- AlicenseNot gradedqualityBmaintenanceMCP server for Cookidoo, enabling AI tools to search recipes, manage shopping lists, and retrieve account and subscription information.2GPL 3.0