From e78a8007c7c4153b58a58a9c77c5f053da913341 Mon Sep 17 00:00:00 2001 From: aserrador Date: Wed, 18 Mar 2026 22:41:02 -0500 Subject: [PATCH] refactor: simplify identifiers parameter in create_customer and update Docker config --- Dockerfile | 3 ++- docker-compose.yaml | 7 +++++++ pyproject.toml | 2 +- src/tryton_mcp/server.py | 6 +++--- src/tryton_mcp/services/party.py | 13 +++++++++++-- 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index f6d9fa6..63b14c6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,9 +9,10 @@ RUN pip install --no-cache-dir uv COPY pyproject.toml uv.lock ./ COPY src/ ./src/ + RUN uv sync --frozen --no-dev RUN uv pip install --editable . EXPOSE 3001 -CMD ["uv", "run", "fastmcp", "run", "./src/tryton_mcp/server.py", "--transport", "http", "--host", "0.0.0.0", "--port", "3001"] +CMD ["uv", "run", "fastmcp", "run", "./src/tryton_mcp/server.py", "--reload"] diff --git a/docker-compose.yaml b/docker-compose.yaml index 7bdedbd..5ca6e17 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -5,7 +5,14 @@ services: dockerfile: Dockerfile ports: - "3001:3001" + volumes: + - ./src:/app/src env_file: - .env environment: - FASTMCP_HOST=0.0.0.0 + - FASTMCP_TRANSPORT=http + - FASTMCP_PORT=3001 + +volumes: + src: \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index cfc01d4..e738856 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,4 +29,4 @@ dev = [ ] [tool.taskipy.tasks] -start = "fastmcp run ./src/tryton_mcp/server.py --transport http --port 3001 --reload" +start = "fastmcp run src/tryton_mcp/server.py --transport 'http' --host 0.0.0.0 --port 3001 --reload" diff --git a/src/tryton_mcp/server.py b/src/tryton_mcp/server.py index 0103c80..26417ab 100644 --- a/src/tryton_mcp/server.py +++ b/src/tryton_mcp/server.py @@ -45,8 +45,8 @@ class FindCustomerInput(BaseModel): class CreateCustomerInput(BaseModel): name: str = Field(min_length=1, description="Customer name") - identifiers: List[tuple[str, List[Dict[str, Any]]]] = Field( - default_factory=list, description="List of identifier tuples" + identifiers: dict = Field( + default_factory=dict ) @@ -96,7 +96,7 @@ def find_customer_by_identifier(identifier: str) -> List[Dict]: @mcp.tool() def create_customer( - name: str, identifiers: List[tuple[str, List[Dict[str, Any]]]] + name: str, identifiers: dict ) -> List[int]: CreateCustomerInput(name=name, identifiers=identifiers) diff --git a/src/tryton_mcp/services/party.py b/src/tryton_mcp/services/party.py index cc310cb..ca6feaa 100644 --- a/src/tryton_mcp/services/party.py +++ b/src/tryton_mcp/services/party.py @@ -18,11 +18,20 @@ class PartyService(BaseService): ) def create( - self, name: str, identifiers: List[tuple[str, List[Dict[str, Any]]]] + self, name: str, identifiers: dict ) -> TrytonResponse: + + identifiers = [ + 'create', [ + { + "type": identifiers.get('type', 'mobile'), + "code": identifiers.get('code') + } + ]] + return self.call( "model.party.party.create", - [{"name": name, "identifiers": identifiers}, {}], + [[{"name": name, "identifiers": [identifiers]}], {}], ) def search_parties(