feat(core): 改进API响应处理支持纯文本JSON解析

当API返回content-type为text/plain但实际内容是JSON格式时,
现在会尝试解析为JSON对象而不是直接返回文本,
提高API响应的兼容性

fix(create_mcp): 移除硬编码的输出schema定义

移除了工具注册中硬编码的outputSchema定义,
让系统使用更灵活的配置方式

chore(release): 更新版本号至0.2.4
This commit is contained in:
2026-03-06 18:02:41 +08:00
parent 8703a61198
commit 992d97c0a4
3 changed files with 23 additions and 17 deletions

View File

@@ -940,10 +940,28 @@ class ApiClient:
"status_code": response.status_code, "status_code": response.status_code,
} }
else: else:
# 对于非JSON响应记录前100个字符 # 对于非JSON响应尝试解析为JSON某些API返回text/plain但内容是JSON
if not response.text:
return {
"status": "success",
"data": "",
"status_code": response.status_code,
}
response_preview = response.text[:100] + "..." if len(response.text) > 100 else response.text response_preview = response.text[:100] + "..." if len(response.text) > 100 else response.text
logger.info(f"文本响应预览: {response_preview}") logger.info(f"文本响应预览: {response_preview}")
# 尝试解析为JSON
text = response.text.strip()
if text and (text.startswith('{') or text.startswith('[')):
try:
json_response = json.loads(text)
logger.info("文本响应成功解析为JSON")
return json_response
except (json.JSONDecodeError, ValueError) as e:
logger.debug(f"文本响应JSON解析失败: {e}")
# 返回原始文本
return { return {
"status": "success", "status": "success",
"data": response.text, "data": response.text,

View File

@@ -395,24 +395,12 @@ class ApiToolPlugin(ToolPlugin):
tool_name = tool_config["interfaceName"] # 工具名称(拼音格式) tool_name = tool_config["interfaceName"] # 工具名称(拼音格式)
logger.debug(f"注册工具: {tool_name}") logger.debug(f"注册工具: {tool_name}")
# 定义输出 Schema先写死一个测试
output_schema = {
"type": "object",
"properties": {
"code": {"type": "integer", "description": "响应状态码0表示成功"},
"message": {"type": "string", "description": "响应消息"},
"data": {"type": "object", "description": "响应数据"}
},
"required": ["code", "message"]
}
# 创建MCP工具定义 # 创建MCP工具定义
tools.append( tools.append(
types.Tool( types.Tool(
name=tool_name, # 工具名称 name=tool_name,
description=tool_config["schema_description"], # 工具描述(包含参数说明) description=tool_config["schema_description"],
inputSchema=tool_config["schema"], # 输入参数的JSON Schema inputSchema=tool_config["schema"],
outputSchema=output_schema, # 输出参数的JSON Schema
) )
) )

View File

@@ -1,6 +1,6 @@
[project] [project]
name = "lzwcai-mcp-api-converter" name = "lzwcai-mcp-api-converter"
version = "0.2.1" version = "0.2.4"
description = "基于FastMCP框架的动态API工具服务器自动将企业业务API配置转换为MCP协议工具支持多种传输方式、企业认证和参数验证为AI助手提供标准化的业务接口访问能力。" description = "基于FastMCP框架的动态API工具服务器自动将企业业务API配置转换为MCP协议工具支持多种传输方式、企业认证和参数验证为AI助手提供标准化的业务接口访问能力。"
readme = "README.md" readme = "README.md"
requires-python = ">=3.10" requires-python = ">=3.10"