cookidoo-mcp-server 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,27 @@
1
+ # Virtual environment
2
+ venv/
3
+ .venv/
4
+
5
+ # Python
6
+ __pycache__/
7
+ *.py[cod]
8
+ *.egg-info/
9
+
10
+ # Local credentials
11
+ .env.mcp
12
+
13
+ # Generated bundles
14
+ *.mcpb
15
+
16
+ # OS
17
+ .DS_Store
18
+ Thumbs.db
19
+
20
+ # Temp files
21
+ ~$*
22
+ *.tmp
23
+
24
+ # IDE
25
+ .idea/
26
+ .vscode/
27
+ *.swp
@@ -0,0 +1,9 @@
1
+ .git/
2
+ .env*
3
+ .venv/
4
+ venv/
5
+ __pycache__/
6
+ *.pyc
7
+ *.mcpb
8
+ Makefile
9
+ README.md
@@ -0,0 +1,14 @@
1
+ .PHONY: build validate clean
2
+
3
+ BUNDLE := cookidoo-mcp.mcpb
4
+
5
+ validate:
6
+ uv lock --check
7
+ python3 -m json.tool manifest.json >/dev/null
8
+ npx --yes @anthropic-ai/mcpb validate manifest.json
9
+
10
+ build: validate
11
+ npx --yes @anthropic-ai/mcpb pack . $(BUNDLE)
12
+
13
+ clean:
14
+ rm -f $(BUNDLE)
@@ -0,0 +1,112 @@
1
+ Metadata-Version: 2.5
2
+ Name: cookidoo-mcp-server
3
+ Version: 1.0.0
4
+ Summary: MCP server for Cookidoo recipes, shopping lists, collections, and meal planning
5
+ Project-URL: Homepage, https://trueforge.studio
6
+ Project-URL: Repository, https://github.com/detef10/cookidoo-mcp
7
+ Author-email: Joaquin Nunez <joaquin@ayhungry.com>
8
+ License-Expression: MIT
9
+ Keywords: cookidoo,mcp,meal-planning,recipes,thermomix
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Requires-Python: >=3.12
14
+ Requires-Dist: aiohttp>=3.9.0
15
+ Requires-Dist: cookidoo-api==0.17.2
16
+ Requires-Dist: mcp==1.0.0
17
+ Description-Content-Type: text/markdown
18
+
19
+ # Cookidoo MCP Server
20
+
21
+ An MCP server for the Cookidoo (Thermomix) platform.
22
+
23
+ ## MCPB bundle for Claude Desktop
24
+
25
+ This project includes an MCP Bundle (`.mcpb`) manifest that runs the server
26
+ without Docker. The bundle asks for Cookidoo email and password during
27
+ installation. Country and language are optional and default to `ES` and
28
+ `es-ES`; examples such as `DE` / `de-DE` can be entered when needed.
29
+
30
+ Install the MCPB CLI and create the bundle from this directory:
31
+
32
+ ```bash
33
+ make build
34
+ ```
35
+
36
+ The command validates the manifest and dependencies, then creates
37
+ `cookidoo-mcp.mcpb`. It requires `uv` and `npx`.
38
+
39
+ Then open the generated `.mcpb` file with Claude Desktop. It will install the
40
+ server and securely store the sensitive password configuration.
41
+
42
+ ## Available Tools
43
+
44
+ | Tool | Description |
45
+ |------|-------------|
46
+ | `search_recipes` | Search recipes by keyword, ingredients, rating, or difficulty |
47
+ | `get_recipe_details` | Get full recipe details by ID |
48
+ | `get_user_info` | View your account profile |
49
+ | `get_active_subscription` | View active subscription status |
50
+ | `get_managed_collections` | List managed collections |
51
+ | `get_custom_collections` | List custom collections |
52
+ | `get_collection_counts` | Count custom and managed collections |
53
+ | `create_custom_collection` | Create a custom collection |
54
+ | `delete_custom_collection` | Delete a custom collection |
55
+ | `add_recipe_to_collection` | Add recipe to a custom collection |
56
+ | `remove_recipe_from_collection` | Remove recipe from a custom collection |
57
+ | `add_managed_collection` | Add a managed collection |
58
+ | `remove_managed_collection` | Remove a managed collection |
59
+ | `get_custom_recipe` | View a custom recipe |
60
+ | `create_custom_recipe_from` | Copy a recipe as custom (premium may be required) |
61
+ | `delete_custom_recipe` | Delete a custom recipe |
62
+ | `get_shopping_list` | View recipes in shopping list |
63
+ | `get_ingredient_items` | View individual ingredient items |
64
+ | `add_recipes_to_shopping_list` | Add recipe ingredients to shopping list |
65
+ | `remove_recipes_from_shopping_list` | Remove recipe ingredients from shopping list |
66
+ | `add_custom_recipes_to_shopping_list` | Add custom recipe ingredients (premium may be required) |
67
+ | `remove_custom_recipes_from_shopping_list` | Remove custom recipe ingredients |
68
+ | `get_additional_items` | View manual shopping-list items |
69
+ | `add_additional_items` | Add manual shopping-list items |
70
+ | `rename_additional_items` | Rename manual shopping-list items |
71
+ | `set_additional_items_owned` | Mark manual items owned or not owned |
72
+ | `remove_additional_items` | Remove manual shopping-list items |
73
+ | `get_planned_recipes` | View meal planner for date range |
74
+ | `schedule_recipes` | Add recipes to the meal planner for a date |
75
+ | `unschedule_recipe` | Remove a recipe from the meal planner date |
76
+ | `schedule_custom_recipes` | Schedule custom recipes (premium may be required) |
77
+ | `unschedule_custom_recipe` | Remove custom recipe from calendar |
78
+ | `tick_off_items` | Mark ingredient items as owned |
79
+ | `untick_items` | Mark ingredient items as not owned |
80
+ | `clear_shopping_list` | Clear the entire shopping list |
81
+
82
+ ### Recipe Search Filters
83
+
84
+ `search_recipes` accepts these optional filters in addition to `query` and `page`:
85
+
86
+ | Parameter | Values | Behavior |
87
+ |-----------|--------|----------|
88
+ | `include_ingredients` | Array of ingredient names in the Cookidoo locale | Every result must include all listed ingredients. |
89
+ | `exclude_ingredients` | Array of ingredient names in the Cookidoo locale | Results containing any listed ingredient are omitted. |
90
+ | `min_rating` | Number from `0` to `5` | Returns recipes with at least that star rating. |
91
+ | `difficulty` | `easy`, `medium`, or `advanced` | Filters by Cookidoo's internal difficulty values. |
92
+ | `sort_by` | `relevance`, `name`, `shortest_preparation_time`, `shortest_total_time`, `newest`, `best_rated`, `trending` | Sorts results using Cookidoo's official search indexes. |
93
+ | `countries` | Country codes such as `de`, `at`, `ch`, `it` | Limits recipes by country of origin. Defaults to configured country. |
94
+ | `languages` | Language codes such as `de`, `en`, `es`, `it` | Limits recipes by available language. |
95
+ | `categories` | `pasta_and_rice`, `main_dishes_meat`, `main_dishes_fish`, `main_dishes_vegetarian`, and other schema values | Limits recipes to category names used by the MCP. |
96
+ | `tm_models` | `TM31`, `TM5`, `TM6`, `TM7` | Includes recipes compatible with any selected model. |
97
+ | `accessories` | `blade_cover`, `cutter`, `cooking_station`, `peeler`, `thermomix_sensor` | Includes recipes requiring any selected accessory. |
98
+ | `max_preparation_time` | `15`, `30`, `45` | Maximum preparation time in minutes. |
99
+ | `max_total_time` | `15`, `30`, `45` | Maximum total time in minutes. |
100
+ | `portions` | `1`, `2`, `4`, `6`, `8` | Exact portion count; `8` means eight or more. |
101
+ | `tags` | Cookidoo tag values | Filters recipe tags. |
102
+ | `dietary` | Cookidoo dietary values | Filters dietary labels. |
103
+ | `free_of_ingredients` | Values such as `gluten_free`, `lactose_free`, `nut_free` | Filters recipes free of selected ingredients. |
104
+ | `ingredient_categories` | Cookidoo ingredient-category values | Filters ingredient categories. |
105
+ | `nutrition_goals` | Cookidoo nutrition-goal values | Filters nutrition goals. |
106
+ | `cultural` | Cookidoo cultural/origin values | Filters cultural recipe origin. |
107
+ | `health_evaluation` | Cookidoo health-evaluation values | Filters health evaluations. |
108
+ | `recipe_characteristics` | Cookidoo recipe-characteristic values | Filters recipe characteristics. |
109
+
110
+ ## Credits
111
+
112
+ Built on top of the [cookidoo-api](https://github.com/miaucl/cookidoo-api) package by miaucl.
@@ -0,0 +1,94 @@
1
+ # Cookidoo MCP Server
2
+
3
+ An MCP server for the Cookidoo (Thermomix) platform.
4
+
5
+ ## MCPB bundle for Claude Desktop
6
+
7
+ This project includes an MCP Bundle (`.mcpb`) manifest that runs the server
8
+ without Docker. The bundle asks for Cookidoo email and password during
9
+ installation. Country and language are optional and default to `ES` and
10
+ `es-ES`; examples such as `DE` / `de-DE` can be entered when needed.
11
+
12
+ Install the MCPB CLI and create the bundle from this directory:
13
+
14
+ ```bash
15
+ make build
16
+ ```
17
+
18
+ The command validates the manifest and dependencies, then creates
19
+ `cookidoo-mcp.mcpb`. It requires `uv` and `npx`.
20
+
21
+ Then open the generated `.mcpb` file with Claude Desktop. It will install the
22
+ server and securely store the sensitive password configuration.
23
+
24
+ ## Available Tools
25
+
26
+ | Tool | Description |
27
+ |------|-------------|
28
+ | `search_recipes` | Search recipes by keyword, ingredients, rating, or difficulty |
29
+ | `get_recipe_details` | Get full recipe details by ID |
30
+ | `get_user_info` | View your account profile |
31
+ | `get_active_subscription` | View active subscription status |
32
+ | `get_managed_collections` | List managed collections |
33
+ | `get_custom_collections` | List custom collections |
34
+ | `get_collection_counts` | Count custom and managed collections |
35
+ | `create_custom_collection` | Create a custom collection |
36
+ | `delete_custom_collection` | Delete a custom collection |
37
+ | `add_recipe_to_collection` | Add recipe to a custom collection |
38
+ | `remove_recipe_from_collection` | Remove recipe from a custom collection |
39
+ | `add_managed_collection` | Add a managed collection |
40
+ | `remove_managed_collection` | Remove a managed collection |
41
+ | `get_custom_recipe` | View a custom recipe |
42
+ | `create_custom_recipe_from` | Copy a recipe as custom (premium may be required) |
43
+ | `delete_custom_recipe` | Delete a custom recipe |
44
+ | `get_shopping_list` | View recipes in shopping list |
45
+ | `get_ingredient_items` | View individual ingredient items |
46
+ | `add_recipes_to_shopping_list` | Add recipe ingredients to shopping list |
47
+ | `remove_recipes_from_shopping_list` | Remove recipe ingredients from shopping list |
48
+ | `add_custom_recipes_to_shopping_list` | Add custom recipe ingredients (premium may be required) |
49
+ | `remove_custom_recipes_from_shopping_list` | Remove custom recipe ingredients |
50
+ | `get_additional_items` | View manual shopping-list items |
51
+ | `add_additional_items` | Add manual shopping-list items |
52
+ | `rename_additional_items` | Rename manual shopping-list items |
53
+ | `set_additional_items_owned` | Mark manual items owned or not owned |
54
+ | `remove_additional_items` | Remove manual shopping-list items |
55
+ | `get_planned_recipes` | View meal planner for date range |
56
+ | `schedule_recipes` | Add recipes to the meal planner for a date |
57
+ | `unschedule_recipe` | Remove a recipe from the meal planner date |
58
+ | `schedule_custom_recipes` | Schedule custom recipes (premium may be required) |
59
+ | `unschedule_custom_recipe` | Remove custom recipe from calendar |
60
+ | `tick_off_items` | Mark ingredient items as owned |
61
+ | `untick_items` | Mark ingredient items as not owned |
62
+ | `clear_shopping_list` | Clear the entire shopping list |
63
+
64
+ ### Recipe Search Filters
65
+
66
+ `search_recipes` accepts these optional filters in addition to `query` and `page`:
67
+
68
+ | Parameter | Values | Behavior |
69
+ |-----------|--------|----------|
70
+ | `include_ingredients` | Array of ingredient names in the Cookidoo locale | Every result must include all listed ingredients. |
71
+ | `exclude_ingredients` | Array of ingredient names in the Cookidoo locale | Results containing any listed ingredient are omitted. |
72
+ | `min_rating` | Number from `0` to `5` | Returns recipes with at least that star rating. |
73
+ | `difficulty` | `easy`, `medium`, or `advanced` | Filters by Cookidoo's internal difficulty values. |
74
+ | `sort_by` | `relevance`, `name`, `shortest_preparation_time`, `shortest_total_time`, `newest`, `best_rated`, `trending` | Sorts results using Cookidoo's official search indexes. |
75
+ | `countries` | Country codes such as `de`, `at`, `ch`, `it` | Limits recipes by country of origin. Defaults to configured country. |
76
+ | `languages` | Language codes such as `de`, `en`, `es`, `it` | Limits recipes by available language. |
77
+ | `categories` | `pasta_and_rice`, `main_dishes_meat`, `main_dishes_fish`, `main_dishes_vegetarian`, and other schema values | Limits recipes to category names used by the MCP. |
78
+ | `tm_models` | `TM31`, `TM5`, `TM6`, `TM7` | Includes recipes compatible with any selected model. |
79
+ | `accessories` | `blade_cover`, `cutter`, `cooking_station`, `peeler`, `thermomix_sensor` | Includes recipes requiring any selected accessory. |
80
+ | `max_preparation_time` | `15`, `30`, `45` | Maximum preparation time in minutes. |
81
+ | `max_total_time` | `15`, `30`, `45` | Maximum total time in minutes. |
82
+ | `portions` | `1`, `2`, `4`, `6`, `8` | Exact portion count; `8` means eight or more. |
83
+ | `tags` | Cookidoo tag values | Filters recipe tags. |
84
+ | `dietary` | Cookidoo dietary values | Filters dietary labels. |
85
+ | `free_of_ingredients` | Values such as `gluten_free`, `lactose_free`, `nut_free` | Filters recipes free of selected ingredients. |
86
+ | `ingredient_categories` | Cookidoo ingredient-category values | Filters ingredient categories. |
87
+ | `nutrition_goals` | Cookidoo nutrition-goal values | Filters nutrition goals. |
88
+ | `cultural` | Cookidoo cultural/origin values | Filters cultural recipe origin. |
89
+ | `health_evaluation` | Cookidoo health-evaluation values | Filters health evaluations. |
90
+ | `recipe_characteristics` | Cookidoo recipe-characteristic values | Filters recipe characteristics. |
91
+
92
+ ## Credits
93
+
94
+ Built on top of the [cookidoo-api](https://github.com/miaucl/cookidoo-api) package by miaucl.
@@ -0,0 +1,67 @@
1
+ {
2
+ "manifest_version": "0.4",
3
+ "name": "cookidoo-mcp",
4
+ "display_name": "Cookidoo MCP",
5
+ "version": "1.0.0",
6
+ "description": "Search Cookidoo recipes, manage shopping lists and collections, and plan meals.",
7
+ "author": {
8
+ "name": "Joaquin Nunez"
9
+ },
10
+ "server": {
11
+ "type": "uv",
12
+ "entry_point": "mcp_server.py",
13
+ "mcp_config": {
14
+ "command": "uv",
15
+ "args": [
16
+ "run",
17
+ "--directory",
18
+ "${__dirname}",
19
+ "mcp_server.py"
20
+ ],
21
+ "env": {
22
+ "COOKIDOO_EMAIL": "${user_config.email}",
23
+ "COOKIDOO_PASSWORD": "${user_config.password}",
24
+ "COOKIDOO_COUNTRY": "${user_config.country}",
25
+ "COOKIDOO_LANGUAGE": "${user_config.language}"
26
+ }
27
+ }
28
+ },
29
+ "user_config": {
30
+ "email": {
31
+ "type": "string",
32
+ "title": "Cookidoo email",
33
+ "description": "The email address used for your Cookidoo account.",
34
+ "required": true
35
+ },
36
+ "password": {
37
+ "type": "string",
38
+ "title": "Cookidoo password",
39
+ "description": "The password used for your Cookidoo account.",
40
+ "sensitive": true,
41
+ "required": true
42
+ },
43
+ "country": {
44
+ "type": "string",
45
+ "title": "Cookidoo country",
46
+ "description": "Optional country code. Default: ES. Examples: ES, DE, AT, CH, IT, GB.",
47
+ "default": "ES",
48
+ "required": false
49
+ },
50
+ "language": {
51
+ "type": "string",
52
+ "title": "Cookidoo language",
53
+ "description": "Optional locale. Default: es-ES. Examples: es-ES, de-DE, en-GB, it-IT.",
54
+ "default": "es-ES",
55
+ "required": false
56
+ }
57
+ },
58
+ "compatibility": {
59
+ "platforms": ["darwin", "linux", "win32"],
60
+ "runtimes": {
61
+ "python": ">=3.12"
62
+ }
63
+ },
64
+ "keywords": ["cookidoo", "thermomix", "recipes", "meal-planning"],
65
+ "license": "MIT",
66
+ "tools_generated": true
67
+ }