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.

Files changed (31) hide show
  1. {biszx_odoo_mcp-1.1.1/src/biszx_odoo_mcp.egg-info → biszx_odoo_mcp-1.1.2}/PKG-INFO +1 -1
  2. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/pyproject.toml +1 -1
  3. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/server/tools.py +25 -58
  4. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2/src/biszx_odoo_mcp.egg-info}/PKG-INFO +1 -1
  5. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/LICENSE +0 -0
  6. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/README.md +0 -0
  7. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/setup.cfg +0 -0
  8. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/__init__.py +0 -0
  9. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/__main__.py +0 -0
  10. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/exceptions.py +0 -0
  11. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/main.py +0 -0
  12. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/server/__init__.py +0 -0
  13. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/server/context.py +0 -0
  14. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/server/resources.py +0 -0
  15. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/server/response.py +0 -0
  16. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/tools/__init__.py +0 -0
  17. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/tools/config.py +0 -0
  18. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp/tools/odoo_client.py +0 -0
  19. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp.egg-info/SOURCES.txt +0 -0
  20. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp.egg-info/dependency_links.txt +0 -0
  21. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp.egg-info/entry_points.txt +0 -0
  22. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp.egg-info/requires.txt +0 -0
  23. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/src/biszx_odoo_mcp.egg-info/top_level.txt +0 -0
  24. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_config.py +0 -0
  25. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_context.py +0 -0
  26. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_exceptions.py +0 -0
  27. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_main.py +0 -0
  28. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_odoo_client.py +0 -0
  29. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_resources.py +0 -0
  30. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_response.py +0 -0
  31. {biszx_odoo_mcp-1.1.1 → biszx_odoo_mcp-1.1.2}/tests/test_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: biszx-odoo-mcp
3
- Version: 1.1.1
3
+ Version: 1.1.2
4
4
  Summary: MCP Server for Odoo Integration
5
5
  Author-email: Biszx <isares.br@gmail.com>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "biszx-odoo-mcp"
3
- version = "1.1.1"
3
+ version = "1.1.2"
4
4
  description = "MCP Server for Odoo Integration"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -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 (e.g., 'res.partner')
117
- domain: Search domain as list of tuples (e.g., [['is_company', '=', true]])
118
- fields: List of field names to return (None for all fields)
119
- limit: Maximum number of records to return
120
- offset: Number of records to skip
121
- order: Sorting criteria (e.g., 'name ASC, id DESC')
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 (e.g., 'res.partner')
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 (None for all fields)
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 (e.g., 'res.partner')
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 (e.g., 'res.partner')
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 (e.g., 'res.partner')
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 (e.g., 'res.partner')
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 (e.g., 'res.partner')
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 (e.g., 'res.partner')
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 (e.g., 'res.partner')
337
- domain: Search domain as list of tuples (e.g., [['is_company', '=', True]])
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 (e.g., 'res.partner')
366
- domain: Search domain as list of tuples (e.g., [['is_company', '=', True]])
367
- offset: Number of records to skip
368
- limit: Maximum number of records to return
369
- order: Sorting criteria (e.g., 'name ASC, id DESC')
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 (e.g., 'res.partner')
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 (e.g., 'res.partner')
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
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: biszx-odoo-mcp
3
- Version: 1.1.1
3
+ Version: 1.1.2
4
4
  Summary: MCP Server for Odoo Integration
5
5
  Author-email: Biszx <isares.br@gmail.com>
6
6
  License: MIT
File without changes
File without changes
File without changes