cookunity-mcp-server 1.0.0

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.
Files changed (51) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +113 -0
  3. package/dist/constants.d.ts +13 -0
  4. package/dist/constants.d.ts.map +1 -0
  5. package/dist/constants.js +14 -0
  6. package/dist/constants.js.map +1 -0
  7. package/dist/index.d.ts +9 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +79 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/schemas/index.d.ts +215 -0
  12. package/dist/schemas/index.d.ts.map +1 -0
  13. package/dist/schemas/index.js +84 -0
  14. package/dist/schemas/index.js.map +1 -0
  15. package/dist/services/api.d.ts +35 -0
  16. package/dist/services/api.d.ts.map +1 -0
  17. package/dist/services/api.js +249 -0
  18. package/dist/services/api.js.map +1 -0
  19. package/dist/services/auth.d.ts +14 -0
  20. package/dist/services/auth.d.ts.map +1 -0
  21. package/dist/services/auth.js +96 -0
  22. package/dist/services/auth.js.map +1 -0
  23. package/dist/services/helpers.d.ts +23 -0
  24. package/dist/services/helpers.d.ts.map +1 -0
  25. package/dist/services/helpers.js +94 -0
  26. package/dist/services/helpers.js.map +1 -0
  27. package/dist/tools/cart.d.ts +4 -0
  28. package/dist/tools/cart.d.ts.map +1 -0
  29. package/dist/tools/cart.js +186 -0
  30. package/dist/tools/cart.js.map +1 -0
  31. package/dist/tools/deliveries.d.ts +4 -0
  32. package/dist/tools/deliveries.d.ts.map +1 -0
  33. package/dist/tools/deliveries.js +190 -0
  34. package/dist/tools/deliveries.js.map +1 -0
  35. package/dist/tools/menu.d.ts +4 -0
  36. package/dist/tools/menu.d.ts.map +1 -0
  37. package/dist/tools/menu.js +293 -0
  38. package/dist/tools/menu.js.map +1 -0
  39. package/dist/tools/pricing.d.ts +4 -0
  40. package/dist/tools/pricing.d.ts.map +1 -0
  41. package/dist/tools/pricing.js +116 -0
  42. package/dist/tools/pricing.js.map +1 -0
  43. package/dist/tools/user.d.ts +4 -0
  44. package/dist/tools/user.d.ts.map +1 -0
  45. package/dist/tools/user.js +97 -0
  46. package/dist/tools/user.js.map +1 -0
  47. package/dist/types.d.ts +228 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +2 -0
  50. package/dist/types.js.map +1 -0
  51. package/package.json +51 -0
@@ -0,0 +1,228 @@
1
+ export interface AuthTokens {
2
+ access_token: string;
3
+ refresh_token?: string;
4
+ expires_at: number;
5
+ }
6
+ export interface Meal {
7
+ id: string;
8
+ batchId: number;
9
+ name: string;
10
+ shortDescription: string;
11
+ image: string;
12
+ imagePath: string;
13
+ price: number;
14
+ finalPrice: number;
15
+ premiumFee: number;
16
+ sku: string;
17
+ stock: number;
18
+ isNewMeal: boolean;
19
+ userRating: number;
20
+ inventoryId: string;
21
+ categoryId: string;
22
+ searchBy: MealSearchBy;
23
+ nutritionalFacts: NutritionFacts;
24
+ chef: Chef;
25
+ meatType: string;
26
+ category: MealCategory;
27
+ allergens?: Allergen[];
28
+ ingredients?: Ingredient[];
29
+ }
30
+ export interface DetailedMeal extends Meal {
31
+ allergens: Allergen[];
32
+ ingredients: Ingredient[];
33
+ }
34
+ export interface MealSearchBy {
35
+ cuisines: string[];
36
+ chefFirstName: string;
37
+ chefLastName: string;
38
+ dietTags: string[];
39
+ ingredients: string[];
40
+ proteinTags: string[];
41
+ }
42
+ export interface NutritionFacts {
43
+ calories: number;
44
+ fat: number;
45
+ carbs: number;
46
+ sodium: number;
47
+ fiber: number;
48
+ protein?: number;
49
+ sugar?: number;
50
+ }
51
+ export interface Allergen {
52
+ name: string;
53
+ }
54
+ export interface Ingredient {
55
+ name: string;
56
+ }
57
+ export interface Chef {
58
+ id: string;
59
+ firstName: string;
60
+ lastName: string;
61
+ }
62
+ export interface MealCategory {
63
+ id: string;
64
+ title: string;
65
+ label: string;
66
+ }
67
+ export interface MenuCategory {
68
+ id: string;
69
+ title: string;
70
+ subtitle: string;
71
+ label: string;
72
+ tag: string;
73
+ }
74
+ export interface Menu {
75
+ categories: MenuCategory[];
76
+ meals: Meal[];
77
+ }
78
+ export interface UserInfo {
79
+ id: string;
80
+ name: string;
81
+ email: string;
82
+ plan_id: string;
83
+ store_id: string;
84
+ status: string;
85
+ deliveryDays: DeliveryDay[];
86
+ currentCredit: number;
87
+ ring?: {
88
+ id: string;
89
+ name: string;
90
+ is_local: boolean;
91
+ };
92
+ addresses: Address[];
93
+ profiles: UserProfile[];
94
+ }
95
+ export interface DeliveryDay {
96
+ id: string;
97
+ day: string;
98
+ time_start: string;
99
+ time_end: string;
100
+ }
101
+ export interface Address {
102
+ id: string;
103
+ isActive: boolean;
104
+ city: string;
105
+ region: string;
106
+ postcode: string;
107
+ street: string;
108
+ }
109
+ export interface UserProfile {
110
+ id: string;
111
+ firstname: string;
112
+ lastname: string;
113
+ }
114
+ export interface Order {
115
+ id: string;
116
+ deliveryDate: string;
117
+ }
118
+ export interface CartProduct {
119
+ id: string;
120
+ inventoryId: string;
121
+ name: string;
122
+ sku: string;
123
+ image_path: string;
124
+ price_incl_tax: number;
125
+ realPrice?: number;
126
+ chef_firstname: string;
127
+ chef_lastname: string;
128
+ meat_type: string;
129
+ premium_special?: boolean;
130
+ }
131
+ export interface CartEntry {
132
+ product: CartProduct;
133
+ qty: number;
134
+ }
135
+ export interface Cutoff {
136
+ time: string;
137
+ userTimeZone: string;
138
+ }
139
+ export interface UpcomingDay {
140
+ id: string;
141
+ date: string;
142
+ displayDate: string;
143
+ available: boolean;
144
+ menuAvailable: boolean;
145
+ canEdit: boolean;
146
+ skip: boolean;
147
+ isPaused: boolean;
148
+ cutoff: Cutoff | null;
149
+ cart: CartEntry[];
150
+ }
151
+ export interface CartItem {
152
+ qty: number;
153
+ inventoryId: string;
154
+ }
155
+ export interface SkipResult {
156
+ __typename: string;
157
+ id?: string;
158
+ error?: string;
159
+ }
160
+ export interface FormattedMeal {
161
+ id: string;
162
+ name: string;
163
+ description: string;
164
+ chef: string;
165
+ category: string;
166
+ price: number;
167
+ original_price: number;
168
+ rating: number;
169
+ inventory_id: string;
170
+ batch_id: number;
171
+ in_stock: boolean;
172
+ stock: number;
173
+ is_new: boolean;
174
+ image: string;
175
+ nutrition: NutritionFacts;
176
+ tags: {
177
+ cuisines: string[];
178
+ diet_tags: string[];
179
+ protein_tags: string[];
180
+ ingredients: string[];
181
+ };
182
+ meat_type: string;
183
+ }
184
+ export interface DeliveryInfo {
185
+ date: string;
186
+ status: "locked" | "active" | "skipped" | "paused";
187
+ can_edit: boolean;
188
+ menu_available: boolean;
189
+ cutoff: string | null;
190
+ cutoff_timezone: string | null;
191
+ cart_items: {
192
+ name: string;
193
+ inventory_id: string;
194
+ quantity: number;
195
+ price: number;
196
+ chef: string;
197
+ }[];
198
+ cart_count: number;
199
+ }
200
+ export interface MealInput {
201
+ entityId: string | number;
202
+ quantity: number;
203
+ inventoryId: string;
204
+ }
205
+ export interface PriceBreakdown {
206
+ qtyPlanMeals: number;
207
+ qtyItems: number;
208
+ totalPlanPrice: number;
209
+ totalExtraMeals: number;
210
+ totalTaxes: number;
211
+ totalDeliveryFee: number;
212
+ totalExpressFee: number;
213
+ totalFee: number;
214
+ subTotalOrder: number;
215
+ totalPromoDiscount: number;
216
+ totalOrder: number;
217
+ availableCredits: number;
218
+ totalOrderWithCreditsSubtracted: number;
219
+ }
220
+ export interface PaginatedResponse<T> {
221
+ total: number;
222
+ count: number;
223
+ offset: number;
224
+ items: T[];
225
+ has_more: boolean;
226
+ next_offset?: number;
227
+ }
228
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "cookunity-mcp-server",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for CookUnity meal delivery service — browse menus, manage carts, confirm orders, skip deliveries",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "cookunity-mcp-server": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "keywords": [
16
+ "mcp",
17
+ "mcp-server",
18
+ "cookunity",
19
+ "meal-delivery",
20
+ "model-context-protocol",
21
+ "ai",
22
+ "llm"
23
+ ],
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/ggonzalezaleman/cookunity-mcp.git"
27
+ },
28
+ "license": "MIT",
29
+ "author": "Guille Gonzalez",
30
+ "scripts": {
31
+ "start": "node dist/index.js",
32
+ "dev": "tsx watch src/index.ts",
33
+ "build": "tsc",
34
+ "clean": "rm -rf dist"
35
+ },
36
+ "engines": {
37
+ "node": ">=18"
38
+ },
39
+ "dependencies": {
40
+ "@modelcontextprotocol/sdk": "^1.6.1",
41
+ "axios": "^1.7.9",
42
+ "express": "^4.21.0",
43
+ "zod": "^3.23.8"
44
+ },
45
+ "devDependencies": {
46
+ "@types/express": "^5.0.0",
47
+ "@types/node": "^22.10.0",
48
+ "tsx": "^4.19.2",
49
+ "typescript": "^5.7.2"
50
+ }
51
+ }