Skip to content

Commit c8c33de

Browse files
葛锐葛锐
authored andcommitted
fix: restore missing MCP transport functions in tool_configuration_service
- Restore SSETransport and StreamableHttpTransport imports - Restore get_mcp_authorization_token_by_name_and_url import - Restore _create_mcp_transport function
1 parent 8447f08 commit c8c33de

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

backend/services/tool_configuration_service.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,18 @@
77

88
from pydantic_core import PydanticUndefined
99
from fastmcp import Client
10+
from fastmcp.client.transports import StreamableHttpTransport, SSETransport
1011
import jsonref
1112
from mcpadapt.smolagents_adapter import _sanitize_function_name
1213

1314
from consts.const import LOCAL_MCP_SERVER, DATA_PROCESS_SERVICE
1415
from consts.exceptions import MCPConnectionError, ToolExecutionException, NotFoundException
1516
from consts.model import ToolInstanceInfoRequest, ToolInfo, ToolSourceEnum, ToolValidateRequest
16-
from database.remote_mcp_db import get_mcp_records_by_tenant, get_mcp_server_by_name_and_tenant
17+
from database.remote_mcp_db import (
18+
get_mcp_records_by_tenant,
19+
get_mcp_server_by_name_and_tenant,
20+
get_mcp_authorization_token_by_name_and_url,
21+
)
1722
from database.tool_db import (
1823
create_or_update_tool_by_tool_info,
1924
query_all_tools,
@@ -31,6 +36,29 @@
3136
logger = logging.getLogger("tool_configuration_service")
3237

3338

39+
def _create_mcp_transport(url: str, authorization_token: Optional[str] = None):
40+
"""
41+
Create appropriate MCP transport based on URL ending.
42+
43+
Args:
44+
url: MCP server URL
45+
authorization_token: Optional authorization token
46+
47+
Returns:
48+
Transport instance (SSETransport or StreamableHttpTransport)
49+
"""
50+
url_stripped = url.strip()
51+
headers = {"Authorization": authorization_token} if authorization_token else {}
52+
53+
if url_stripped.endswith("/sse"):
54+
return SSETransport(url=url_stripped, headers=headers)
55+
elif url_stripped.endswith("/mcp"):
56+
return StreamableHttpTransport(url=url_stripped, headers=headers)
57+
else:
58+
# Default to StreamableHttpTransport for unrecognized formats
59+
return StreamableHttpTransport(url=url_stripped, headers=headers)
60+
61+
3462
def python_type_to_json_schema(annotation: Any) -> str:
3563
"""
3664
Convert Python type annotations to JSON Schema types

0 commit comments

Comments
 (0)