From ead9747e1b5769a1b0cd96b437f0470d912c06c3 Mon Sep 17 00:00:00 2001 From: YueGuobin Date: Wed, 17 Jun 2026 23:03:28 +0800 Subject: [PATCH] Fix appliance_install: add version parameter --- gns3server/api/routes/mcp/__init__.py | 2 ++ gns3server/api/routes/mcp/appliances.py | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gns3server/api/routes/mcp/__init__.py b/gns3server/api/routes/mcp/__init__.py index d45bf2751..07c3e060f 100644 --- a/gns3server/api/routes/mcp/__init__.py +++ b/gns3server/api/routes/mcp/__init__.py @@ -1284,6 +1284,7 @@ async def appliance_get( @mcp.tool() async def appliance_install( appliance_id: Annotated[str, Field(description="UUID of the appliance to install")], + version: Annotated[str | None, Field(description="Version to install (e.g. '2.7.0.356'). Required if the appliance has multiple versions. Use appliance_get to see available versions.")] = None, ) -> list[dict[str, Any]]: """Create a template from a GNS3 appliance definition. @@ -1294,6 +1295,7 @@ async def appliance_install( """ return await asyncio.to_thread(_run_handler_sync, install_appliance_handler, { "appliance_id": appliance_id, + "version": version, }) diff --git a/gns3server/api/routes/mcp/appliances.py b/gns3server/api/routes/mcp/appliances.py index a44cdb852..a2bc9dd0f 100644 --- a/gns3server/api/routes/mcp/appliances.py +++ b/gns3server/api/routes/mcp/appliances.py @@ -80,5 +80,10 @@ def install_appliance_handler(params: dict[str, Any], gns3_ctx: dict[str, Any]) if not appliance_id: return {"error": "appliance_id is required"} conn = _get_connector(gns3_ctx) - result = conn.http_call("post", f"{conn.base_url}/appliances/{appliance_id}/install").json() + url = f"{conn.base_url}/appliances/{appliance_id}/install" + request_params = {} + version = params.get("version") + if version: + request_params["version"] = version + result = conn.http_call("post", url, params=request_params).json() return {"message": f"Appliance {appliance_id} installation requested", "result": result}