From 1b850913e77b43c98f1dcc2f9faf3af0956644c5 Mon Sep 17 00:00:00 2001 From: yuanzhipeng <2501363769@qq.com> Date: Mon, 9 Feb 2026 18:51:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(workflow):=20=E6=B7=BB=E5=8A=A0=20params?= =?UTF-8?q?=20=E5=8F=82=E6=95=B0=E6=94=AF=E6=8C=81=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=B7=A5=E5=85=B7=E8=B0=83=E7=94=A8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在输入 schema 中添加 params 字段,允许接收任何类型的额外参数 - 修改 handle_call_tool 函数,提取并合并 params 到 inputs - 支持字典类型 params 的自动合并和其他类型 params 的保留 - 更新版本号从 0.1.5 到 0.1.6 --- .../lzwcai_workflow_to_mcp/main.py | 26 +++++++++++++++++-- lzwcai_workflow_to_mcp/pyproject.toml | 2 +- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/lzwcai_workflow_to_mcp/lzwcai_workflow_to_mcp/main.py b/lzwcai_workflow_to_mcp/lzwcai_workflow_to_mcp/main.py index 5c2756a..9f13ce4 100644 --- a/lzwcai_workflow_to_mcp/lzwcai_workflow_to_mcp/main.py +++ b/lzwcai_workflow_to_mcp/lzwcai_workflow_to_mcp/main.py @@ -219,6 +219,13 @@ async def handle_list_tools() -> list[types.Tool]: logger.warning("sqlParams 和 inputJsonSchema 都不存在,使用空 schema") input_schema = {"type": "object", "properties": {}, "required": []} + # 添加 params 字段到 schema,可以接收任何类型 + if "properties" not in input_schema: + input_schema["properties"] = {} + input_schema["properties"]["params"] = { + "description": "额外的参数,可以是任何类型" + } + tools.append( types.Tool( name=name, @@ -234,7 +241,7 @@ async def handle_list_tools() -> list[types.Tool]: @server.call_tool() async def handle_call_tool( name: str, - arguments: dict | None + arguments: dict | None, ) -> list[types.TextContent | types.ImageContent | types.EmbeddedResource]: """调用工具""" logger.info(f"收到 CallTool 请求: name={name}, arguments={json.dumps(arguments, ensure_ascii=False) if arguments else 'None'}") @@ -256,10 +263,25 @@ async def handle_call_tool( workflow_id = tool_config.get("workflowId") or get_workflow_id() logger.info(f"使用工作流ID: {workflow_id}") + # 提取 params 字段并合并到 inputs + inputs = arguments or {} + params = inputs.pop("params", None) + + # 如果 params 存在,将其内容合并到 inputs + if params is not None: + if isinstance(params, dict): + # 如果 params 是字典,合并到 inputs + inputs.update(params) + logger.info(f"params 是字典类型,已合并到 inputs: {json.dumps(params, ensure_ascii=False)}") + else: + # 如果 params 不是字典,作为 params 字段保留 + inputs["params"] = params + logger.info(f"params 是 {type(params).__name__} 类型,保留为 params 字段") + # 构建请求数据 request_data = { "workflowId": workflow_id, - "inputs": arguments or {} + "inputs": inputs } logger.info(f"执行工作流请求数据: {json.dumps(request_data, ensure_ascii=False, indent=2)}") diff --git a/lzwcai_workflow_to_mcp/pyproject.toml b/lzwcai_workflow_to_mcp/pyproject.toml index d864806..887fb12 100644 --- a/lzwcai_workflow_to_mcp/pyproject.toml +++ b/lzwcai_workflow_to_mcp/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "lzwcai-workflow-to-mcp" -version = "0.1.5" +version = "0.1.6" description = "MCP server for executing business SQL queries with dynamic tool generation" readme = "README.md" requires-python = ">=3.10"