biszx-odoo-mcp 1.1.1__tar.gz → 1.1.2__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.
Potentially problematic release.
This version of biszx-odoo-mcp might be problematic. Click here for more details.
- {biszx_odoo_mcp-1.1.1/src/biszx_odoo_mcp.egg-info → biszx_odoo_mcp-1.1.2}/PKG-INFO +1 -1
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/pyproject.toml +1 -1
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/server/tools.py +25 -58
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2/src/biszx_odoo_mcp.egg-info}/PKG-INFO +1 -1
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/LICENSE +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/README.md +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/setup.cfg +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/__init__.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/__main__.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/exceptions.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/main.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/server/__init__.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/server/context.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/server/resources.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/server/response.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/tools/__init__.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/tools/config.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/tools/odoo_client.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp.egg-info/SOURCES.txt +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp.egg-info/dependency_links.txt +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp.egg-info/entry_points.txt +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp.egg-info/requires.txt +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp.egg-info/top_level.txt +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_config.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_context.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_exceptions.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_main.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_odoo_client.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_resources.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_response.py +0 -0
- {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_tools.py +0 -0
|
@@ -14,10 +14,8 @@ from biszx_odoo_mcp.server.response import Response
|
|
|
14
14
|
async def search_models(mcp: Any, query: str) -> dict[str, Any]:
|
|
15
15
|
"""
|
|
16
16
|
Get a list of all available models in the Odoo system.
|
|
17
|
-
|
|
18
17
|
Args:
|
|
19
18
|
query: Search term to find models (searches in model name and display name)
|
|
20
|
-
|
|
21
19
|
Returns:
|
|
22
20
|
JSON string with matching models
|
|
23
21
|
"""
|
|
@@ -42,10 +40,8 @@ async def search_models(mcp: Any, query: str) -> dict[str, Any]:
|
|
|
42
40
|
async def get_model_info(mcp: Any, model_name: str) -> dict[str, Any]:
|
|
43
41
|
"""
|
|
44
42
|
Get information about a specific Odoo model.
|
|
45
|
-
|
|
46
43
|
Args:
|
|
47
44
|
model_name: Name of the model (e.g., 'res.partner')
|
|
48
|
-
|
|
49
45
|
Returns:
|
|
50
46
|
Dictionary with model information
|
|
51
47
|
"""
|
|
@@ -73,11 +69,9 @@ async def get_model_fields(
|
|
|
73
69
|
) -> dict[str, Any]:
|
|
74
70
|
"""
|
|
75
71
|
Get field definitions for a specific Odoo model.
|
|
76
|
-
|
|
77
72
|
Args:
|
|
78
73
|
model_name: Name of the model (e.g., 'res.partner')
|
|
79
74
|
query_field: Search term to find fields (searches in field name and string)
|
|
80
|
-
|
|
81
75
|
Returns:
|
|
82
76
|
Dictionary with field definitions
|
|
83
77
|
"""
|
|
@@ -111,15 +105,13 @@ async def search_records(
|
|
|
111
105
|
) -> dict[str, Any]:
|
|
112
106
|
"""
|
|
113
107
|
Search for records in an Odoo model.
|
|
114
|
-
|
|
115
108
|
Args:
|
|
116
|
-
model_name: Name of the model
|
|
117
|
-
domain: Search domain as list of tuples
|
|
118
|
-
fields: List of field names to return
|
|
119
|
-
limit: Maximum number of records to return
|
|
120
|
-
offset: Number of records to skip
|
|
121
|
-
order: Sorting criteria
|
|
122
|
-
|
|
109
|
+
model_name: Name of the model e.g., 'res.partner'
|
|
110
|
+
domain: Search domain as list of tuples e.g., [['is_company', '=', true]]
|
|
111
|
+
fields: List of field names to return, None for all fields (default: None)
|
|
112
|
+
limit: Maximum number of records to return (default: None)
|
|
113
|
+
offset: Number of records to skip (default: None)
|
|
114
|
+
order: Sorting criteria e.g., 'name ASC, id DESC' (default: None)
|
|
123
115
|
Returns:
|
|
124
116
|
Dictionary with search results
|
|
125
117
|
"""
|
|
@@ -144,12 +136,10 @@ async def read_records(
|
|
|
144
136
|
) -> dict[str, Any]:
|
|
145
137
|
"""
|
|
146
138
|
Read specific records by their IDs.
|
|
147
|
-
|
|
148
139
|
Args:
|
|
149
|
-
model_name: Name of the model
|
|
140
|
+
model_name: Name of the model e.g., 'res.partner'
|
|
150
141
|
ids: List of record IDs to read
|
|
151
|
-
fields: List of field names to return
|
|
152
|
-
|
|
142
|
+
fields: List of field names to return, None for all fields (default: None)
|
|
153
143
|
Returns:
|
|
154
144
|
Dictionary with record data
|
|
155
145
|
"""
|
|
@@ -171,11 +161,9 @@ async def create_record(
|
|
|
171
161
|
) -> dict[str, Any]:
|
|
172
162
|
"""
|
|
173
163
|
Create a new record in an Odoo model.
|
|
174
|
-
|
|
175
164
|
Args:
|
|
176
|
-
model_name: Name of the model
|
|
165
|
+
model_name: Name of the model e.g., 'res.partner'
|
|
177
166
|
values: Dictionary with field values for the new record
|
|
178
|
-
|
|
179
167
|
Returns:
|
|
180
168
|
Dictionary with the created record ID
|
|
181
169
|
"""
|
|
@@ -197,11 +185,9 @@ async def create_records(
|
|
|
197
185
|
) -> dict[str, Any]:
|
|
198
186
|
"""
|
|
199
187
|
Create multiple records in an Odoo model.
|
|
200
|
-
|
|
201
188
|
Args:
|
|
202
|
-
model_name: Name of the model
|
|
189
|
+
model_name: Name of the model e.g., 'res.partner'
|
|
203
190
|
values_list: List of dictionaries with field values for the new records
|
|
204
|
-
|
|
205
191
|
Returns:
|
|
206
192
|
Dictionary with the created record IDs
|
|
207
193
|
"""
|
|
@@ -224,12 +210,10 @@ async def write_record(
|
|
|
224
210
|
) -> dict[str, Any]:
|
|
225
211
|
"""
|
|
226
212
|
Update a single record in an Odoo model.
|
|
227
|
-
|
|
228
213
|
Args:
|
|
229
|
-
model_name: Name of the model
|
|
214
|
+
model_name: Name of the model e.g., 'res.partner'
|
|
230
215
|
record_id: ID of the record to update
|
|
231
216
|
values: Dictionary with field values to update
|
|
232
|
-
|
|
233
217
|
Returns:
|
|
234
218
|
Dictionary with operation result
|
|
235
219
|
"""
|
|
@@ -252,12 +236,10 @@ async def write_records(
|
|
|
252
236
|
) -> dict[str, Any]:
|
|
253
237
|
"""
|
|
254
238
|
Update multiple records in an Odoo model.
|
|
255
|
-
|
|
256
239
|
Args:
|
|
257
|
-
model_name: Name of the model
|
|
240
|
+
model_name: Name of the model e.g., 'res.partner'
|
|
258
241
|
record_ids: List of record IDs to update
|
|
259
242
|
values: Dictionary with field values to update
|
|
260
|
-
|
|
261
243
|
Returns:
|
|
262
244
|
Dictionary with operation result
|
|
263
245
|
"""
|
|
@@ -279,11 +261,9 @@ async def unlink_record(
|
|
|
279
261
|
) -> dict[str, Any]:
|
|
280
262
|
"""
|
|
281
263
|
Delete a single record from an Odoo model.
|
|
282
|
-
|
|
283
264
|
Args:
|
|
284
|
-
model_name: Name of the model
|
|
265
|
+
model_name: Name of the model e.g., 'res.partner'
|
|
285
266
|
record_id: ID of the record to delete
|
|
286
|
-
|
|
287
267
|
Returns:
|
|
288
268
|
Dictionary with operation result
|
|
289
269
|
"""
|
|
@@ -305,11 +285,9 @@ async def unlink_records(
|
|
|
305
285
|
) -> dict[str, Any]:
|
|
306
286
|
"""
|
|
307
287
|
Delete multiple records from an Odoo model.
|
|
308
|
-
|
|
309
288
|
Args:
|
|
310
|
-
model_name: Name of the model
|
|
289
|
+
model_name: Name of the model e.g., 'res.partner'
|
|
311
290
|
record_ids: List of record IDs to delete
|
|
312
|
-
|
|
313
291
|
Returns:
|
|
314
292
|
Dictionary with operation result
|
|
315
293
|
"""
|
|
@@ -331,11 +309,9 @@ async def search_count(
|
|
|
331
309
|
) -> dict[str, Any]:
|
|
332
310
|
"""
|
|
333
311
|
Count records that match a search domain.
|
|
334
|
-
|
|
335
312
|
Args:
|
|
336
|
-
model_name: Name of the model
|
|
337
|
-
domain: Search domain as list of tuples
|
|
338
|
-
|
|
313
|
+
model_name: Name of the model e.g., 'res.partner'
|
|
314
|
+
domain: Search domain as list of tuples e.g., [['is_company', '=', True]]
|
|
339
315
|
Returns:
|
|
340
316
|
Dictionary with the count of matching records
|
|
341
317
|
"""
|
|
@@ -360,14 +336,12 @@ async def search_ids(
|
|
|
360
336
|
) -> dict[str, Any]:
|
|
361
337
|
"""
|
|
362
338
|
Search for record IDs that match a domain.
|
|
363
|
-
|
|
364
339
|
Args:
|
|
365
|
-
model_name: Name of the model
|
|
366
|
-
domain: Search domain as list of tuples
|
|
367
|
-
offset: Number of records to skip
|
|
368
|
-
limit: Maximum number of records to return
|
|
369
|
-
order: Sorting criteria
|
|
370
|
-
|
|
340
|
+
model_name: Name of the model e.g., 'res.partner'
|
|
341
|
+
domain: Search domain as list of tuples e.g., [['is_company', '=', True]]
|
|
342
|
+
offset: Number of records to skip (default: None)
|
|
343
|
+
limit: Maximum number of records to return (default: None)
|
|
344
|
+
order: Sorting criteria e.g., 'name ASC, id DESC' (default: None)
|
|
371
345
|
Returns:
|
|
372
346
|
Dictionary with list of matching record IDs
|
|
373
347
|
"""
|
|
@@ -393,13 +367,11 @@ async def call_method(
|
|
|
393
367
|
) -> dict[str, Any]:
|
|
394
368
|
"""
|
|
395
369
|
Call a custom method on an Odoo model.
|
|
396
|
-
|
|
397
370
|
Args:
|
|
398
|
-
model_name: Name of the model
|
|
371
|
+
model_name: Name of the model e.g., 'res.partner'
|
|
399
372
|
method_name: Name of the method to call
|
|
400
|
-
args: Positional arguments to pass to the method
|
|
401
|
-
kwargs: Keyword arguments to pass to the method
|
|
402
|
-
|
|
373
|
+
args: Positional arguments to pass to the method (default: None)
|
|
374
|
+
kwargs: Keyword arguments to pass to the method (default: None)
|
|
403
375
|
Returns:
|
|
404
376
|
Dictionary with method result
|
|
405
377
|
"""
|
|
@@ -419,9 +391,6 @@ async def call_method(
|
|
|
419
391
|
return Response(error=e.to_dict()).to_dict()
|
|
420
392
|
|
|
421
393
|
|
|
422
|
-
# Additional utility tools for better Odoo integration
|
|
423
|
-
|
|
424
|
-
|
|
425
394
|
async def search_and_update(
|
|
426
395
|
mcp: Any,
|
|
427
396
|
model_name: str,
|
|
@@ -430,12 +399,10 @@ async def search_and_update(
|
|
|
430
399
|
) -> dict[str, Any]:
|
|
431
400
|
"""
|
|
432
401
|
Search for records and update them in one operation.
|
|
433
|
-
|
|
434
402
|
Args:
|
|
435
|
-
model_name: Name of the model
|
|
403
|
+
model_name: Name of the model e.g., 'res.partner'
|
|
436
404
|
domain: Search domain to find records to update
|
|
437
405
|
values: Dictionary with field values to update
|
|
438
|
-
|
|
439
406
|
Returns:
|
|
440
407
|
Dictionary with operation results including affected record count
|
|
441
408
|
"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|